"li:hover > a" と "li a:hover" は同じです
コードのような
ul#navigation li a:hover {
background:#f8f8f8;
color:#282828;}
と
ul#navigation li:hover > a {
background:#fff;}
まったく違います。これらは 2 つの非常に異なるセレクターです。
li a:hover
手段:ユーザーがマウスを要素の上に置いたときに、要素の子孫であるa
要素にこれらのルールを適用します。li
li:hover > a
手段:ユーザーが要素の上にマウスを置いたときに、要素の直接の子であるa
要素にこれらのルールを適用します。li
ご覧のとおり、いくつかの違いがあります。
>
とも呼ばれる をスポーツし、タグが中間コンテナーなしで に直接含まれている場合にのみルールを適用します。a
li
いいえ、
li:hover > a
a
がホバーされたときの スタイルを変更し、li
がホバーされたときli a:hover
のスタイルを変更します。a
a
ここで違いを参照してください:http://jsfiddle.net/uzyUr/
さらに子>
セレクターがあるためa
、直接ネストする必要がありますがli
、スペースは任意の子孫セレクターであるため、好きなだけa
ネストすることができますli
答えはノーだ。
この部分では、ホバーをトリガーする要素はリンクになります。
ul#navigation li a:hover {
background:#f8f8f8;
color:#282828;}
ここにいる間、ホバーをトリガーする要素はli
ul#navigation li:hover {
background:#fff;}
しかし、次のようなものがある場合:
<ul>
<li><a href="#"></a></li>
</ul>
両方の CSS が機能します。一方、次のようなことをすると:
<ul>
<li><div></div></li>
</ul>
1 つ目は機能しませんが、2 つ目は機能します。
しかし、「>」のようなものがある場合
ul#navigation li:hover > a{
background:#fff;}
どちらも技術的にはリンクまたは<a>
タグは同じですが、もちろん は<li>
リンクの前に存在する必要があります。
これがデモを理解するためのデモです
最初にテキストにカーソルを合わせると、a
色が緑色に変わります
次にテキストのすぐ外側にカーソルを合わせると、a
色が赤に変わります
結論
ul#navigation li a:hover
a にカーソルを合わせると、a のスタイルが変更されます
ul#navigation li:hover > a
a のスタイルは、li をホバーすると変更されます