LoginSignup
5
5

More than 3 years have passed since last update.

【CSS】opacityだと透明度を子クラスまで継承してしまう問題の解決法

Last updated at Posted at 2019-05-12

何が起きたか

1.opacityで、背景画像を透過させようとした

.card {
  opacity: 0.8;
  border-radius: 1em;
  padding: 1.5rem;
  height: 100%;
  border: none;
}

2.ん?コンテンツの画像も透過してしまっている?

スクリーンショット 2019-05-12 14.28.11.png

3.opacityを子クラスまで継承してしまっているから、imgだけopacity:1にしよう〜!

.card-img {
  opacity: 1.0;
}

4.ならない!!どうしましょ!

解決策

background-colorのrgbaのalpha値の透明度を変更!

.card {
  /* opacity: 0.8; */
  border-radius: 1em;
  padding: 1.5rem;
  height: 100%;
  border: none;
  background-color: rgba(255, 255, 255, 0.95); /* ←これを追加 */
}

見事!画像が透過されていない!!
スクリーンショット 2019-05-12 15.04.10.png

RGBaとは

CSS3から、RGBa(Red,Green,Blue,Alpha)という色指定のプロパティを使うことにより、色の透明度(alpha値)の指定が可能になりました。これによって、今まではベタ塗りでも透過している背景色などは画像で指定する必要がありましたが、CSSで記述できるようになりました。
RGB各色には0~255までの色の濃さを示す数値を入力し、最後のアルファ値には0~1(小数点で0.8、0.55など)で指定します。
背景色(background-color)の他にも、
・文字(color)
・枠線(border-color)
なども透過可能です。

(参考)http://kawatama.net/web/1108

まとめ

透過方法には、

  • rgbaのalpha値を使う
  • opacityを使う

方法の2種類があるみたいです!
今回のように、画像などには透明度を適用させたくない場合は、rgbaのalpha値を使えば良いと思います!

5
5
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
5
5