ASP.Net CSS + CSS语法问题中Class与CSSClass之间的区别
Posted
技术标签:
【中文标题】ASP.Net CSS + CSS语法问题中Class与CSSClass之间的区别【英文标题】:Difference between Class vs CSSClass in ASP.Net CSS + CSS syntax question 【发布时间】:2010-11-15 06:01:11 【问题描述】:有什么区别:
<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 中的 class 和 CssClass 之间存在区别?
更新
好吧,看起来它们是一样的......所以,上面的语法在使用 class 或 cssclass 时是否都正确,因为它们似乎不正确。
【问题讨论】:
【参考方案1】:ASP.Net CssClass 是 css“类”说明符的抽象包装器。
基本上,对于大多数意图和目的来说,它们是同一回事。当您将CssClass
属性设置为“someclass”之类的字符串时,WebControl 将呈现的 html 将是class = "someclass"
。
编辑:您编写的 CSS 选择器都是“正确的”,但它们做了两件不同的事情。 ".someclass th" 匹配具有 "someclass" 类的元素的任何第 descendant 元素。第二个匹配具有“someclass”类的元素本身。
希望这很清楚。无论您以何种方式为元素指定类(使用 ASP.Net 的 CSSClass,或者只是设置类),您的 CSS 选择器都会做同样的事情。它们与 ASP.Net 没有任何关系。
【讨论】:
啊,好的.....所以,如果我将 TABLE 的类设置为“someclass”,然后我说 .someclass TABLE whatever,从技术上讲,该表是 not 在这种情况下是后代,因此它会被忽略吗? (而如果我嵌入了另一个表格,它会获取设置?【参考方案2】:CssClass 和 Asp.Net 中的类没有区别,除了 CssClass 是 Control 的属性,class 是 html 中指定的属性。 CssClass 在 Html 中呈现为类属性。
【讨论】:
【参考方案3】:当您在 ASP.NET 服务器控件上使用 CssClass
属性时,它将在 HTML 中呈现为 class
。
例如,如果我要在标记中使用标签:
<asp:label runat="server" CssClass="myStyle" AssociatedControlID="txtTitle" />
将呈现给:
<label class="myStyle" for="txtTitle" />
【讨论】:
为什么不叫它只是htmlClass,看起来更有逻辑??【参考方案4】:所以,上面的语法都是 使用 class 或 cssclass 时正确, 因为他们似乎不是。
当您说它们“似乎”不正确时,我不确定您的意思是什么?即使在这两种情况下都使用<table class='someClass'>
,它们的呈现方式是否不同?
恕我直言,就“类”属性而言,它们都是正确的。在第二种情况下,您是否尝试过.someClass > th
而不是.someClass th
?这可能会解决问题。
【讨论】:
第一个示例似乎不是有效的语法(无法正确呈现),我确实检查了拼写。【参考方案5】:还要注意 CssClass="someclass anotherclass" 也可以作为字符串复制。
【讨论】:
【参考方案6】:其实class和CssClass是有区别的:后面的代码看不到class,但是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"
)
【讨论】:
最好的解释,你只是抹黑了其他说没有区别的人。 我刚遇到这个问题,这是正确的。我的 HTML“类”被代码隐藏的“cssclass”覆盖。您的答案应标记为正确,以免误导他人以上是关于ASP.Net CSS + CSS语法问题中Class与CSSClass之间的区别的主要内容,如果未能解决你的问题,请参考以下文章