【CSS】 「text-shadow」「box-shadow」「drop-shadow」の違いと使い方

この記事は約7分で読めます。
記事内に広告が含まれています

コーディングのイメージ

こんにちは、さち です。

先日、ウェブサイトを作っているとき、「CSS」を使ってを付けたいことがありました。

しかし、個人的には使用頻度があまり高くないし種類も多く、すぐに書き方を忘れてしまうので、備忘録としてこの記事を残しておきます。

影を付ける CSS のプロパティ「text-shadow」「box-shadow」「drop-shadow」の違いについても見ていくので、参考になれば幸いです。

スポンサーリンク

【文字の影】 text-shadow

text-shadow はその名のとおり、テキスト」に影を付けられるプロパティです。

サンプル

<span>テキスト</span>
<img src="transparent-image.png" />
span {
  color: deeppink;
  border: 4px solid deeppink;
  border-radius: 15px;
}

span, img {
  text-shadow: -6px 18px 4px gray;
}
結果
テキスト透過PNG のサンプル

「テキスト」だけに影が付き、「画像」には付きません。

書き方

/* サンプル */
text-shadow: -6px 18px 4px gray;

/* それぞれの値の意味 */
text-shadow: 横方向の位置 縦方向の位置 [ぼかしの強さ] [影の色];

[] で囲んだものは記述を省略できます。

「ぼかしの強さ」を省略した場合は 0 になります。また、「影の色」を省略した場合は「文字の色」の color プロパティの値と同じになります。

【要素の影】 box-shadow

box-shadow は、要素」に影を付けられるプロパティです。

サンプル

<span>テキスト</span>
<img src="transparent-image.png" />
span {
  color: deeppink;
  border: 4px solid deeppink;
  border-radius: 15px;
}

span, img {
  box-shadow: -6px 18px 4px 0 gray;
}
結果
テキスト透過PNG のサンプル

「テキスト」「画像」ともに影を付けられますが、あくまでも「要素」の形に合わせて付きます。

そのため、「透過PNG」であっても画像要素の形(長方形の形)に影がつきます。

書き方

/* サンプル */
box-shadow: -6px 18px 4px 0 gray;

/* それぞれの値の意味 */
box-shadow: 横方向の位置 縦方向の位置 [ぼかしの強さ] [拡張する量] [影の色];

[] で囲んだものは記述を省略できます。

「ぼかしの強さ」「拡張する量」を省略した場合は 0 になります。また、「影の色」を省略した場合は「文字の色」の color プロパティの値と同じになります。

【透過用の影】 drop-shadow

drop-shadow は、透過画像」に影を付けるときに便利なプロパティです。

サンプル

<span>テキスト</span>
<img src="transparent-image.png" />
span {
  color: deeppink;
  border: 4px solid deeppink;
  border-radius: 15px;
}

span, img {
  filter: drop-shadow(-6px 18px 4px gray);
  transform: translateZ(0);/* Safari での表示崩れ対策 */
}
結果
テキスト透過PNG のサンプル

「透過PNG」の形に合わせて影が付きます。

「テキスト」は、要素に背景色がある場合は「要素」の形に、ない場合は「テキスト」の形に影が付きます。

書き方

/* サンプル */
filter: drop-shadow(-6px 18px 4px gray);

/* それぞれの値の意味 */
filter: drop-shadow(横方向の位置 縦方向の位置 [ぼかしの強さ] [影の色]);

drop-shadow は前述の2つとは異なり、filter の機能の一種です。記述するときは、filter プロパティの中に書く必要があるので注意しましょう。

また、[] で囲んだものは記述を省略できます。

「ぼかしの強さ」を省略した場合は 0 になります。また、「影の色」を省略した場合は「文字の色」の color プロパティの値と同じになります。

知ってると便利なこと

影は複数個つけることもできます。

サンプル

<span>テキスト</span>
<img src="transparent-image.png" />
:root {
  --shadow-color: brown;
}

span {
  color: gold;
  /* 擬似的にテキストをフチ取り */
  text-shadow:
    1px 1px 0 var(--shadow-color),
    -1px 1px 0 var(--shadow-color),
    1px -1px 0 var(--shadow-color),
    -1px -1px 0 var(--shadow-color),
    0px 1px 0 var(--shadow-color),
    1px 0px 0 var(--shadow-color),
    0px -1px 0 var(--shadow-color),
    -1px 0px 0 var(--shadow-color);
}

img {
  /* 擬似的に画像を複製 */
  filter:
    drop-shadow(-30px 0 0 skyblue)
    drop-shadow(30px 0 0 lightgreen);
  transform: translateZ(0);/* Safari での表示崩れ対策 */
}
結果
テキスト透過PNG のサンプル

色の記述は変数を使うと、後で変更することがあっても楽です。

影を複数個付ける場合、text-shadow box-shadow は , で区切る必要がありますが、drop-shadowスペース でOKです。

微妙に仕様が違ってややこしいです。間違えないようにしましょう。

コメント

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