2012/05/04

[CSS] CSSだけでつくる吹き出しデザイン:パート3 ドロップシャドウ付き(可変) CSS Speech Bubble with Drop Shadow

画像を使わずにCSSだけで吹き出しデザインを実装する方法のパート3です。今回はドロップシャドウ付きの吹き出しデザインです。ボックスシャドウは透明部分のボーダーの外側についてしまうので、三角部分の実現にボーダーは使用せず、四角を回転させて実装します。ぼかしをゼロにすることでボーダー1pxの設定も可能。:before擬似要素、:after擬似要素、Box-shadow、Transformを使用しています。以前の記事はこちらから。CSSだけでつくる吹き出しデザイン CSS Speech BubbleCSSだけでつくる吹き出しデザイン:パート2 ボーダー付き CSS Speech Bubble。

CSSサポート状況

DEMO

下中央(ぼかしなし)

吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。

上中央(ぼかしなし)

吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。

左中央(ぼかしなし)

吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。

右中央(ぼかしなし)

吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。

水平垂直距離0(ぼかし)

吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。

下方向(ぼかしなし)

吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。

HTML

  
吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
吾輩は猫である。名前はまだ無い。どこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。

CSS

/* 共通 */
.bubble {
 display:inline-block;
 position: relative;
 border-radius:5px;
}
.bubble:before {
 position: absolute;
 content: " ";
 height: 20px;
 width: 20px;
 transform: rotate(45deg);
 -webkit-transform: rotate(45deg);
 -ms-transform: rotate(45deg);
}
.bubble-inner {
 padding:1em;
 background:#fff;
 border-radius:5px;
 /* transform z-index hack */
 transform: rotate(0deg);
 -webkit-transform: rotate(0deg);
 -ms-transform: rotate(0deg);
}
.shadow, .shadow:before {
 box-shadow: 0 0 0 1px rgba(0,0,0,0.2);
 -webkit-box-shadow: 0 0 0 1px rgba(0,0,0,0.2);
 background:#fff;
}
/* 下中央(ぼかしなし) */
.bubble-bottom:before {
 bottom: -7px;
 left: 50%;
 margin-left: -10px;
}
/* 上中央(ぼかしなし) */
.bubble-top:before {
 top: -7px;
 left: 50%;
 margin-left: -10px;
}
/* 左中央(ぼかしなし) */
.bubble-left:before {
 left: -7px;
 top: 50%;
 margin-top: -10px;
}
/* 右中央(ぼかしなし) */
.bubble-right:before {
 right: -7px;
 top: 50%;
 margin-top: -10px;
}
/* 水平垂直距離0(ぼかし) */
.shadow2, .shadow2:before {
 box-shadow: 0 0 4px rgba(0,0,0,0.2);
 -webkit-box-shadow: 0 0 4px rgba(0,0,0,0.2);
 background:#fff;
}
/* 下方向(ぼかしなし) */
.shadow3 {
 box-shadow: 0 3px #ccc;
 -webkit-box-shadow: 0 3px #ccc;
 background:#fff;
}
.shadow3:before {
 box-shadow: 3px 3px #ccc;
 -webkit-box-shadow: 3px 3px #ccc;
 background:#fff;
}

0 件のコメント :

コメントを投稿