<div class="t1">
<div class="t2">
aaa
</div>
</div>
.t2 {color:orange;}
.t1 {color:green;}
上記の様なプログラムの場合は、「aaa」はオレンジ色になります。
<div class="t1">
<div class="t2">
<a href="#">aaa</a>
</div>
</div>
.t2 a{color:orange;}
.t1 a{color:green;}
上記の様に、<a>タグでリンクをつけた場合は、「aaa」は緑色になります。
リンクの無い文字列の場合は、内側のclassが優先される。
リンクが有る文字列の場合は、CSSで下に記述した方が優先される。
この様な解釈で良いですか?
http://creativememomemo.com/css_a_link_color/
上記のサイトの内容は大体理解しています。
しかし、上記のサイトの結論では、内側のclassが優先になる様に思います。
私のどこに勘違いがあるのでしょうか?
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
根本的な部分で、違います。
スタイルシートが指定するのは、あくまでその要素です。
HTMLとは、それを構成する要素に分解して、その要素が文書を構成するどのような要素であるかをタグでマークアップする言語でしたよね。
<div class="t1">
<div class="t2">
aaa
</div>
</div>
は、HTMLの文書構造は
DIV t1
|--DIV t2
|-- #text aaa
ですね。firefox付属のDOMinspectroで見ると表示されます。
CSS--カスケーディングスタイルシートのカスケーディングを正しく理解してください。
そのサイトの説明は、不正確です。というか酷すぎる。
そんな難しいややこしいものではありません。
とてもわかり易くできています。
(ルール1)
・プロパティには継承されるものとされないものがある。
--常識的範囲ですが、木構造の親の指定が継承されるものとされないものがある。
colorプロパティは継承されますが、border関連プロパティは継承されません。
継承されないプロパティでも、値にinheritと記述すれば継承されます。
(ルール2)
・@imprtantは優先されます。
ユーザー指定の最重要宣言はもっとも優先されます。
著者指定の宣言はユーザー指定の宣言よりも優先されます。
ブラウザが持つ宣言は最下位です。(インターネットオプションでの指定とかも)
ユーザー指定の最重要宣言>著者の最重要宣言>著者の宣言>ユーザーの宣言>ブラウザの宣言
(ルール3)
・詳細度を計算します。
a=1・・・・スタイル属性での指定
b=1・・・・一意セレクタでの指定
c=1・・・・属性セレクタ/クラスセレクタ/擬似クラスの指定
d=1・・・・要素セレクタ/擬似要素セレクタの指定
0・・・・・HTMLの属性での指定、全称セレクタでの指定
この4桁の数値(桁上がりはしない=基数が大きい)で比較します。
(ルール4)
・同じ詳細度だと、後から出現するものが優先されます。
以上です。とても単純で、常識的です。
<div class="nav">
<ul>
<li><a href="./index.html">Top</a></li>
<li><a href="bbb">bbb</a></li>
<li><a href="ccc">ccc</a></li>
</ul>
</div>
に対して
・・・class名は文書構造を補完するものをつけることになっています。
→『DIV要素とSPAN要素は、id属性及び class属性と併用することで、文書に構造を付加するための一般機構を提供する。 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )』と明記してある。
→具体的にはHTML5の「新しい要素 ( http://standards.mitsue.co.jp/resources/w3c/TR/h … )」名が参考になるでしょう。
スタイルシートを実際に記述すると
a:link{}
a:visited{}
a:focus,a:hover{}
a:active{}
の順番で書かなければなりません。いずれも擬似クラス(リンクの擬似クラスと動的な擬似クラス)ですから詳細度は同じ(0,0,1,1=11)ですから、後出のもので上書きされますから。(ルール4)
次に、ナビゲーション内だけのリンクの色を変えたければ、
div.nav ul li a:link{}
div.nav ul li a:visited{}
div.nav ul li a:focus,a:hover{}
div.nav ul li a:active{}
これらはしいずれも詳細度が(0,0,2,4=24)ですから、出現順番に関わらず、上の指定を上書きします。
ここで2番目以降だけ、指定を変えたければ
div.nav ul li+li a:link{}
div.nav ul li+li a:visited{}
div.nav ul li+li a:focus,a:hover{}
div.nav ul li+li a:active{}
詳細度は(0,0,2,5=25)になりました。
div.nav ul li a[href="bbb"]:link{}
とすれば、要素セレクタが一つ増えるので詳細度は(0,0,3,4=34)ですから・・
★それぞれのプロパティが継承されるか否かは、仕様書のプロパティ索引からリンクしていけばわかります。
★セレクタの詳細度の値は、
6.4.3 Calculating a selector's specificity ( http://www.w3.org/TR/CSS2/cascade.html#specificity )
を見てください。一度見れば覚えられるでしょう。
(注意)この詳細度の部分は現行のCSS2.1では変更されています。上記リンクはCSS2.1のものですが、邦訳を知りませんので原文へのリンクを上げておきました。
なお、CSS2以降は、
.t2 a{color:orange;}
.t1 a{color:green;}
のような書き方は、
*.t2 a{color:orange;}
*.t1 a{color:green;}
とみなすことになっています。全称セレクタは詳細度が0です。(CSS1との整合性のため)
基本は
div.t2 a{color:orange;}
div.t1 a{color:green;}
と書くようにしましょう。
あやふやなサイトを見るよりは
5. セレクタ ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )
6. 値の割り当て、カスケード処理、継承 ( http://www.swlab.it.okayama-u.ac.jp/man/rec-css2 … )
など仕様書にまず目を通しましょう。(これはCSS2のものですが、詳細度について変更以外は大きな変更はないので参考になるでしょう。)
ついでにHTML4.01の仕様書も一通り目を通しておくと良いでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
個別にリンクの色を変える方法
-
idの中のid指定
-
dreamweaverのコード画面で波線。
-
子孫セレクタの読み方をおしえ...
-
CSS, リンクの色を一部変えるに...
-
liリストタグの背景色に色がつ...
-
【ヒトの神秘】美男美女から何...
-
htmlの文字が縦書きになる
-
imgタグをそのまま使うことは正...
-
smallにtext-allignが効かない
-
リストの並べ替え
-
htmlのolやulなどlistにtitleや...
-
<h1>、<h2>と<p><div>の行間を...
-
HTML5のfooterに見出しを付けて...
-
CSSのa:hoverが急に一部だけ効...
-
favicon.ico はもういらない?
-
CSSでクラスのエイリアス(include)
-
liタグの中に<p>タグやら<dl>を...
-
ヘッダーを左右に二分割する方...
-
<pre>~</pre>について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
idの中のid指定
-
サイトにjQueryが使用されてい...
-
CSSのクラス名・ID名の指定でワ...
-
HTML要素のid/class名の長さに...
-
brにクラスをつけてcssでdispla...
-
外部css定義したclassをht...
-
htmlのid属性って必要なの?
-
個別にリンクの色を変える方法
-
子孫セレクタの読み方をおしえ...
-
最近、HTMLのヘッダーをIDで定...
-
liリストタグの背景色に色がつ...
-
スタイルシートで、id属性の中...
-
<span>で2重にかけているものを...
-
CSS内で使われる山括弧の意味が...
-
ページの左右の余白(枠外)に...
-
Bootstrap 訪問済みテキストリ...
-
CSSで下まで背景色を伸ばす方法
-
透過背景を解除するにはどうす...
-
CSSで、h1#logoという書き方は
-
CSSを使うと<IMG>タグのHSPACE...
おすすめ情報