CSS Tips | 超実務コアCSSテクニック:カラー・背景 - opacityと透明の違い

Web APP CSS
スポンサーリンク

opacity と「透明色(rgba/transparent)」は“似ているようで全く違う”

初心者が必ずつまずくポイントが opacity と rgba の透明度の違い です。
どちらも「透明にする」ように見えますが、
透明になる範囲がまったく違う ため、使い分けを理解すると CSS が一気に扱いやすくなります。

ここでは CSS と Tailwind CSS の両方で、
実務でよく使う例を交えながら丁寧に解説します。


opacity は「要素全体を透明にする」

要素の中身(文字・画像・子要素)まで全部透明になる

opacity は その要素の“見た目全体”に透明度をかける プロパティです。

CSS 版

.box {
  opacity: 0.5; /* 50% 透明 */
  background: #3b82f6;
  color: white;
  padding: 1rem;
}
CSS

Tailwind 版

<div class="opacity-50 bg-blue-500 text-white p-4">
  文字も背景も全部半透明
</div>
HTML

深掘りポイント

opacity は「レイヤー全体の透明度」を変えるため、
文字も画像も影も全部薄くなる のが最大の特徴です。

背景だけ透明にしたいのに文字まで薄くなる…
という事故が起きやすいので注意が必要です。


rgba(透明色)は「背景だけ透明にする」

文字や子要素は透明にならない

rgba は 背景色そのものに透明度をつける 方法です。

CSS 版

.box {
  background: rgba(59, 130, 246, 0.5); /* 背景だけ半透明 */
  color: white;
  padding: 1rem;
}
CSS

Tailwind 版(任意値)

<div class="bg-[rgba(59,130,246,0.5)] text-white p-4">
  背景だけ半透明、文字はくっきり
</div>
HTML

深掘りポイント

rgba は「背景色だけ透明」なので、
文字やアイコンは透明にならず、読みやすさが保たれる のが強みです。


opacity と rgba の違いを“視覚的に”理解する例

opacity の場合(全部薄くなる)

<div class="opacity-50 bg-blue-500 text-white p-4">
  文字も背景も薄くなる
</div>
HTML

rgba の場合(背景だけ薄くなる)

<div class="bg-[rgba(59,130,246,0.5)] text-white p-4">
  文字はくっきり、背景だけ薄くなる
</div>
HTML

深掘りポイント

UI デザインでは「背景だけ透明にしたい」ケースが圧倒的に多いので、
opacity より rgba を使う方が正解になる場面が多い です。


例1:カードの背景だけ透明にしたい → rgba が正解

CSS 版

.card {
  background: rgba(255, 255, 255, 0.2);
  padding: 1.5rem;
  border-radius: 1rem;
  color: #0f172a;
}
CSS

Tailwind 版

<div class="bg-[rgba(255,255,255,0.2)] p-6 rounded-xl text-slate-900">
  背景だけ透明なカード
</div>
HTML

opacity を使うと文字まで薄くなるので不適切です。


例2:ホバー時に“全体を薄くしたい” → opacity が正解

CSS 版

.thumb {
  transition: opacity 0.2s;
}

.thumb:hover {
  opacity: 0.6;
}
CSS

Tailwind 版

<img src="photo.jpg" class="hover:opacity-60 transition" />
HTML

画像全体を薄くしたいときは opacity が最適です。


例3:オーバーレイ(黒い半透明の幕) → rgba が正解

CSS 版

.overlay {
  background: rgba(0, 0, 0, 0.5);
}
CSS

Tailwind 版

<div class="bg-[rgba(0,0,0,0.5)] fixed inset-0"></div>
HTML

opacity を使うと、
中に入れたテキストやボタンまで薄くなるので不適切です。


例4:ボタンのホバーで“背景だけ薄くしたい” → rgba

CSS 版

.btn {
  background: rgba(37, 99, 235, 1);
}

.btn:hover {
  background: rgba(37, 99, 235, 0.8);
}
CSS

Tailwind 版

<button class="bg-[rgba(37,99,235,1)] hover:bg-[rgba(37,99,235,0.8)] text-white px-4 py-2 rounded">
  ボタン
</button>
HTML

文字はくっきりしたまま、背景だけ変化します。


例5:背景写真の上に文字を置く → rgba で読みやすくする

CSS 版

.text-bg {
  background: rgba(0, 0, 0, 0.4);
  padding: 1rem;
}
CSS

Tailwind 版

<div class="bg-[rgba(0,0,0,0.4)] text-white p-4">
  写真の上でも読みやすい
</div>
HTML

opacity を使うと文字まで薄くなるので絶対に避けるべきです。


opacity と rgba の使い分け(最重要まとめ)

opacity を使うべき場面

要素全体を薄くしたい
画像のホバー演出
ボタン全体をフェードさせたい
UI の“非アクティブ状態”を表現したい

rgba を使うべき場面

背景だけ透明にしたい
文字はくっきり残したい
オーバーレイを作りたい
ガラス風デザイン(グラスモーフィズム)
カード・ボタンの背景を半透明にしたい

深掘りポイント

UI デザインでは
「背景だけ透明にしたい」ケースが圧倒的に多い
ため、rgba の方が使用頻度が高いです。

opacity は「全体を薄くする」特殊用途として使うと理解すると混乱しません。


実務テンプレート:透明度の正しい使い方(Tailwind)

背景だけ透明(rgba)

<div class="bg-[rgba(255,255,255,0.15)] backdrop-blur-md p-6 rounded-xl">
  グラスモーフィズム
</div>
HTML

全体を薄くする(opacity)

<div class="opacity-40">
  非アクティブ状態のカード
</div>
HTML

背景写真の上の文字を読みやすくする(rgba)

<div class="bg-[rgba(0,0,0,0.4)] text-white p-4">
  写真の上でも読みやすい
</div>
HTML

まとめ

opacity と rgba は似ているようで、
透明になる範囲がまったく違う のが本質です。

opacity → 要素全体が透明
rgba → 背景だけ透明

UI デザインでは rgba を使う場面が多く、
opacity は「全体を薄くしたいとき」だけ使うと理解すると迷いません。

タイトルとURLをコピーしました