ASP.Net CSS + CSS语法问题中Class与CSSClass的区别

时间:2009-07-29 21:38:45

标签: asp.net css

有什么区别:

<asp:GridView CssClass="someclass"

<table class="someclass">

它与如何定义CSS有何关系? 例如,使用CssClass,我可以(我认为)像这样编写CSS:

.someclass {font-family:"arial";  
        background-color:#FFFFFF;  
        width: 100%;  
        font-size: small;}  
.someclass th {background: #7AC142;  
             padding: 5px;  
            font-size:small;}

但是使用类,似乎这种语法不起作用,从http://www.w3.org/TR/css3-selectors/#class-html来看,我必须像这样写上面的内容:

.someclass {font-family:"arial";  
        background-color:#FFFFFF;  
        width: 100%;  
        font-size: small;}  
th.someclass {background: #7AC142;  
             padding: 5px;  
            font-size:small;}

有人可以说明哪种方法是正确的,或者它们是否正确,但是ASP.Net中的类和CssClass之间有区别吗?

更新

好吧,看起来它们是一样的......所以,上面的语法在使用class或cssclass时都是正确的,因为它们似乎不是。

6 个答案:

答案 0 :(得分:18)

ASP.Net CssClass是一个围绕css“class”说明符的抽象包装器。

基本上,对于大多数意图和目的,它们是相同的。当您将CssClass属性设置为某个字符串(如“someclass”)时,WebControl将呈现的html将为class = "someclass"


编辑:您编写的CSS选择器都是“正确的”,但它们做了两件不同的事情。 “.someclass th”匹配具有“someclass”类的元素的任何后代元素。第二个匹配具有“someclass”类的第th个元素。

希望很清楚。无论你为元素指定类的方式(使用ASP.Net的CSSClass,或只是设置类),你的CSS选择器都会做同样的事情。它们与ASP.Net没有任何关系。

答案 1 :(得分:6)

在ASP.NET服务器控件上使用CssClass属性时,它将在HTML中呈现为class

例如,如果我在标记中使用标签:

<asp:label runat="server" CssClass="myStyle" AssociatedControlID="txtTitle" />

将渲染为:

<label class="myStyle" for="txtTitle" />

答案 2 :(得分:6)

实际上,类和CssClass之间存在差异:后面的代码不会看到类,但CssClass会看到。

因此,如果向后面的代码中的控件添加新类,例如:

myControl.CssClass += " foo";

,而您的控件设置如下:

    <asp:TextBox class="Text" ID="myControl" runat="server" />

(注意类属性:class="Text"

在浏览器中检查渲染元素时,您将看到它将呈现如下:

<input class=" foo" name="ctl00$MainContent$myControl" type="text" id="MainContent_myControl" >

(请注意该类是如何被覆盖的:class= " foo"。)

另一方面,如果设置CssClass:

<asp:TextBox CssClass="Text" ID="myControl" runat="server" />

你会得到它(正如预期的那样):

<input class="Text foo" name="ctl00$MainContent$myControl" type="text" id="MainContent_myControl">

(注意班级现在已按预期设置了两个类!class="Text foo"

答案 3 :(得分:4)

除了CssClass是Control的属性之外,Asp.Net中的CssClass和类之间没有区别,而class是html中指定的属性。 CssClass在Html中呈现为class属性。

答案 4 :(得分:2)

另请注意,CssClass =“someclass anotherclass”也适用,因为字符串是复制的。

答案 5 :(得分:0)

  

所以,以上语法都是   使用class或cssclass时更正,   因为他们似乎不是。

当你说他们“似乎”不正确时,我不确定你的意思?即使在两种情况下都使用<table class='someClass'>,它们的渲染方式也不同吗?

恕我直言,就“阶级”属性而言,它们都是正确的。在第二种情况下,您是否尝试.someClass > th而不是.someClass th?这可能会解决问题。