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

tbo*_*one 25 css asp.net

有什么区别:

<asp:GridView CssClass="someclass"
Run Code Online (Sandbox Code Playgroud)

<table class="someclass">
Run Code Online (Sandbox Code Playgroud)

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

.someclass {font-family:"arial";  
        background-color:#FFFFFF;  
        width: 100%;  
        font-size: small;}  
.someclass th {background: #7AC142;  
             padding: 5px;  
            font-size:small;}
Run Code Online (Sandbox Code Playgroud)

但是使用类,似乎这种语法不起作用,从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;}
Run Code Online (Sandbox Code Playgroud)

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

UPDATE

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

wom*_*omp 20

ASP.Net CssClass是围绕css"class"说明符的抽象包装器.

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


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

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


xyp*_*pho 8

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

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

myControl.CssClass += " foo";
Run Code Online (Sandbox Code Playgroud)

而您的控件设置如下:

    <asp:TextBox class="Text" ID="myControl" runat="server" />
Run Code Online (Sandbox Code Playgroud)

(注class属性:class="Text")

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

<input class=" foo" name="ctl00$MainContent$myControl" type="text" id="MainContent_myControl" >
Run Code Online (Sandbox Code Playgroud)

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

如果你另外设置CssClass:

<asp:TextBox CssClass="Text" ID="myControl" runat="server" />
Run Code Online (Sandbox Code Playgroud)

你将得到它(如预期)渲染它:

<input class="Text foo" name="ctl00$MainContent$myControl" type="text" id="MainContent_myControl">
Run Code Online (Sandbox Code Playgroud)

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


Cha*_*lie 7

CssClassASP.NET服务器控件上使用该属性时,它将class在HTML中呈现出来.

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

<asp:label runat="server" CssClass="myStyle" AssociatedControlID="txtTitle" />
Run Code Online (Sandbox Code Playgroud)

会呈现给:

<label class="myStyle" for="txtTitle" />
Run Code Online (Sandbox Code Playgroud)

  • 啊,AssociatedControlID对我来说是新闻,谢谢! (2认同)