≪ Today I learned. RSS購読
公開日
タグ
CSS
著者
ダーシノ(@bc_rikko)

:has()を使って前の兄弟要素を選択する

Selecting Previous Siblings:has()擬似クラスを使って、前の兄弟要素を選択する方法が紹介されていた。

<section>
  <div class="item"></div>
  <div class="item"></div>
  <div class="item"></div>
  ...
</section>
/* マウスオーバーした要素 */
.item:hover {

  /* マウスオーバーした次の兄弟要素 */
  & + .item {}

  /* マウスオーバーした次の次兄弟要素 */
  & + .item + .item {}

  /* マウスオーバーした前の兄弟要素 */
  :has(+ &) {}
  /* = :has(+ .item:hover) */

  /* マウスオーバーした前の前の兄弟要素 */
  :has(+ .item + &) {}
  /* = :has(+ .item + .item:hover) */
}

:has(+ &)は、「マウスオーバーした要素(&)が次にくる要素」を指している。正規表現の肯定先読みのようなもの。

デモ

ブラウザ対応状況