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

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

    デモ

    ブラウザ対応状況