CSS
box-shadow is a CSS property that adds a shadow to an element, allowing you to specify its position, size, color, etc. It can be used to create multiple shadows, act as a border, or customize the shape using the border-radius property.
box-shadow
box-shadowは、要素に影を付けることができるプロパティの 1つです。このプロパティは、要素の周りに影を追加することができ、要素の浮き出し感や奥行き感を強調することができます。
基本構文は以下の通りです。
CSS
box-shadow: h-shadow v-shadow blur spread color inset;
それぞれの値について解説していきます。
- h-shadow
- 水平方向の影の位置を指定します。正の値は右方向、負の値は左方向に影がつきます。
- v-shadow
- 垂直方向の影の位置を指定します。正の値は下方向、負の値は上方向に影がつきます。
- blur
- 影のぼかしの程度を指定します。値が大きいほど影がぼやけます。
- spread
- 影の拡散の程度を指定します。値が正の場合は影が広がり、負の場合は縮まります。
- color
- 影の色を指定します。色名やRGB値、16進数値などで指定できます。
- inset
- オプションで、影を要素の内側に表示するか外側に表示するかを指定できます。この値を指定しない場合は、影は要素の外側に表示されます。
HTML
<div class="smp1"></div>
<div class="smp2"></div>
<div class="smp3"></div>
<div class="smp4"></div>
CSS
div {
margin: 1em;
width: 50px;
height: 50px;
background-color: azure;
}
.smp1 {
/* 4つの値を指定した場合 */
box-shadow: 5px 5px 5px 5px rgba(0, 0, 0, 0.5);
}
.smp2 {
/* 3つの値を指定した場合 */
box-shadow: 5px 5px 5px;
}
.smp3 {
/* 2つの値を指定した場合 */
box-shadow: 5px 5px;
}
.smp4 {
/* insetを指定した場合 */
box-shadow: inset 5px 5px 5px 0px rgba(0, 0, 0, 0.5);
}
長さの指定を省略すると0となり、色の指定を省略するとユーザーエージェントが選んだ色になります。
さらに、box-shadowプロパティは、次のような応用的な使い方もあります。
複数の影を指定する
box-shadowプロパティは、カンマで区切って複数の影を指定することができます。この場合、先に指定された影が要素の下に表示され、後に指定された影がさらにその下に表示されます。複数の影を使うことで、要素により多くの奥行き感を与えることができます。
HTML
<div class="smp5"></div>
CSS
.smp5 {
box-shadow: 5px 5px 5px rgba(255, 20, 20, 0.5),
10px 10px 10px rgba(20, 20, 255, 0.5);
}
ボーダーとしての利用
box-shadowプロパティを使うことで、ボーダーとしての役割も果たすことができます。この場合、insetキーワードを指定し、要素の内側に影を表示します。
HTML
<div class="smp6"></div>
CSS
.smp6 {
box-shadow: inset 0px 0px 0px 2px rgba(0, 0, 0, 0.5);
}
影の形状をカスタマイズする
box-shadowプロパティを使うことで、影の形状をカスタマイズすることができます。これには、border-radiusプロパティを使います。
HTML
<div class="smp7"></div>
CSS
.smp7 {
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
border-radius: 50%;
}
このように、border-radiusプロパティを使うことで、影の形状を丸くすることができます。この技術を使って、ボタンやアイコンなどの要素に立体感を与えることができます。
box-shadowは、要素に影をつけるための強力なプロパティです。影の位置、大きさ、色を指定することで、要素の見た目をより美しく、洗練されたものにすることができます。また、box-shadowを使うことで、要素に立体感を与えることもできます。
尚、box-shadowプロパティは、::first-letter擬似要素に適用されますが、::first-line擬似要素には適用されません。また、border-collapse:collapse;が指定された table内要素には、外側の影はつきません。
テキストに影をつける場合には、text-shadowプロパティを使用します。