😸

【Tailwind CSS】他要素の状態によってスタイリングを制御する方法

2024/09/03に公開

解決前状態

緑の四角がホバーされた時、鉛筆マークの色を青色にしたい場合

<div className="relative flex items-center w-80 h-80 bg-green1 rounded-3xl ml-10 mb-10">
      <p className=" text-white text-xs mx-5 break-words line-clamp-4">
        testTask
      </p>
      <Edit2
        onClick={() => editTaskModalState()
        }
       // 親要素がホバーされた時、文字色を青色にしたい
        className="w-13 h-13 absolute bottom-5 right-5 text-white hover:text-blue1"
      />
    </div>

鉛筆マークにホバーした時のみ、スタイルが適用されてしまっています。

親要素がホバーされた時、鉛筆マークを青色にする必要がありますね。

その場合、どのようにホバーの監視対象を親要素に追加すれば良いのでしょうか?

group を使った解決方法

group クラスを指定することで、親要素をホバーの監視対象に入れることができます。

// classNameにgroupを指定することで監視対象を親にも設定する
<div className="relative group flex items-center w-80 h-80 bg-green1 rounded-3xl ml-10 mb-10">
      <p className=" text-white text-xs mx-5 break-words line-clamp-4">
        testTask
      </p>
      <Edit2
        onClick={() => editTaskModalState()
        }
        // group-hoverとすることで、groupで監視されている要素がホバーされた際に発火
        className="w-13 h-13 absolute bottom-5 right-5 text-white invisible group-hover:visible"
      />
    </div>

親要素に group クラスを指定することで、親要素のホバー状態を鉛筆要素にも適用することができました。

ネストした group など、詳しくはTailwind CSS 公式ドキュメントにて。

Discussion