デジタル道具屋
デジタル道具屋

Box Shadowジェネレーター

リアルで美しいドロップシャドウを作成

Box
CSS Code

影の設定

10px
10px
20px
0px
30%

プレビュー環境

Box Color
Bg Color

Box Shadowジェネレーターの使い方

要素に影を落とすCSSプロパティ box-shadow の値を、スライダー操作とライブプレビューで組み立てるツールです。横方向・縦方向のオフセット、ぼかし(blur-radius)、広がり(spread-radius)、影の色と不透明度、内側影(inset)の6要素を調整すると、コピーしてそのまま貼り付けられる1行のCSS宣言が生成されます。処理はすべてブラウザ内で完結し、入力値やプレビューがサーバーへ送信されることはありません。

1

影の位置と質の調整

横方向(X)と縦方向(Y)は −100px〜100px、ぼかし(Blur)は 0〜100px、広がり(Spread)は −50px〜50px の範囲でスライダーを動かします。プレビューの「Box」に影が即時反映されます。

2

色と不透明度の調整

カラーピッカーで影の色を選び、不透明度スライダー(0〜100%)で濃さを決めます。ボックス自体の色と背景色も変更できるので、実際に配置する画面の配色で見え方を確認できます。

3

内側/外側の切り替えとコピー

「内側影 (Inset)」をオンにすると影が要素の内側に描かれ、生成コードの先頭に inset が付きます。仕上がったら「コピー」ボタンでクリップボードへ送り、スタイルシートに貼り付けます。

DEEP DIVE

box-shadow の各値の意味と、このツールが出力する構文

box-shadow は「inset? | offset-x offset-y blur-radius spread-radius color」の順で値を並べるプロパティです。このツールは常に4つの長さをすべて明示し、色を rgba() で出力します。各値の役割は次のとおりです。

box-shadow: [inset] <offset-x> <offset-y> <blur-radius> <spread-radius> <color>;
値ツール上の項目・範囲意味
offset-x横方向 (X) −100〜100px正で右、負で左に影をずらします
offset-y縦方向 (Y) −100〜100px正で下、負で上に影をずらします
blur-radiusぼかし (Blur) 0〜100px影の縁をぼかす半径。負の値は仕様上許可されていません
spread-radius広がり (Spread) −50〜50px影の形を全方向に拡大(正)・縮小(負)します
color影の色 + 不透明度 0〜100%16進カラーを r, g, b に分解し rgba(r, g, b, a) で出力します
inset内側影 (Inset) スイッチオンで先頭に inset が付き、影が要素の内側に描かれます

CSS の仕様上、blur-radius と spread-radius は省略可能(省略時は 0)ですが、このツールは読み替えの手間を減らすため常に4つの長さを出力します。 値の正式な定義は MDN の box-shadow および W3C の CSS Backgrounds and Borders Module Level 3 を参照してください。 同仕様では、ぼかしの結果は「標準偏差が blur-radius の半分のガウスぼかし」を近似するよう定められています。

DEEP DIVE

浮遊感の段階を作る値の一例と、filter: drop-shadow() との違い

UIでは「要素が画面からどれだけ浮いているか」を影の大きさで段階的に表現することがあります。以下はこのツールの範囲内で作れる段階の一例です(特定のデザインガイドラインの公式値ではなく、本ページ独自の目安です)。

段階(一例)X / Y / Blur / Spread不透明度生成されるコード
わずかに浮く0 / 1 / 3 / 012%box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
カード0 / 4 / 12 / 015%box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.15);
ドロップダウン0 / 8 / 24 / −420%box-shadow: 0px 8px 24px -4px rgba(0, 0, 0, 0.2);
モーダル0 / 16 / 48 / −825%box-shadow: 0px 16px 48px -8px rgba(0, 0, 0, 0.25);

浮く高さが増すほど Y と Blur を大きく、Spread を負にして左右へのはみ出しを抑える、という考え方で段階を作っています。 実際の値は背景の明るさや要素の大きさによって見え方が変わるため、上の表を出発点にプレビューで調整してください。

なお、似た効果を持つ filter: drop-shadow() は、要素の矩形ではなく「描画されたピクセルの不透明部分の輪郭」に沿って影を付けます。 透過PNGや切り抜き画像、clip-path で形を切った要素に影を付けたい場合は drop-shadow() が適しています。 一方、drop-shadow() には spread-radius と inset が無く、複数の影はフィルター関数を重ねて指定する形になります。 このツールが扱うのは box-shadow のみで、矩形(角丸を含む)の要素に影を落とす用途を想定しています。 drop-shadow() の仕様は MDN の drop-shadow() を参照してください。

実際の使用例

初期値のソフトシャドウ

ツールを開いた直後の状態です。黒を不透明度30%にした影を右下に落とし、20pxのぼかしで縁を柔らかくしています。

INPUT

横方向: 10px / 縦方向: 10px
ぼかし: 20px / 広がり: 0px
影の色: #000000 / 不透明度: 30%
Inset: オフ

OUTPUT

box-shadow: 10px 10px 20px 0px rgba(0, 0, 0, 0.3);

ぼかし無しのハードシャドウ

Blur を 0 にすると縁のくっきりした影になります。不透明度を 100% にすると rgba の第4引数は 1 になります。

INPUT

横方向: 6px / 縦方向: 6px
ぼかし: 0px / 広がり: 0px
影の色: #000000 / 不透明度: 100%
Inset: オフ

OUTPUT

box-shadow: 6px 6px 0px 0px rgba(0, 0, 0, 1);

青みを帯びた内側影

Inset をオンにし、ネイビー系(#1e3a8a)を選んだ例です。16進の #1e3a8a は r=30, g=58, b=138 に分解され、rgba() に変換されます。

INPUT

横方向: 0px / 縦方向: 4px
ぼかし: 12px / 広がり: −2px
影の色: #1e3a8a / 不透明度: 25%
Inset: オン

OUTPUT

box-shadow: inset 0px 4px 12px -2px rgba(30, 58, 138, 0.25);

よくある質問

複数の影を重ねることはできますか?

このツールが生成するのは単一の影だけです。box-shadow はカンマ区切りで複数の影を並べられるので、重ねたい場合は生成した値をそれぞれコピーし、「box-shadow: 影1, 影2;」の形に自分で結合してください。先に書いた影ほど手前に描画され、後ろの影は前の影に隠れます。

生成されるコードの色はなぜ rgba() 形式なのですか?

カラーピッカーが返す16進カラー(#000000 など)を r, g, b の3成分に分解し、不透明度スライダーの値を第4引数にして rgba(0, 0, 0, 0.3) のような形に組み立てているためです。影は下地の色に半透明で重なるのが自然に見えるため、不透明度を独立して扱える rgba() を出力形式にしています。#RRGGBBAA や hsl() での出力には対応していません。

Blur(ぼかし)と Spread(広がり)は何が違いますか?

Spread は影の形そのものを指定した px だけ全方向に拡大(負なら縮小)する値で、輪郭ははっきりしたままです。Blur はその輪郭をガウスぼかしで柔らかくする値で、大きいほど影の縁が広く薄く溶けていきます。Blur を 0 にすると縁がくっきりした「ベタ影」になり、Spread を負にすると要素より小さい影が作れるため、下方向にだけ影を出したいときなどに使います。

オフセットを 0 にしても影が見えないのはなぜですか?

X・Y・Blur・Spread がすべて 0 だと、影は要素の真下に同じ大きさで描かれるため要素自身に完全に隠れ、画面上には現れません。Blur か Spread のどちらかを正の値にすると要素の外側にはみ出す部分ができて影が見えるようになります。逆に「全方向に均等な影」を作りたい場合は、オフセットを 0 にして Blur と Spread だけで調整するのが基本です。

inset(内側影)はどんな場面で使いますか?

inset を付けると影が要素の枠線の内側に描かれ、要素がくぼんで見える表現になります。押し込まれたボタン、入力欄のフォーカス表現、カードの内側にわずかな陰影を付けるといった用途が代表的です。inset の影は要素の背景の上・内容の下に描かれるため、テキストや画像が隠れることはありません。オフセットの正負も反転して見え、X・Y を正にすると左上側の縁に影が寄ります。

影が要素からはみ出さない・切れてしまうのはなぜですか?

box-shadow は要素のボックスの外側に描かれますが、レイアウト上の幅や高さには含まれません。そのため親要素に overflow: hidden や overflow: auto が指定されていると、親の境界で影が切り取られます。親に余白(padding)を持たせるか、overflow の指定を見直してください。また、影は要素の border-radius に沿って描かれるため、角丸の要素では影も同じ丸みになります。

大きな Blur や多数の影はパフォーマンスに影響しますか?

ぼかし処理は影の面積と Blur 半径に応じた計算を必要とするため、Blur 値が大きい影や、カンマ区切りで多数重ねた影を多くの要素に付けると、スクロールやアニメーション時の再描画コストが上がる場合があります。特にホバー時に box-shadow を transition で変化させる場合は、影の値そのものをアニメーションさせるより、影付きの疑似要素の opacity を変える方法が負荷を抑えやすいとされています。

役立つTips

自然な影は「Y を X より大きく」

光源が上にある前提で描くと、影は下方向に長く落ちます。X を 0〜数px、Y をその2倍前後、Blur を Y の2〜3倍程度にすると、多くのUIで違和感のない影になります。

不透明度は色より先に調整する

影は真っ黒ではなく「黒を薄くした色」がなじみやすい傾向があります。まず不透明度を 10〜30% 程度に下げてから、必要なら背景の色相に寄せた色を選ぶと、浮いた印象になりにくくなります。

Spread を負にして下だけに影を出す

X 0px / Y 8px / Blur 16px / Spread −4px のように Spread を負にすると、左右と上にはみ出す影が削られ、下方向にだけ影が残ります。ヘッダーやカードの下端に薄い影を付けたいときに便利です。

コピー後は貼り付け先の overflow を確認

生成したコードを貼っても影が見えない場合、親要素の overflow: hidden で切られていることがよくあります。影は要素の外側に描かれるため、親側に余白が必要です。

関連ツール