【CSS】複数の色を持つテーブル行でもマウスホバーでいい感じに色を変える

  • 2022年3月23日
  • CSS

 よく管理画面で次の様なテーブルの行にカーソルをあわせるとその行の色が変わるデザインがあります。これは横幅が長い表において人間の目で左端と右端のデータを取り違えない点で特に有効なデザインです。左端に名前やID、右端に操作系統が並んでいる状態で画面いっぱいまで表が広がっている場合、操作すべきでないものを誤って操作してしまうことが考えられ、これを防げます。

/* テーブルの行の上にカーソルをのせると背景色が変わる */
tbody tr:hover {
  background-color: #ccffff;
}

 また次の様に状態が一目でわかる様にするために表の中に色をつけることがしばしばあります。

/* 状態を見やすくするために背景色を特別に変える */
td.init {
  background-color: white;
}
td.annul {
  background-color: #f00;
  color: #fff;
}
td.complete {
  background-color: #8f8;
}

 これは便利なのですが、手なりで作るとカーソルによる背景色の変更と色指定が衝突します。もし常にカーソルの側を優先するのであれば、カーソルをあわせた行の状態が一目ではわかりません。もし常に状態の側を優先するのであれば、どこにカーソルをあわせているかの情報が途切れます(もっとも状態列にそれ程長い幅を取らなければ大した問題になりません)。こうなるとカーソルをあわせた時にいい感じに二つの色を合成した色が表示される様にしたくなります。

 解決方法として自前で計算する方法も考えられますが、これは手間と適切な計算の仕方の都合であまり使いません。とはいえ、自由に指定できるのは魅力的であり、後述の方法では期待した結果を得られない時に使います。

 自分がおすすめする解決方法は次のmix-blend-mode: multiply;を用いた方法です。

td {
  mix-blend-mode: multiply;
}

mix-blend-mode – CSS: カスケーディングスタイルシート | MDN
– CSS: カスケーディングスタイルシート | MDN#multiply

 mix-blend-mode: multiply;は複数の色が指定されている場合、それを掛け合わせた色を表示します。この掛け合わせの計算は白っぽさを透明度の高さにしています。このため白背景に薄い色付けのデザインによく合い、いい感じに色がついている部分に更に色をつけてくれます。加えて自前で計算する必要もなく、さらっと設定できます。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG