li要素のhover時に子要素のCSSの値を変える
考えてみたらものすごく単純だった。あまり使う場面はないと思うのですが、そういう要望があったので実装。なんでも商品一覧みたいなページをコーディングするにあたり、1つの商品をli要素として、li要素をhoverしたら、その子要素の画像とテキストをCSSのtransitionなどでアニメーションさせたいというもの。
最初はJavaScriptでとも考えたのですが、CSSだけでできました。この使い方知らなかった……。ということでまとめ。
擬似クラスに隣接セレクタや子孫セレクタが指定できる
いや、もう本当にこれだけなんですけど単純に知らなかった……_(:3」∠)_
以下の図のようなことを実現したかったのです。
これを実現するためのソースコードがこちら。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>Sample</title>
<style>
.a1,
.a2 {
color: #00f;
}
.wrapper {
background: #ccc;
display: inline-block;
padding: 20px;
}
.wrapper:hover .a1 {
color: #f00;
}
.wrapper:hover .a2 {
color: #0f0;
}
</style>
</head>
<body>
<ul>
<li class="wrapper">
<a href="" class="a1">hoverで青から赤に文字色変化</a><br>
<a href="" class="a2">hoverで青から緑に文字色変化</a>
</li>
</ul>
</body>
</html>
できた!\(^o^)/
hoverとトリガーにするにあたって、隣接セレクタや子孫セレクタなどの要素を変更させる。どこかでまた使うかもしれないかも。