- 締切済み
CSSについて質問です (IDセレクタ)
CSS初心者です。困っております。 <dl id="info"> <dt>文章1</dt> <dd> <p>文章2</p> </dd> <dt>文章3</dt> <dd> <p>文章4</p> </dd> </dl> 上記のCSSで文章1と3の色を変えたい場合、 下記はどれが正しいのでしょうか? このIDセレクタがどうも、いまいちよくわかりません。 なぜ、#の前に置いたり置かなかったりするのでしょうか? dl#infoData dt{ color:#663300; } #infoData dt{ color:#663300; } わかる方よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- ORUKA1951
- ベストアンサー率45% (5062/11036)
≫カスケードにおいて差が出る場合とありますが、どういう事なんでしょうか? この例で言うと、 1) dl#infoData dt というセレクタの詳細度は、100×1 + 1×2 = 102 2) #infoData dt だと、100×1 + 1=101 になります。 この場合、 dl#infoData dt というセレクタが、これより前にあると、 (1)と同じ詳細度ですから、後出の(1)で上書きされますが、(2)の宣言では上書きできないということ。 決して他のページでとかではなく。詳細度が関わるからです。 カスケードとはこの継承の仕組みが、ある意味、最も重要なのでプロパティを覚えるより先に学んでおくべきかと・・。 なお、 <dl id="info"> <dt>文章1</dt> <dd> <p>文章2</p> </dd> <dt>文章3</dt> <dd> <p>文章4</p> </dd> </dl> にて、文章3の色を変えたいときは、 dl%infoData > dt{ 色1} ですべてのdtの色が変わる。 ついで、 dl#infoData > dt + dt{ 色2}で、文章2以降が色2に dl#infoData > dt + dt + dt{色3}で、文章3以降が色3に dl#infoData < dt + dt + dt + dt{色4}で文章4が色4に ・・・詳細度は、上から 102,103,104,105になります。ですから記述順は関係ないということです。 CSSを勉強するなら、 1) 参照方法 2) 基本構造 セレクタ{プロパティ} 3) カスケード 重要度/出所/詳細度 4) プロパティ としないと効率が悪いです。(3)を抜かすと、指定がうまく行かないと悩むことになります。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
質問の意味が分からない部分があるので補足してください。 ≫上記のCSSで文章1と3の色を変えたい場合、 は、「上記のCSSで文章1と【、文章】3の色を変えたい場合、」という質問ですか? 隣接セレクタを使用します。 ≫dl#infoData dt{ と #infoData dt{ ★タイプ セレクタ + 一意セレクタ ★一意セレクタ の差ですから、そのページだけに関しては、普通は差が出ませんが、カスケードに置いて差が出る場合があります。 CSS2では、前者が詳細度2になりますから、より優先されます。詳細度を考慮してCSSを書きますから、他の設定で上書きされることを避けるために、あるいより詳細度の高いもので上書きされるかを考慮して、いずれの書き方をするかを決めてください。 Q:質問が二つあります。 整理して補足してください。
補足
ご回答ありがとうございます。丁寧にありがとうございます。 「上記のCSSで文章1と【、文章】3の色を変えたい場合、」というのは、例えばの話です。知りたいのは、なぜ#の前に付けたりしないといけないのかが、知りたっかったのです。カスケードにおいて差が出る場合とありますが、どういう事なんでしょうか?あと、「常にタイプ セレクタ + 一意セレクタ」にして表示してもいいような気もしたのですが、どうなんでしょうか?質問ばかりですいません。
#の前に置くのは複数のページに同じcssを指定するときに便利だからです。 例えば、2つのページの#infoDataのマークアップした要素がそれぞれ違い、デザインをそれぞれ別に与えたいとすると dl#infoData dt { color:#663300; } ul#infoData dt { color:#003366; } とするわけです。 idの持つ意味が重複するが、別の要素なので別のデザインで使いたい、だけどcssは共通にしたいというニーズに応えるためのテクニックです。
お礼
とても分かりやすいです。そういう事っだったんですね。 ありがとうございました。
お礼
そういう事っだたんですね。ありがとうございます。とても理解できました。