[CSS]さまざまなデザインのドロップシャドウを適用するチュートリアル
Post on:2010年12月28日
sponsorsr
CSS2の疑似要素を使用することで、HTMLを汚さずに、さまざまなデザインのドロップシャドウを簡単に適用することができます。
その美しいドロップシャドウのスタイルを適用するチュートリアルを紹介します。
画像の使用は一切ありません。

CSS drop-shadows without images
デモページ
[ad#ad-2]
デモの対応ブラウザは:before, :after, box-shadowなどを使用しているため、Firefox 3.5+, Chrome 5+, Safari 5+, Opera 10.6+ です。
下記に、デモにある5つのドロップシャドウを紹介します。
HTML
HTMLはdiv要素にスタイルシートを適用します。
5つのドロップシャドウはclass名を変更するだけです。
<div class="drop-shadow round"> <h1>CSS drop-shadows without images</h1> <p>No extra markup, fluid, all modern browsers</p> </div>
CSS:共通
全バリエーションに利用するベーシックなスタイルシートです。
全てのclassに「drop-shadow」を指定します。
.drop-shadow {
position:relative;
width:45%;
padding:1em;
margin:2em auto 5em;
background:#fff;
-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 60px rgba(0, 0, 0, 0.1) inset;
-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
}
.drop-shadow:before,
.drop-shadow:after {
content:"";
position:absolute;
z-index:-2;
bottom:15px;
left:10px;
width:50%;
height:20%;
}
.drop-shadow:after{
right:10px;
left:auto;
}
[ad#ad-2]

角のみふんわりとドロップシャドウを適用します。
HTML
<div class="drop-shadow round"></div>
CSS
.round {
-moz-border-radius:4px;
border-radius:4px;
}
.round:before,
.round:after {
max-width:300px;
-webkit-box-shadow:0 15px 10px rgba(0, 0, 0, 0.7);
-moz-box-shadow:0 15px 10px rgba(0, 0, 0, 0.7);
box-shadow:0 15px 10px rgba(0, 0, 0, 0.7);
-webkit-transform:rotate(-3deg);
-moz-transform:rotate(-3deg);
-o-transform:rotate(-3deg);
transform:rotate(-3deg);
}
.round:after {
-webkit-transform:rotate(3deg);
-moz-transform:rotate(3deg);
-o-transform:rotate(3deg);
transform:rotate(3deg);
}

カールしているようなドロップシャドウを適用します。
HTML
<div class="drop-shadow curls"></div>
CSS
.curls {
border:1px solid #efefef;
-moz-border-radius:0 0 120px 120px / 0 0 6px 6px;
border-radius:0 0 120px 120px / 0 0 6px 6px;
}
.curls:before,
.curls:after {
bottom:12px;
max-width:200px;
height:55%;
-webkit-box-shadow:0 8px 16px rgba(0, 0, 0, 0.4);
-moz-box-shadow:0 8px 16px rgba(0, 0, 0, 0.4);
box-shadow:0 8px 16px rgba(0, 0, 0, 0.4);
-webkit-transform:skew(-8deg) rotate(-4deg);
-moz-transform:skew(-8deg) rotate(-4deg);
-o-transform:skew(-8deg) rotate(-4deg);
transform:skew(-8deg) rotate(-4deg);
}
.curls:after {
-webkit-transform:skew(8deg) rotate(4deg);
-moz-transform:skew(8deg) rotate(4deg);
-o-transform:skew(8deg) rotate(4deg);
transform:skew(8deg) rotate(4deg);
}

遠近感をだしたドロップシャドウを適用します。
HTML
<div class="drop-shadow perspective"></div>
CSS
.perspective:before {
left:28px;
bottom:8px;
max-width:200px;
height:35%;
-webkit-box-shadow:-60px 5px 8px rgba(0, 0, 0, 0.4);
-moz-box-shadow:-60px 5px 8px rgba(0, 0, 0, 0.4);
box-shadow:-60px 5px 8px rgba(0, 0, 0, 0.4);
-webkit-transform:skew(50deg);
-moz-transform:skew(50deg);
-o-transform:skew(50deg);
transform:skew(50deg);
}
.perspective:after {
display:none;
}

全体を持ち上げたようなドロップシャドウを適用します。
HTML
<div class="drop-shadow raised"></div>
CSS
.raised:before {
width:auto;
right:10px;
left:10px;
bottom:0;
-webkit-box-shadow:0 8px 10px rgba(0, 0, 0, 0.5);
-moz-box-shadow:0 8px 10px rgba(0, 0, 0, 0.5);
box-shadow:0 8px 10px rgba(0, 0, 0, 0.5);
}

角のみドロップシャドウを適用し、回転させます。
HTML
<div class="drop-shadow round rotated"></div>
CSS
「round」も一緒に適用します。
.rotated {
-webkit-transform:rotate(-3deg);
-moz-transform:rotate(-3deg);
-o-transform:rotate(-3deg);
transform:rotate(-3deg);
}
.rotated *:first-child:before {
content:"";
position:absolute;
z-index:-1;
top:0;
bottom:0;
left:0;
right:0;
background:#fff;
-webkit-box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 60px rgba(0, 0, 0, 0.1) inset;
-moz-box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
box-shadow:0 1px 4px rgba(0, 0, 0, 0.3), 0 0 40px rgba(0, 0, 0, 0.1) inset;
}
sponsors











