2011-09-20 238 views
3

我有一个CSS类:CSS-为什么这不起作用?

.ImageBorder 
{ 
border-style:solid; border-color:Black; 
} 

我然后设置CSS类到一个asp.net图片:

<asp:Image ID="Image3" runat="server" Height="150px" 
       ImageUrl="~/Photos/defaultA.jpg" CssClass="ImageBorder" /> 

但它不工作。它会工作,如果我把图像在div标签,然后设置div CSS类,但我宁愿不这样做?是什么赋予了?

+0

你是否试图做一个查看源,并实际上看看生成的标记?它有一类ImageBorder吗? –

回答

5

在其他的答案指出,应指定边框宽度。但是,您可能会遇到额外的“陷阱”:asp图像可能具有“边框宽度:0”内联样式。在这种情况下,您的规则将需要的重要声明重写它:!

.ImageBorder 
{ 
border: 1px solid black !important; 
} 

重要声明忽略了CSS如下优先级的一般规则。通常,内联样式优先于嵌入式样式表或外部样式表,它们优先于用户代理的样式。一个重要的财产将优先于所有非重要财产,无论它在哪里被宣布。

然而,使用!重要可能会导致一些挫败感。假设你想有一个图像的所有相同的品质为您的ImageBorder图像,但与100的宽度可以编写

<img src="superBorderedImage.png" class="ImageBorder" style="border-width:100"/> 

...但是,这是行不通的。您非常重视指定ImageBorder图像的宽度为1,因此您的“超级边界图像”不会有其特殊的粗边框。出于这个原因,只有当你确定你以后不需要重写它时,你才应该使用!重要的。

+0

这似乎解决了这个问题,虽然我从未听说过重要的标签。我会做额外的研究。谢谢 – broke

6

先给边框宽度:

border: 1px solid black; 
+0

不需要http://jsfiddle.net/ZDCH8/ –

3

正如大卫指出,你不指定任何宽度你的边界,这意味着它有没有宽度,因此,你不能看到它。

您可以使用速记:

.ImageBorder 
{ 
    border: 1px solid black; 
} 

或手写方式:

.ImageBorder 
{ 
    border-style: solid; 
    border-color: Black; 
    border-width: 1px; 
} 
+0

这可以在div内工作,但如果设置了图像CSS属性,它仍不会显示。 – broke

+0

correct ..asp图像的默认值是border-width:0px,这就是为什么它没有和div .. –

+0

不是真正的http://jsfiddle.net/ZDCH8/ –