カテゴリ: CSS 更新日: 2026/09/20

CSSのbox-shadowで立体的なボックスデザインを作る方法!初心者でもわかる完全ガイド

box-shadowで立体的なボックスデザインを作る方法
box-shadowで立体的なボックスデザインを作る方法

先生と生徒の会話形式で理解しよう

生徒

「先生!ウェブサイトで立体的に見えるボックスがありますけど、どうやって作るんですか?」

先生

「あれはCSSのbox-shadowというプロパティを使って作るんですよ。とても簡単に影(シャドウ)をつけることができます。」

生徒

「影をつけるだけで立体的に見えるんですか?」

先生

「そうなんです。ほんの少しの設定で、ふんわり浮かんだようなボックスが作れますよ。さっそくやってみましょう!」

1. box-shadowとは?CSSで影をつける基本

1. box-shadowとは?CSSで影をつける基本
1. box-shadowとは?CSSで影をつける基本

CSSのbox-shadow(ボックスシャドウ)とは、ウェブページ上の画像やテキストボックス、ボタンなどの「要素」に対して、自由自在に影(シャドウ)を付けることができるプロパティです。通常、ウェブ画面は平面(2D)ですが、この影を加えることで、まるで紙の上にカードが置かれているような「奥行き」や「リアリティ」を演出できます。

最近のウェブデザイン(Googleの提唱するマテリアルデザインなど)では、この影を使って「どの要素が重要か」「どのボタンが押せるのか」を直感的にユーザーへ伝える手法が主流です。プログラミングが初めての方でも、たった1行のコードを追加するだけで、サイトの見た目を一気にプロっぽく仕上げることができます。

初心者向けポイント:影はただ暗くするだけでなく、「要素が浮き上がっている距離」を表現するために使います。影が大きく、ぼけているほど、その要素は画面から高く浮いているように見えますよ!


<style>
.sample-box {
    width: 200px;
    height: 100px;
    background-color: #ffffff;
    border: 1px solid #eeeeee;
    /* 右に5px、下に5px、ぼかし10px、影の色はグレー */
    box-shadow: 5px 5px 10px #888888;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 20px;
}
</style>

<div class="sample-box">
    影があるボックス
</div>
ブラウザ表示

上のサンプルを見てみましょう。白い四角形にグレーの影がつくことで、背景から少し浮き出して見えませんか?これがbox-shadowの魔法です。影の向きや色を変えるだけで、優しく上品な雰囲気から、力強くクールな印象まで、サイトの表情を自由に変えることが可能になります。

2. box-shadowの基本構文を覚えよう

2. box-shadowの基本構文を覚えよう
2. box-shadowの基本構文を覚えよう

CSSで要素に影をつける「box-shadow」は、一見難しそうに見えますが、実は「影をどの方向に、どれくらいぼかして、何色にするか」を順番に指定するだけです。 初心者の方でも直感的に理解できるように、まずは基本の書き方(構文)を詳しく見ていきましょう。

基本の書き方:
box-shadow: 水平の距離 垂直の距離 ぼかしの大きさ 広がりの大きさ 色;

それぞれの値には、次のような役割があります。プログラミング未経験の方は、まず「水平」と「垂直」の2つから調整してみるのがコツです。

  • 水平の距離:影を右または左に動かします。プラス(5pxなど)で右、マイナス(-5pxなど)で左に移動します。
  • 垂直の距離:影を下または上に動かします。プラスで下、マイナスで上に移動します。
  • ぼかしの大きさ:影の縁をどれくらい「ふわっ」とさせるかです。数値が大きくなるほど、影が薄く広がり、柔らかい印象になります。
  • 広がりの大きさ:影そのもののサイズを大きくしたり小さくしたりします。省略することも可能です。
  • 色:影の色を指定します。rgba(0, 0, 0, 0.3)のように透明度を指定すると、より自然でプロっぽい影になります。

【実践】シンプルな影を作ってみよう

まずは、もっともよく使われる「右下に少しだけぼかした影」を付けてみます。 HTMLのdivという箱に対して、CSSで影のルールを適用する簡単なサンプルです。


<style>
.sample-box {
    width: 150px;
    height: 100px;
    background-color: #fff;
    border: 1px solid #ddd;
    display: flex;
    align-items: center;
    justify-content: center;
    /* 右に10px、下に10px、ぼかし15px、色は薄いグレー */
    box-shadow: 10px 10px 15px rgba(0, 0, 0, 0.2);
}
</style>

<div class="sample-box">
    影がついた箱
</div>
ブラウザ表示

このように、数値を変えるだけで「浮き上がっているようなデザイン」や「立体的なボタン」を簡単に作ることができます。 基本の5つの項目を意識しながら、数値を少しずつ変えて試してみてください。

3. 実際にbox-shadowを使ってみよう

3. 実際にbox-shadowを使ってみよう
3. 実際にbox-shadowを使ってみよう

CSSのbox-shadowプロパティを使えば、画像加工ソフトを使わなくても、コード一行でWebサイトのパーツに奥行きと立体感を与えることができます。まずは、プログラミング初心者の方でもすぐに試せる、最もスタンダードな「外側に影をつける」方法から見ていきましょう。


<style>
    /* 影をつけるボックスのスタイル */
    .box-basic {
        width: 200px;
        height: 100px;
        background-color: #ffffff;
        border: 1px solid #eeeeee;
        /* 右に10px、下に10px、ぼかし10px、色は薄いグレー */
        box-shadow: 10px 10px 10px #aaaaaa;
        /* 見やすくするための余白設定 */
        display: flex;
        align-items: center;
        justify-content: center;
        margin: 20px;
    }
</style>

<div class="box-basic">基本的な影</div>
ブラウザ表示

このコードの肝となる box-shadow: 10px 10px 10px #aaa; という記述には、左から順番に4つの役割があります。

  • 1つ目の数値(10px):影を「右」にずらす距離(水平方向)
  • 2つ目の数値(10px):影を「下」にずらす距離(垂直方向)
  • 3つ目の数値(10px):影の「ぼかし」具合。数値が大きいほど柔らかい影になります
  • 最後(#aaa):影の色。最初は薄めのグレーを指定すると自然に見えます

もし影を左や上に出したい場合は、-10px -10px のようにマイナスの数値を指定するだけです。まずはこの4つの値を少しずつ書き換えて、影がどのように変化するかをブラウザで確認してみるのが、上達への一番の近道ですよ。

4. 柔らかい影と強い影を作り分ける

4. 柔らかい影と強い影を作り分ける
4. 柔らかい影と強い影を作り分ける

CSSのbox-shadowを使えば、影の「ぼかし具合」や「色の濃さ」を自由に操ることができます。初心者の方がまず押さえたいポイントは、「広がる範囲(ぼかし)」と「透明度」のバランスです。この2つを調整するだけで、デザインの印象は劇的に変わります。

例えば、モダンで清潔感のあるデザインには「ふんわりとした柔らかい影」、ボタンの立体感を強調したいときや、少しレトロな雰囲気を出したいときには「くっきりした強い影」がよく使われます。実際のコードでその違いを比較してみましょう。


<style>
    .box {
        width: 200px;
        height: 100px;
        background-color: #ffffff;
        display: flex;
        align-items: center;
        justify-content: center;
        margin-bottom: 30px;
        border-radius: 8px;
    }

    /* 柔らかい影:ぼかし距離を大きくし、透明度を薄くする */
    .soft-shadow {
        box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
    }

    /* 強い影:ぼかし距離を小さくし、透明度を濃くする */
    .strong-shadow {
        box-shadow: 5px 5px 0px rgba(0, 0, 0, 0.5);
    }
</style>

<div class="box soft-shadow">柔らかい影(自然)</div>
<div class="box strong-shadow">強い影(強調)</div>
ブラウザ表示

影の質感を決める「rgba」の仕組み

影の色を指定する際によく使われるのがrgba(0, 0, 0, 0.2)という書き方です。最初の3つの数字(0, 0, 0)は「黒」を指し、最後の「0.2」が透明度(アルファ値)を表しています。

  • 0に近いほど(例: 0.1):影が薄くなり、背景に溶け込むような上品な質感になります。
  • 1に近いほど(例: 0.8):影が濃くなり、要素が浮き上がっているような強い主張が生まれます。

まずは「透明度を0.1〜0.3くらい」の薄い設定にして、ぼかしの数値(px)を大きくすることから始めてみてください。それだけで、今風の洗練されたWebデザインに一歩近づきます。

5. box-shadowでふんわり浮かぶカードデザインを作ろう

5. box-shadowでふんわり浮かぶカードデザインを作ろう
5. box-shadowでふんわり浮かぶカードデザインを作ろう

最近のウェブサイトでよく目にする「カード型デザイン」。ブログの記事一覧やサービス紹介などで、情報をひとまとめにして見せる際によく使われる手法です。 このカードデザインをグッと洗練させる秘訣が、CSSのbox-shadow(ボックス・シャドウ)プロパティです。

ただ影をつけるだけでなく、現実の世界と同じように「光がどこから当たっているか」を意識して、薄く、やわらかい影を落とすことで、ユーザーが自然とクリックしたくなるような「浮遊感」を演出できます。 プログラミング未経験の方でも、数行のコードを追加するだけで、プロのような「ふんわり浮かぶカード」を簡単に作ることができます。


<style>
.card-container {
    background-color: #f8f9fa; /* 背景色 */
    padding: 50px;
    display: flex;
    justify-content: center;
}

.card-shadow {
    width: 300px;
    padding: 24px;
    background-color: #ffffff;
    border-radius: 12px; /* 角を丸くして柔らかい印象に */
    /* 影の設定:右に0px、下に10px、ぼかし30px、透明度0.1の黒 */
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.1);
    transition: transform 0.3s ease; /* 動きをなめらかにする */
}

.card-shadow:hover {
    transform: translateY(-5px); /* マウスを乗せた時に少し上に浮かす */
    box-shadow: 0 15px 40px rgba(0, 0, 0, 0.15); /* 影も少し強くする */
}

.card-image {
    width: 100%;
    height: auto;
    border-radius: 8px;
    margin-bottom: 15px;
}

.card-title {
    font-size: 1.25rem;
    font-weight: bold;
    margin-bottom: 10px;
    color: #333;
}

.card-text {
    font-size: 0.95rem;
    color: #666;
    line-height: 1.6;
}
</style>

<div class="card-container">
    <div class="card-shadow">
        <img src="/img/sample150-100.jpg" alt="サンプル画像" class="card-image">
        <div class="card-title">おすすめの旅行プラン</div>
        <p class="card-text">box-shadowを使うだけで、平面的な画面に立体感が生まれ、ユーザーの目を引くデザインになります。</p>
    </div>
</div>
ブラウザ表示

上記のサンプルでは、box-shadowの「ぼかし(数値の3番目)」を大きめに設定することで、影が境界線からじわっと広がるようにしています。 これにより、不自然な黒い線ではなく、本物の光が当たっているような優しい質感が生まれます。

さらに、:hover(マウスを乗せた時)に影を少し強くし、位置を上に動かす設定を加えることで、「いまこのボタンを選択している」という直感的な操作感をユーザーに与えることができます。 影の距離や透明度(rgbaの最後の数値)を少しずつ変えて、自分のサイトにぴったりの「浮き上がり具合」を探してみてください。

6. box-shadowを使った複数の影や内側の影

6. box-shadowを使った複数の影や内側の影
6. box-shadowを使った複数の影や内側の影

影の設定は1つだけではありません。CSSのbox-shadowは、カンマで区切ることで「複数の影」を同時に指定できます。また、通常は外側に広がる影を、内側に向けて表示させることも可能です。

これをマスターすると、ボタンにリアルな厚みを持たせたり、要素が「へこんでいる」ような視覚効果を与えたりと、デザインの幅が劇的に広がります。プログラミング初心者の方でも、値の役割さえ覚えれば簡単に使いこなせます。


<style>
/* 1. 複数の影を重ねる(ネオモフィズム風) */
.multi-shadow {
    width: 200px;
    height: 100px;
    background-color: #f0f0f0;
    border-radius: 10px;
    /* 右下に暗い影、左上に白い光を配置して立体感を出す */
    box-shadow: 5px 5px 10px #d1d1d1, -5px -5px 10px #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 30px;
}

/* 2. 内側に影をつける(くぼみの表現) */
.inner-shadow {
    width: 200px;
    height: 100px;
    background-color: #f0f0f0;
    border-radius: 10px;
    /* insetキーワードで影を内側へ */
    box-shadow: inset 5px 5px 10px rgba(0,0,0,0.1);
    display: flex;
    align-items: center;
    justify-content: center;
}
</style>

<div class="multi-shadow">浮き出たデザイン</div>
<div class="inner-shadow">へこんだデザイン</div>
ブラウザ表示

複数指定とinsetのポイント

1つ目の例(複数の影)では、正の値の影(右下)と負の値の影(左上)を組み合わせることで、一方向から光が当たっているような「浮き出し効果」を演出しています。これはモダンなUIデザインでよく使われる手法です。

2つ目の例で使っているinsetという言葉は、英語で「挿入」や「埋め込み」を意味します。これを指定するだけで、影が枠線の内側に発生し、まるで紙がくり抜かれたような「くぼみ(インセット)表現」になります。入力フォームのフォーカス時や、ボタンが押された時の演出に最適です。

7. box-shadowでボタンを立体的にする応用例

7. box-shadowでボタンを立体的にする応用例
7. box-shadowでボタンを立体的にする応用例

ボタンにもbox-shadowを使うと、押せるように見せる効果があります。サイトの印象を大きく変えるので、ボタンのデザインにも活用してみましょう。


<style>
.button-shadow {
    padding: 10px 20px;
    background-color: #007bff;
    color: white;
    border: none;
    border-radius: 5px;
    box-shadow: 0 5px 0 #0056b3;
    cursor: pointer;
}
.button-shadow:active {
    box-shadow: 0 2px 0 #003f7f;
    transform: translateY(3px);
}
</style>

<button class="button-shadow">立体ボタン</button>
ブラウザ表示

ボタンに影をつけることで、実際に押し込めるような立体感を再現しています。クリック時に少し下に動くようにすることで、よりリアルなボタンに見えます。

8. まとめ:box-shadowでデザインの印象を変えよう

8. まとめ:box-shadowでデザインの印象を変えよう
8. まとめ:box-shadowでデザインの印象を変えよう

box-shadowはCSSの中でもとても便利なプロパティです。難しいコードを使わなくても、影の設定だけで立体的でプロっぽいデザインを作ることができます。影の強さ・色・ぼかし・位置を調整しながら、自分の理想のデザインを探してみてください。

(この記事の本文文字数:全角 約2824文字)

2026年最新 スキルアップ・実践セミナー

【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー

「魅せる力」をコードで実現。CSS3でモダンWebデザインのプロトタイピングを。

本講座では、単に色を変えるだけではなく、「ユーザーを迷わせないUIデザイン」と「崩れないレイアウト設計」の本質を学びます。最新のCSS3とモダンなレイアウト手法を通じて、プロの現場で通用する「美しさと機能性を両立した実装力」を最短距離で習得します。

具体的なワークショップ内容と環境

【つくるもの】
HTMLで作成した骨組みに対し、商用サイトでも採用される「スタイリッシュなカード型UI」や「レスポンシブなナビゲーション」を構築します。色の選定基準や余白(ホワイトスペース)の黄金比など、デザインの理論をコードに落とし込む工程を体験してください。

【開発環境】
フロントエンド開発の標準であるVisual Studio Code (VS Code)を継続使用。CSSの記述を効率化するプラグインや、ブラウザのデベロッパーツール(検証機能)を駆使して、リアルタイムでデザインを微調整するプロのワークフローを再現します。

この60分で得られる3つの技術資産

1. 現代のデファクトスタンダード「Flexbox」

要素の横並びや中央揃えを自由自在に操り、どんなデバイスでも崩れないレスポンシブな配置術を完全理解します。

2. メンテナンス性を高めるCSS設計の基礎

後から修正しやすい「壊れにくいコード」の書き方を伝授。プロの現場で必須となる命名規則の考え方を学びます。

3. パフォーマンスと美しさの両立

画像の最適化や軽量な装飾技法など、ページの表示速度を落とさずに高級感のある演出を行うテクニックを習得します。

※本講座は、HTMLの基礎を終えた後のステップアップ講座です。Webデザイナー、UIデザイナー、フロントエンドエンジニアへの道を切り開く「魅せる技術」を、モクモク独自のパーソナル指導で着実に定着させます。

【60分集中】Flexboxを完全攻略!最新CSS3で「崩れない・迷わない」モダンUI構築セミナー

リラックスしながら、学ぶことが大切です。しっかりと基礎を理解しましょう!

各回少人数・マンツーマン形式で徹底サポート

このセミナーの詳細・お申し込みはこちら
カテゴリの一覧へ
新着記事
New1
HTML
HTMLマルチデバイス設計で欠かせないアクセシビリティ配慮を徹底解説!初心者でもわかる実践ポイント
New2
HTML
HTMLのvideoタグでpreload属性を使う方法!動画の読み込み最適化を初心者向けに解説
New3
Bootstrap
Bootstrap Iconsとは?特徴・導入方法・Font Awesomeとの違いを初心者向けに完全解説
New4
Bootstrap
BootstrapのSass変数を完全ガイド!初心者でもわかる色・余白・フォント設定
人気記事
No.1
Java&Spring記事人気No1
HTML
HTMLのimgタグの書き方|src・altの必須属性を初心者向けにやさしく整理
No.2
Java&Spring記事人気No2
CSS
CSSのnth-child()を完全攻略!特定の順番にスタイルを当てる方法
No.3
Java&Spring記事人気No3
HTML
HTML inputタグとは?フォーム入力を担う基本要素を初心者向けに完全解説
No.4
Java&Spring記事人気No4
CSS
ナビゲーションバーの作り方!初心者でもわかるHTMLとCSSの基本構成とスタイル装飾
No.5
Java&Spring記事人気No5
CSS
CSSのpositionプロパティ完全ガイド!初心者でもわかる表示と位置指定
No.6
Java&Spring記事人気No6
CSS
CSSで要素のサイズを自動調整!autoとfit-contentの使い方
No.7
Java&Spring記事人気No7
HTML
HTML input type="email"の入力チェック仕様と注意点を徹底解説 初心者向け完全ガイド
No.8
Java&Spring記事人気No8
CSS
ハンバーガーメニューの表示切替を完全ガイド!スマホ対応のレスポンシブCSS