html - 我可以使用不存在的 CSS 类吗?

标签 html css w3c-validation web-standards

我有一个表格,我通过一个不存在的 CSS 类通过 jQuery 显示/隐藏一个完整的列:

<table>
   <thead>
      <tr>
         <th></th>
         <th class="target"></th>
         <th></th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td></td>
         <td class="target"></td>
         <td></td>
      </tr>
      <tr>
         <td></td>
         <td class="target"></td>
         <td></td>
      </tr>
   </tbody>
</table>

有了这个 DOM,我可以通过 jQuery 在一行中做到这一点:$('.target').css('display','none');

这很好用,但是使用未定义的 CSS 类是否有效?我应该为它创建一个空类吗?

<style>.target{}</style>

是否有任何副作用或有更好的方法来做到这一点?

最佳答案

“CSS 类”用词不当; class 是您分配给 HTML 元素的属性(或就脚本而言的属性)。换句话说,您在 HTML 中声明类,而不是 CSS,因此在您的情况下,“目标”类 确实实际上存在于这些特定元素上,并且您的标记完全有效。

这并不一定意味着您需要在 HTML 中声明一个类,然后才能在 CSS 中使用它。见 ruak 的评论。选择器是否有效depends entirely on the selector syntax ,并且 CSS 有自己的一组 rules for handling parsing errors ,这些都与标记无关。本质上,这意味着 HTML 和 CSS 在有效性方面是完全独立的。1

一旦你理解了这一点,你就会明白在你的样式表中不定义 .target 规则没有任何副作用。2 当你为你的元素分配类时,您可以通过这些类在样式表或脚本或两者中引用这些元素。两者都不依赖于另一个。相反,它们都引用标记(或者更准确地说,它的 DOM 表示)。即使您使用 JavaScript 来应用样式,这一原则也适用,就像您在 jQuery 单行器中所做的那样。

当您使用类选择器编写 CSS 规则时,您所说的只是“我想将样式应用于属于此类的元素”。类似地,当您编写脚本以通过某个类名检索元素时,您是在说“我想对属于该类的元素做一些事情”。是否有 元素属于所讨论的类完全是一个单独的问题。


1 这也是为什么a CSS ID selector matches all elements with the given ID regardless ID 是只出现一次,还是出现多次(导致 HTML 文档不一致)。

2 我所知道的唯一需要像这样的空 CSS 规则的情况是某些浏览器由于错误而拒绝正确应用某些其他规则;创建空规则将导致由于某种原因应用这些其他规则。见 this answer有关此类错误的示例。然而,这是在 CSS 方面,因此应该与标记无关。

关于html - 我可以使用不存在的 CSS 类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18701670/

相关文章:

html - 如何安装 Bootstrap

javascript - 显示适用于移动网络的 Facebook Audience Network 原生广告

html - 响应缩放部分不使用 bootstrap jumbotron 进行缩放

css - 跨度放置 - 使用 Float(仅在某些浏览器中)

html - swf叠加问题

php - 在 simplexml (php) 中创建 XML

javascript - Chatango 嵌入代码的 W3C 验证器错误

javascript - css 属性下的自定义值 - CSS

php - 还有其他方法可以在远程服务器上包含一个 php 文件吗?除了 <?php include(); ?>

css - 如何验证 CSS 中的供应商前缀,如 -webkit- 和 -moz-?