CSS box-shadowプロパティの使い方

2024-04-02

CSSで要素の片側に影を付ける方法

単一の影

要素の片側に影を付ける最も簡単な方法は、box-shadow プロパティの最初の4つの値を指定することです。これらの値は、以下の順番で指定します。

  • オフセットX: 影の水平方向の位置
  • ぼかし: 影のぼかし量
  • 拡散: 影の拡散量
  • : 影の色

例えば、以下のコードは、要素の右側に5px離れた、ぼかし量10pxの影を付けます。

.element {
  box-shadow: 5px 0 10px rgba(0, 0, 0, 0.5);
}

複数の影を付ける場合は、box-shadow プロパティに複数の値をカンマ区切りで指定できます。

.element {
  box-shadow: 5px 0 10px rgba(0, 0, 0, 0.5), 0 10px 5px rgba(0, 0, 0, 0.5);
}

影の拡散

box-shadow プロパティの4番目の値は、影の拡散量を指定します。拡散量を0にすると、影はシャープになります。拡散量を大きくすると、影はぼやけます。

.element {
  box-shadow: 5px 0 10px 5px rgba(0, 0, 0, 0.5);
}

影の色

box-shadow プロパティの5番目の値は、影の色を指定します。色は、RGBA形式で指定できます。

.element {
  box-shadow: 5px 0 10px rgba(128, 128, 128, 0.5);
}

その他のオプション

box-shadow プロパティには、他にも様々なオプションがあります。詳細は、以下のサイトを参照してください。

補足

  • box-shadow プロパティは、すべてのブラウザでサポートされているわけではありません。古いブラウザでは、影が表示されない場合があります。
  • box-shadow プロパティは、要素のレンダリングに時間がかかる場合があります。パフォーマンスが気になる場合は、影の使用を控えめにする必要があります。

以下のコードは、要素の四方に影を付ける例です。

<div class="element">
  これは要素です。
</div>
.element {
  box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5);
}

このコードを実行すると、以下のようになります。

box-shadow プロパティを使って、要素の片側に影を付けることができます。影の位置、ぼかし、色などを指定して、様々な効果を出すことができます。




単一の影

<div class="element">
  これは要素です。
</div>
.element {
  box-shadow: 5px 0 10px rgba(0, 0, 0, 0.5);
}

複数の影

<div class="element">
  これは要素です。
</div>
.element {
  box-shadow: 5px 0 10px rgba(0, 0, 0, 0.5), 0 10px 5px rgba(0, 0, 0, 0.5);
}

影の拡散

<div class="element">
  これは要素です。
</div>
.element {
  box-shadow: 5px 0 10px 5px rgba(0, 0, 0, 0.5);
}

影の色

<div class="element">
  これは要素です。
</div>
.element {
  box-shadow: 5px 0 10px rgba(128, 128, 128, 0.5);
}
  • 上記のコードは、あくまでも例です。必要に応じて、影の位置、ぼかし、色などを調整してください。



CSSで要素の片側に影を付けるその他の方法

inset を使った影

box-shadow プロパティの inset キーワードを使うと、要素の内側に影を付けることができます。

.element {
  box-shadow: inset 5px 0 10px rgba(0, 0, 0, 0.5);
}

疑似要素を使った影

::before::after などの疑似要素を使って、影を付けることができます。

.element {
  position: relative;

  &::after {
    content: "";
    position: absolute;
    top: 0;
    right: 5px;
    bottom: 0;
    width: 10px;
    background: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0));
  }
}

SVG フィルターを使って、影を付けることができます。

<div class="element">
  これは要素です。

  <svg>
    <filter id="shadow">
      <feGaussianBlur in="SourceGraphic" stdDeviation="10" />
      <feOffset dx="5" dy="0" />
      <feComposite in2="SourceGraphic" operator="over" />
    </filter>
  </svg>
</div>
.element {
  filter: url(#shadow);
}

box-shadow プロパティ以外にも、要素の片側に影を付ける方法はいくつかあります。それぞれの方法にはメリットとデメリットがあるので、目的に合った方法を選択してください。


css shadow box-shadow


インラインスタイルで :hover を実現!ボタンをマウスオーバーで赤くする

HTMLとCSSを用いて、要素にマウスオーバーした際に :hover と同様のスタイル変化を、インラインスタイルのみで実現する方法を紹介します。方法以下の方法があります。style 属性と JavaScript を使用CSS の @media クエリと JavaScript を使用...


CSS position、transform、margin: auto、JavaScriptを使って画像を中央に配置

CSSの text-align プロパティを使うこれは、最も簡単な方法です。親要素の text-align プロパティを center に設定することで、その要素内のすべてのテキストと画像が水平方向に中央揃えされます。画像の margin プロパティを auto に設定することで、画像の左右に自動的に余白が設定され、水平方向に中央に配置されます。...


CSSの擬似要素:beforeと:afterを駆使して、スタイリッシュなWebデザインを構築しよう! - 基礎から応用まで徹底解説

CSS では、以下の構文を使用して :before と after を定義します。Sass は、CSS をより記述的かつ効率的にするための拡張言語です。 Sass では、& (アンパサンド) を使用して親セレクタを参照することができます。 これにより、:before と :after のスタイルを親セレクタと一致させることが容易になります。...


CSS、Twitter Bootstrap、HTML を使ってボタンをフル幅にする方法

ボタンをフル幅(画面横幅いっぱい)にしたい場合、いくつかの方法があります。以下では、CSS、Twitter Bootstrap、HTML をそれぞれ使った方法を詳しく解説します。CSS を使う方法これは最もシンプルな方法で、HTML に直接 CSS コードを追加することで実現できます。以下のコード例をご覧ください。...


グリッドシステムを使って Bootstrap NavBar の項目を配置する方法

このNavBarの項目を左寄せ、中央寄せ、右寄せに配置するには、いくつかの方法があります。Bootstrapのグリッドシステムを利用することで、簡単に項目を配置できます。左寄せ上記のコードでは、mr-auto クラスを navbar-nav 要素に追加することで、左側に配置しています。...