0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

rgba 指定した背景を inherit するのはやめとけ (または Figma/XD では透過度で色を決めない)

Last updated at Posted at 2020-09-28

タイトルのままです。

どういうケースか

一番わかりやすいスニペットをおいておくとこんな感じです。
意図してこういうスタイル指定になることは稀だと思いますが、フロントエンドフレームワークを利用していると意図せずこのようなスタイルがあたっている可能性があります。

<html>
<body>
  <div id="main" style="background-color: #fff;">
    <div id="color" style="background-color: rgba(0, 0, 0, 0.2)">
      <span style="background-color: inherit;">aaa</span>
    </div>
  </div>
</body>
</html>

何が起こるか

こうなります。

スクリーンショット 2020-09-28 15.03.24.png

更に、 main の色を変えると更に事件が起きます。例えば色を #a00 にしてみます。

スクリーンショット 2020-09-28 15.05.55.png

くすんだ赤になりました。
意図したものであれば問題ないですが、意図せずグレーの要素が消えることになります。

何故か

color の半透明なグレーを span が継承した結果、色が乗算され、結果的に span の色が濃くなってしまいます。
更に main を赤くしたことで、赤の上に半透明のグレーがかかるため、色がくすみます。考えてみれば当然で、背景を透かして見るためにアルファチャンネルは存在しています。

こうならないようにするために

アルファチャンネルの色を継承しない

イテレータで生成したような連続する要素に対して個別のスタイルが当てられるようなシステムで、意図せず透過色を利用しており、その上にボタンの真ん中に文字をセンタリングする目的で更に別なタグがあるような場合で、背景色を継承しないとスタイルがおかしくなるようなCSS設計を行っているページで起こるかもしれません。

何度も言いますが、意図したものであれば気にする必要はありません。問題は意図しないケースです。

XD / Figma で opacity が指定されている色はそのまま使う前に確認する

最近はXDやFigmaが登場したため、デザイナーとフロントエンドエンジニアの分業が進んでいます。結果、デザイナーは「デザイナーに色を伝えなくても勝手にコピーして使ってくれるだろう」と思い、エンジニアは「デザイナーが指定した色に意味があるんだろう」と思ってもよいと考えてしまうフシがでてきます。

デザイナーは見た目上の色が出ていればよいと考え、エンジニアはただ指定された色をそのまま使うというような実装を行っていると、本当にこの画面のデザインでやりたかったことが置いてけぼりになり、結果的におかしなスタイルがあたってしまうということが起きます。

デザイナーとエンジニアが分業しているようなプロジェクトでは、見た目のチェックをデザイナーにも依頼するのがよいでしょう。

まとめ

デザイナー一同に置かれましては、エンジニアと共同でXD / Figmaを見る環境で仕事をしているのであれば、極力アルファチャンネルで色を合わせるのはお控えいただけますと、エンジニアが非常に楽になるので、協力していただけると幸いです🙇‍♂️また、ページの新設や修正の際は、レビューにも付き合ってもらえると嬉しいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?