box-shadow は四角形じゃないとうまく影を設定できません。
なので吹き出し部分を filter: drop-shadow で書くことで実現しています。
現時点ではIE以外は対応しているようなので、スマホなどでは使えるかと思います。
box-shadow はこんな感じで書くことができます。
水平方向の影の距離、垂直方向の影の距離、ぼかし(負の値は使えない)、広がり(拡大、縮小)、rgbaは色と透過、insetは内側に変更。
filter: drop-shadow は、insetは対応してないようです。
box-shadow: 10px 10px; box-shadow: 10px 10px 10px rgba(0,0,0,0.4); box-shadow: 10px 10px 10px 10px rgba(0,0,0,0.4); box-shadow: 10px 10px 10px 10px rgba(0,0,0,0.4) inset;
See the Pen cssだけで影のみの吹き出しをつくる by takapen (@takapen) on CodePen.
html
test
css
p {
width: 100px;
padding: 8px 0;
font-size: 10px;
text-align: center;
line-height: 1.4;
background: #fff;
box-shadow: 0 2px 8px rgba(0,0,0,0.3);
border-radius: 4px;
position: absolute;
}
p:before {
content: "";
border-right: 15px solid transparent;
border-bottom: 10px solid #fff;
border-left: 15px solid transparent;
position: absolute;
top: -8px;
left: 50%;
transform: translate(-50%, 0);
filter: drop-shadow(0px -2px 8px rgba(0,0,0,0.3));
}
p:after {
content: "";
width: 40px;
height: 10px;
position: absolute;
top: 0px;
left: 50%;
transform: translate(-50%, 0);
background: #fff;
}