使用没有相应CSS规则的CLASS属性是不是很糟糕?

时间:2010-05-14 05:58:10

标签: jquery css standards identifier classname

例如,如果我想使用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?

7 个答案:

答案 0 :(得分:8)

这是完全可以接受的。随着客户端处理变得越来越普遍(通过jQuery,ExtJS,Prototype等),创建可以使用这些库提供的强大选择器支持的高效代码是有意义的。

答案 1 :(得分:5)

使用CSS类和 - 根据情况 - ID(唯一!!)非常好,通常是保持HTML代码有效的唯一解决方案,同时提供脚本使用的其他属性。

虽然使用非标准属性通常也可以正常工作,但它会阻止您的HTML代码进行验证,并可能在将来导致问题。

但是,在某些情况下,也可能存在可以使用的属性 - 例如链接上的rel,这些链接通常用于修改链接行为的脚本。

http://www.w3.org/TR/html401/struct/global.html#h-7.5.2还提到该课程是通用的:

  

另一个是class属性   手,分配一个或多个类名   一个元素;这个元素可以说   属于这些类。一类   名称可能由多个元素共享   实例。 class属性有   HTML中的几个角色:

     
      
  • 作为样式表选择器(当作者希望将样式信息分配给一组元素时)。
  •   
  • 供用户代理进行一般处理。
  •   

答案 2 :(得分:4)

  

class属性指定一个   元素的类名。

     

class属性主要用于   指向样式表中的类。   但是,它也可以用于   JavaScript(通过HTML DOM)来制作   使用a更改HTML元素   指定的类。

source

使用没有相应css规则的类属性并不是一种糟糕的形式......

使用class作为“数据持有者”比使用rel,title等任何其他属性更好......

答案 3 :(得分:3)

我不这么认为。

如果使用“正确”,“粉红色”等类,则不会将数据与演示文稿分开。

我使用类来定义元素中的内容。

<div class="product">

我可以将它与CSS和JS一起使用,但有时我只是喜欢上课,所以我可以轻松调试。

答案 4 :(得分:2)

我会说没关系。该属性被命名为class而不是cssstyleclass或类似的东西。使用类属性来定义元素是非常有意义的。

答案 5 :(得分:2)

实际上非常狡猾。你一开始并没有考虑它,但你可以用类层次结构做一些漂亮的切割器。

例如,Facebook使用User-Agent HTTP标头在body标签上设置浏览器特定的类。它不是一直使用,但它可以用于编写浏览器特定的CSS,它优于许多其他的替代品,因为它只是切割器使用CSS,你最终将浏览器特定的东西与一般CSS规则一起分组,促进你的地方CSS文件。当您需要在较长时间内维护CSS文件时,这很重要。

a { color: blue; }
.ie7 a { color: black; }

因为在使用Internet Explorer 7渲染时,CSS如何“级联”上面的锚定标记的CSS规则会更加具体。那将通过selector's specificity强制在IE7中将锚标记设置为黑色,而不是hackish和模糊的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应用特定的视觉样式,具体取决于此输入的状态。例如当水印活跃时,我可能不会是一个灰色的斜体字体。

还有更多这样的例子,我确实鼓励你尝试更多。

答案 6 :(得分:1)

我不认为这是一种不好的做法。如果你需要它们,你应该使用它们。这很有道理。

如果你不想,也许你有一个围绕所有元素的父元素,或者你可以找到他们共同的东西并将其转化为选择器。 $("div#somediv > div").hide()但是它会花费你更多的时间和思考,就好像你只是给他们上课一样。