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 时正确, 因为他们似乎不是。

当您说它们“似乎”不正确时,我不确定您的意思是什么?即使在这两种情况下都使用&lt;table class='someClass'&gt;,它们的呈现方式是否不同?

恕我直言,就“类”属性而言,它们都是正确的。在第二种情况下,您是否尝试过.someClass &gt; 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之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET - 脚本和 css 压缩

在 asp.net 中包含 .css 文件

无法在 ASP.NET 中呈现 css

如何在 laravel 刀片语法按钮中添加内联 css?

母版页中的 ASP.NET CSS 文件

ASP.NET 页面未加载 CSS 样式