【サンプルで比較】CSSでドロップシャドウをつける3つの方法
以下は、いずれも要素に影をつけるためのプロパティです。
・box-shadow
・filter: drop-shadow()
・text-shadow
3つもあるの?何が違うの?サンプルを使って整理していきます。
この記事で分かること
- CSSでドロップシャドウをつける方法3つの使い分け
豊かに引きこもる。
Webデザインは器。ブログは中身。
「レンちゃんとペンタ」では、2つのスキルを掛け合わせて、
おウチで豊かに楽しく暮らす方法をご紹介しています。
box-shadowとfilter:drop-shadow()
まずはbox-shadowとfilter:drop-shadow()、2つを比較しながら紹介します。
それぞれこのような表記で使います。
どちらの方法も、4つの値を使って好みのシャドウにすることができます。
値の表記順や役割は両プロパティとも共通なので、まとめて覚えてしまうと便利です。
・値1:シャドウのX方向位置(横方向にどれくらいシャドウをズラすか)
・値2:シャドウのY方向位置(縦方向にどれくらいシャドウをズラすか)
・値3:シャドウをどのくらいぼかすか
・値4:シャドウの色
続いてサンプルを使って、2つのプロパティの違いを見ていきます。
div要素で比較
まずはdiv要素に適用して比べてみます。
box-shadow
box-shadowでは、div要素の輪郭にシャドウがつきます。
filter:drop-shadow()
filter:drop-shadow()では、要素の中身にシャドウがつきます。
ただし、背景色を指定すると、box-shadowと同じような挙動になります。
画像で比較
今度はimg要素。
透過情報を持ったpng画像で実験してみます。
box-shadow
box-shadowでは、やはり画像の輪郭に対してシャドウがつきます。
filter:drop-shadow()
filter:drop-shadow()では、画像の透過部分まで丁寧に追いかけてシャドウをつけてくれます。
透過情報を持っていない画像に関しては、どちらを利用しても同様の結果になります。
続いては、擬似要素に関して実験してみます。
おなじみの(?)::before、::afterに関してはどうでしょう。
擬似要素(::before、::after)で比較
今度は三角形部分を::beforeで作った吹き出しで実験してみます。
box-shadow
box-shadowでは、期待通りのシャドウがつけられません。
filter:drop-shadow()
filter:drop-shadow()では、バッチリつけられます。
擬似要素は様々な目的で利用され、その表現手法もたくさん存在します。
要素とプロパティ、いろいろな組み合わせを試して実装方法を探っていくと面白そうです。
text-shadow
ご紹介が遅くなりましたが、シャドウ系ではもう一つ、text-shadowプロパティというのがあります。
値1〜値4の用法は、box-shadowなどと同じです。
名前の通り、テキストにのみシャドウをつけることができます。
一見、drop-shadowの方が有能そうですが、逆の発想で「テキスト以外にシャドウをつけたくない」時はこちらの方が便利です。
text-shadowとdrop-shadowの使い分け
テキストと画像を内包したdiv要素を作ってそれぞれのプロパティを使用してみます。
div要素にボーダーをつけた上で、filter:drop-shadow()を使ってみます。
テキストや画像はもちろん、ボーダーにもシャドウがつきます。
text-shadowを使った場合は、テキスト以外にシャドウがつくのを回避することができます。
どこまでをシャドウの対象にしたいのか次第で、適切なプロパティを選んでいけばいいですね。
まとめ
シャドウをつけるためのプロパティ3つをご紹介しました。
- CSSでシャドウをつける方法まとめ
-
- box-shadow:要素の輪郭にシャドウをつけたい時に
- filter:drop-shadow():要素の内容にシャドウをつけたい時に
- text-shadow:テキスト以外にはシャドウをつけたくない時に
たくさんあって混乱しますが、CSSの表現が豊かになるに従い、少しずつプロパティも増えていったのではないかな、と推測します。
楽しみながら使い分けていきましょう。