これはまだいくつかの作業が必要ですが、ここでは一般的な考え方です:
は、擬似を使用してください45°回転させて、それにスタイリングを適用します:
.arrow {
bottom: -25px;
left: 30px;
width: 40px;
height: 40px;
position: absolute;
overflow: hidden;
}
.arrow:after {
content: ' ';
display: block;
background: red;
width: 20px;
height: 20px;
transform: rotate(45deg);
position: absolute;
top: -19px;
left: 3px;
background: #999;
border: 5px solid rgba(0, 0, 0, 0.2);
background-clip: padding-box;
}
ここでフィドルです:http://jsfiddle.net/yZ3vB/
これに伴う問題は国境がエッジによってそれが暗くなって、オーバーラップしていることです。
これはおそらく別の要素を追加することで解決できます。
更新:はい!ここに行く:http://jsfiddle.net/sJFTT/
アップデート2:あなたもその要素を追加する必要はありません。あなたは、メインボックスから擬似要素を使用することができます。
.ui-overlay-content:after {
content: ' ';
border-width: 13px;
border-color: #999 transparent transparent;
border-style: solid;
bottom: -10px;
left: 30px;
width: 0;
height: 0;
position: absolute;
}
ここでフィドルです:http://jsfiddle.net/6v9nV/
がアップデート3:実際には、あなただけの単一の要素でこのすべてを行うことができますと両方の擬似要素を使用することで、変換なし。 - before
とafter
:
.speech-bubble {
background: #999;
background: linear-gradient(top, #444 0%,#999 100%);
background-clip: padding-box;
border: 5px solid rgba(0, 0, 0, 0.2);
padding: 20px;
width: 200px;
height: 100px;
position: relative;
}
.speech-bubble:before{
content: ' ';
border-color: rgba(0, 0, 0, 0.2) transparent transparent;
border-style: solid;
border-width: 17px;
position: absolute;
bottom: -39px;
left: 16px;
}
.speech-bubble:after{
content: ' ';
border-color: #999 transparent transparent;
border-style: solid;
border-width: 13px;
position: absolute;
bottom: -26px;
left: 20px;
}
P.S.:ここ
0はフィドルですプロダクションのベンダープレフィックスを忘れないでください!
私はモバイルサファリの解決策の後です。他のブラウザを考慮しない。 – calebo
関連する質問:透明な矢印:http://stackoverflow.com/questions/23758922/transparent-arrow-triangle –