12

たとえば、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?
4

7 に答える 7

9

これはまったく問題ありません。クライアント側の処理が (jQuery、ExtJS、Prototype などを介して) より一般的になってきているため、これらのライブラリが提供する強力なセレクター サポートを使用できる効率的なコードを作成することは理にかなっています。

于 2010-05-14T06:03:40.257 に答える
6

CSS クラスと、場合によっては ID (一意!!) を使用することはまったく問題なく、多くの場合、スクリプトで使用される追加の属性を与えながら、HTML コードを有効に保つ唯一のソリューションです。

非標準の属性を使用しても問題なく動作することがよくありますが、html コードの検証が妨げられ、将来的に問題が発生する可能性があります。

relただし、場合によっては、リンクの動作を変更するスクリプトによく使用されるリンクなど、使用できる属性がある場合もあります。

http://www.w3.org/TR/html401/struct/global.html#h-7.5.2は、クラスが汎用であることにも言及しています。

一方、class 属性は、1 つ以上のクラス名を要素に割り当てます。要素はこれらのクラスに属していると言えます。クラス名は、複数の要素インスタンスで共有される場合があります。class 属性には、HTML でいくつかの役割があります。

  • スタイル シート セレクターとして (作成者が一連の要素にスタイル情報を割り当てたい場合)。
  • ユーザーエージェントによる汎用処理用。
于 2010-05-14T06:07:23.573 に答える
4

私はそうは思わない。

「right」「pink」などのクラスを使用する場合、データをプレゼンテーションから分離していません。

クラスを使用して、要素内にあるものを定義します。

<div class="product">

CSS と JS で使用できますが、簡単にデバッグできるようにクラスが必要な場合もあります。

于 2010-05-14T06:05:53.967 に答える
4

class 属性は、要素のクラス名を指定します。

class 属性は、主にスタイル シート内のクラスを指すために使用されます。 ただし、指定されたクラスで HTML 要素を変更するために、(HTML DOM を介して) JavaScript で使用することもできます。

ソース

対応するcssルールなしでクラス属性を使用するのは悪いことではありません...

クラスを「データホルダー」として使用する方が、rel、title などの他の属性よりも優れています...

于 2010-05-14T06:06:42.047 に答える
3

それは実際には非常に狡猾です。最初はそれについては考えていませんが、クラス階層を使用してかなりクリーバーなことを行うことができます。

たとえば、FacebookはUser-Agent HTTPヘッダーを使用して、bodyタグにブラウザー固有のクラスを設定します。常に使用されるわけではありませんが、ブラウザー固有のCSSを作成するために使用できます。これは、CSSの単なるクリーバー使用であり、ブラウザー固有のものを一般的なCSSルールと一緒にグループ化して、ローカル性を促進するため、他の多くの代替案よりも優れています。 CSSファイル。これは、CSSファイルを長期間維持する必要がある場合に重要です。

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

アンカータグの上記のCSSルールをCSSがどのように「カスケード」するかは、Internet Explorer 7でレンダリングすると、より具体的になります。これにより、セレクターの特殊性により、ハックやあいまいなCSSトリックなしで、IE7でアンカータグが黒くなります。

他の人が述べているように、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スニペットは問題なく機能しますが、ここでさらに微妙なのは、2つのことがあるということです。ロジックとスタイリングをワンショットで。ここでフラグとして使用されている透かしは、この入力の状​​態に応じて、CSSを介して特定の視覚スタイルを適用するためにも使用できるためです。たとえば、ウォーターマークがアクティブな場合、灰色がかったイタリックフォントを使用したくない場合があります。

このような例は他にもたくさんありますが、もっと実験してみてください。

于 2010-05-14T06:15:02.117 に答える
3

それは大丈夫だと思います。属性の名前は class であり、cssstyleclass などではありません。クラス属性と共通する要素を定義することは完全に理にかなっています。

于 2010-05-14T06:05:04.500 に答える
2

私はそれが悪い習慣だとは思わない。それらが必要な場合は、それらを使用する必要があります。それは完全に理にかなっています。

したくない場合は、すべての要素を囲む親要素があるか、共通のものを見つけてそれをセレクターに変換することができます。$("div#somediv > div").hide()しかし、それはあなたが彼らにクラスを与えるかのように、より多くの時間と思考を必要とします.

于 2010-05-14T06:05:08.533 に答える