CSS Box Shadowジェネレーター

美しいシャドウを視覚的に作成して、CSSをコピーします。

あなたのデータはデバイスを離れません

プリセット

4px
4px
10px
0px
25%
box-shadow: 4px 4px 10px 0px rgba(0,0,0,0.25);

使い方

  1. スライダーをドラッグして、水平/垂直オフセット、ぼかし、拡張、不透明度を調整します。
  2. シャドウの色を選択し、必要に応じて「inset」を有効にします。
  3. 「シャドウレイヤーを追加」をクリックして、複数のシャドウを重ねます。
  4. クイックスタートポイントとしてプリセットを使用します。
  5. 「CSSをコピー」をクリックして、結果をスタイルシートに貼り付けます。

よくある質問

CSSのbox-shadowとは?

CSSのbox-shadowプロパティは、要素の周りにシャドウ効果を追加します。水平オフセット、垂直オフセット、ぼかし半径、拡張半径、色の値を取ります。

複数のシャドウを追加できますか?

はい。「シャドウレイヤーを追加」をクリックして別のシャドウを追加します。複数のシャドウはCSS出力でコンマで区切られます。これにより複雑な階層効果を作成できます。

insetキーワードは何のために使われますか?

「inset」を追加すると、シャドウが要素の外側ではなく内側に表示され、内側のシャドウや「凹んだ」効果を作成します。

box-shadowの5つのパラメーター

CSS box-shadow は要素のボーダーボックスに1つ以上のドロップシャドウエフェクトを付与する。文法は box-shadow: <color>? <offset-x> <offset-y> <blur-radius>? <spread-radius>? inset? で、複数のシャドウはカンマ区切りだ。各パラメーターは特定の役割を持つ:

ブラウザはシャドウのリストを前面から背面へ合成する:最初に記述したシャドウが最も手前にあり、最後のシャドウが最も奥になる。これは text-shadowbackground と同じ並び順だが、ほとんどのCSSルールのカスケードとは逆であり、新しい作者がよく驚く点だ。

Material Designの2シャドウ高さシステム

GoogleのMaterial Design(2014年5月導入;Material Design 3は2021年)は、UIサーフェスが密度非依存ピクセル単位の複数のレベルのどれかに位置する定量化された高さシステムを定義している。各レベルのシャドウレシピは2つの重ねたシャドウを使う:

Material Design 2では高さの値は0dp(シャドウなし)から24dpまであり;カードは通常、静止時に1〜2dp、ホバー時に8dpにアニメーションし、モーダルダイアログは24dpを使う。Material Design 3はスケールを5つの名前付きレベル(1〜5)に縮小し、ダークテーマにドロップシャドウに加えてティントオーバーレイを追加した。umbraとpenumbraの構造はビジュアルモデルとして残っており、Tailwindの shadow-md が2つの重ねたシャドウ 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06) として提供される理由だ。

ニューモーフィズム:2つの対向するシャドウが必要なトレンド

ニューモーフィズム(「new」と「skeuomorphism」の合成語)は、ウクライナのデザイナーAlexander Plyutoが2019年12月にDribbbleに投稿した「Skeuomorph Mobile Banking」が数週間で数万いいねを集めたことで、2019年末から2020年初頭にかけてバイラルな人気を博した。基本レシピは親と同じ背景色を持つ要素に2つのbox-shadowを設定することだ:右下に暗いシャドウ、左上に明るいシャドウ。暗い面は光源から離れて遠ざかるサーフェスを表現し、明るい面はそれが光に向かって持ち上がるハイライトを表現する。オフセットを反転(または両方に inset を追加)すると凹んだ/押された外観になる。

アクセシビリティに関する正直な注意:ニューモーフィズムは、要素と背景のビジュアルコントラストが必然的に非常に低くなる(同じ色を共有するため)として広く批判されてきた。ボタンや入力欄がWCAG 1.4.11(非テキストコントラスト、AA、UIコンポーネントと隣接色の3:1比)に失敗することがある。押された状態と押されていない状態は微妙なシャドウの方向でのみ区別されることが多く、スクリーンリーダーには伝わらず、弱視、色覚異常、または画面の反射がある人には見えない。このスタイルは装飾的なサーフェスに限定して使い、プライマリコントロールには使わないこと。

box-shadow と filter: drop-shadow() の比較

CSSフィルターエフェクトは代替として filter: drop-shadow(<x> <y> <blur> <color>) を定義している:視覚的に似ているが重大な違いがある。box-shadow は(border-radius があれば丸められた)ボーダーボックスの矩形のシャドウを投影する。drop-shadow はレンダリングされた要素のアルファチャンネルのシャドウを投影し、子要素、透過PNG、くり抜きのあるSVG図形、マスクされたコンテンツを含む。drop-shadow を選ぶ最も一般的な理由は、シャドウをかけたい要素が矩形でない場合だ:透過PNGアイコン、SVGロゴ、吹き出しの三角形など。

box-shadowdrop-shadow()
Spreadパラメーターありなし
Insetバリアントありなし
複数シャドウあり(カンマ区切り)あり(フィルターの連結)
子孫への影響なしあり(サブツリー全体)
クリッピングoverflow:hidden の外側に拡張可能フィルター境界内に制限される
パフォーマンスコンポジターフレンドリーフィルターパスが発生する

パフォーマンスの注意事項

box-shadowはリアルタイムレンダリングのコストが高いCSSプロパティのひとつだ。コストには3つの要因がある:ぼかしカーネルサイズ(ガウスぼかしは分離可能な2パス畳み込みで、ぼかし量が2倍になると1ピクセルあたりの処理は4倍になるため、大きなカードに100pxのぼかしをかけるとスクロール中のフレームレートが目に見えて低下する)、シャドウのサーフェス面積(spreadで拡張されぼかしでさらに拡大された矩形がGPUのラスタライズ対象であり、大きなモーダルオーバーレイのシャドウが最もコストが高い)、そして再描画box-shadow をアニメーション化すると毎フレームシャドウ領域の再描画が発生する)。

実践的な推奨事項:

アクセシビリティ

シャドウはアクセシビリティツリーの観点では装飾(スクリーンリーダーは無視)だが、次の影響がある:

クイックレシピ

エフェクトCSS
控えめなカードリフト0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24)
ソフトなモダンカード0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -1px rgba(0,0,0,0.06)
重いモーダルリフト0 25px 50px -12px rgba(0,0,0,0.25)
シャープ1pxスタンプ0 0 0 1px rgba(0,0,0,0.05)
フォーカスリング(3px)0 0 0 3px rgba(59,130,246,0.5)
インセット入力フィールドinset 0 2px 4px 0 rgba(0,0,0,0.06)
グローハロ0 0 20px 4px rgba(99,102,241,0.6)

よくある質問

なぜシャドウがクリップされるのか?

ほぼ常に、祖先要素に overflow: hidden があるためだ。シャドウはボーダーボックスを超えて伸びるが、祖先の端でクリップされる。2つの修正法:シャドウを祖先自体に移すか、オーバーフロークリッピングのないラッパー要素を使う。filter: drop-shadow() はこの問題を持たないが独自のトレードオフがある。

-webkit-box-shadow のようなベンダープレフィックスはまだ使うべきか?

いいえ。プレフィックスなしの box-shadow は2012年頃から普遍的にサポートされている。ベンダープレフィックスは2026年のコードでは純粋なノイズであり削除すべきだ。2010年代初頭のCSSリセットライブラリは防御的にそれらを含んでいたが、現代のコードは安全に削除できる。

boxではなくテキストにシャドウを適用するにはどうするか?

text-shadow を使う。同じオフセット / ぼかし / 色の文法だがspreadとinsetがない。スタイリッシュなテキスト(例:background-clip: text グラデーションテキスト)のグリフ形状のシャドウには親要素の filter: drop-shadow() が適切なツールで、box-shadow はグリフの後ろに矩形のシャドウを投影してしまう。

なぜ 0 0 0 2px のシャドウが柔らかく見えないのか?

3番目の値(blur-radius)が 0 だからだ。ぼかしなしのspreadのみのシャドウはシャープなソリッドアウトラインを生成する。これはフォーカスリングや「フェイクアウトライン」のトリックには最適だが、柔らかい高さ表現には向かない。ぼかしを追加する:0 0 4px 0 rgba(0,0,0,0.2)

何かサーバーに送信されますか?

いいえ。プレビューはスライダーを動かすたびにブラウザ内で再レンダリングされ、CSS文字列はローカルで生成され、コピーはクリップボードに書き込まれる。ページはロード後オフラインで動作する。

関連ツール

CSSグラデーションジェネレーター 無料オンラインカラーパレット生成ツール CSSミニファイア