例如,如果我想使用 jQuery 选择具有特定类的一些元素,并且仅出于这个原因,是否总是期望这些类应该在 css 中定义?
<div class="xyz">
something
</div>
<div class="xyz">
something else
</div>
//with example jQuery
$(".xyz").hide();
//is it wrong no element 'xyz' is defined in css?
例如,如果我想使用 jQuery 选择具有特定类的一些元素,并且仅出于这个原因,是否总是期望这些类应该在 css 中定义?
<div class="xyz">
something
</div>
<div class="xyz">
something else
</div>
//with example jQuery
$(".xyz").hide();
//is it wrong no element 'xyz' is defined in css?
这是完全可以接受的。随着客户端处理变得越来越普遍(通过 jQuery、ExtJS、Prototype 等),创建可以使用这些库提供的强大选择器支持的高效代码是有意义的。
使用 CSS 类和 - 根据具体情况 - ID(唯一!!)非常好,并且通常是保持 HTML 代码有效同时提供脚本使用的附加属性的唯一解决方案。
虽然使用非标准属性通常也可以正常工作,但它会阻止您的 html 代码验证并可能在将来导致问题。
但是,在某些情况下,也可能存在可以使用的属性——例如rel
链接上的链接,该链接通常用于修改链接行为的脚本。
http://www.w3.org/TR/html401/struct/global.html#h-7.5.2还提到该类是通用的:
另一方面,class 属性将一个或多个类名分配给一个元素;该元素可以说属于这些类。一个类名可以由多个元素实例共享。class 属性在 HTML 中有几个角色:
- 作为样式表选择器(当作者希望将样式信息分配给一组元素时)。
- 用于用户代理的通用处理。
我不这么认为。
如果您使用“right”“pink”等类,则不会将数据与演示文稿分开。
我使用类来定义元素内部的内容。
<div class="product">
我可以将它与 CSS 和 JS 一起使用,但有时我只是喜欢有类,这样我就可以轻松调试。
class 属性指定元素的类名。
class 属性主要用于指向样式表中的类。 但是,JavaScript 也可以使用它(通过 HTML DOM)来更改具有指定类的 HTML 元素。
使用没有相应 css 规则的类属性并不是一种糟糕的形式......
将类用作“数据持有者”比使用任何其他属性(如 rel、title 等)更好...
我会说没关系。该属性被命名为 class 而不是 cssstyleclass 或类似的东西。用与类属性相同的东西来定义元素是非常有意义的。
它实际上非常狡猾。一开始你不会考虑它,但你可以用类层次结构做一些非常巧妙的事情。
例如,Facebook 使用 User-Agent HTTP 标头在 body 标签上设置浏览器特定的类。它并不是一直都在使用,但它可以用来编写特定于浏览器的 CSS,并且它优于许多其他替代方案,因为它只是对 CSS 的切割器使用,你最终将浏览器特定的东西与一般的 CSS 规则组合在一起,从而在你的CSS 文件。当您需要长期维护 CSS 文件时,这一点很重要。
a { color: blue; }
.ie7 a { color: black; }
因为 CSS 如何“级联”上述用于锚标记的 CSS 规则在使用 Internet Explorer 7 呈现时将更加具体。这将通过选择器的特殊性强制锚标记在 IE7 中为黑色,而没有骇人听闻和晦涩的 CSS 技巧。
正如其他人所提到的,它也可以通过 JavaScript 使用。我发现使用 CSS 类作为布尔标志非常有用。例如,我可以用它来创建一个非常简单的水印控件。
<input type="text" value="watermark" class="watermark" />
$('input').focus(function(e) {
var target = $(this);
if (target.hasClass('watermark')) {
target.val('');
target.removeClass('watermark');
}
});
那个 jQuery 片段可以正常工作,但这里更微妙的是我现在有两件事。逻辑和样式合二为一。因为这里用作标志的水印也可用于通过 CSS 应用特定的视觉样式,具体取决于此输入的状态。例如,当水印处于活动状态时,我可能不需要灰色斜体字体。
这样的例子还有很多,我鼓励你做更多的实验。
我不认为这是一个不好的做法。如果你需要它们,你应该使用它们。这在音调上是有道理的。
如果您不想这样做,也许您有一个围绕所有元素的父元素,或者您可以找到它们共同的其他东西并将其转换为选择器。$("div#somediv > div").hide()
但这会花费你更多的时间和思考,就好像你只是给他们上课一样。