首先定義一個
<p class="speech"></p>
先給外層的容器新增樣式:
p.speech{
position: relative;
width: 200px;
height: 100px;
text-align: center;
line-height: 100px;
background-color: #fff;
border: 8px solid #666;
-webkit-border-radius: 30px;
-moz-border-radius: 30px;
border-radius: 30px;
-webkit-box-shadow: 2px 2px 4px #888;
-moz-box-shadow: 2px 2px 4px #888;
box-shadow: 2px 2px 4px #888;
}
沒有什麼特別複雜的,主要的核心就在postion:relative,用來定位對話浮層的。我們還需要一些Mozilla和webkit的屬性來完成圓角和陰影,IE8以下的瀏覽器看不到這些屬性,只是顯示一個框,不影響總體的效果。
我們現在需要建立對話浮層下面的那個三角形的指向標誌了。不使用圖片,我們使用CSS邊框來完成這個效果。看看下面這個用不同顏色邊框完成的效果。
我們把高度和寬度減少到0px,然後給邊框使用不同的大小,看看效果:
為了最後能做成指示標誌的樣子,我們把上邊距和左邊距設定為solid,下邊距和右邊距設定為透明:
但是我們把這個放哪呢?還好,我們可以使用CSS的偽類:before和:after來生成,所以:
p.speech:before{
content: ' ';
position: absolute;
width: 0;
height: 0;
left: 30px;
top: 100px;
border: 25px solid;
border-color: #666 transparent transparent #666;
}
現在三角形的標識就定位在我們的氣泡下面了。另外,不要費事去考慮這個元素的陰影,他會定位在透明邊界的旁邊,而不是看到的圖形的旁邊。
我們還需要移除三角形的一部分。我們可以在裡面放置一個白色的小三角形來達到這個效果。
p.speech:after{
content: ' ';
position: absolute;
width: 0;
height: 0;
left: 38px;
top: 100px;
border: 15px solid;
border-color: #fff transparent transparent #fff;
}
我們的不使用圖片的對話氣泡就完成了:
另外,我們還可以使用:before和:after偽類來做很多其他的事情,比如,一個思考氣泡也可以通過這樣辦法完成:
首先也是建一個
<p class="thought">I think...</p>
css程式碼:
p.thought{
position: relative;
width: 130px;
height: 100px;
text-align: center;
line-height: 100px;
background-color: #fff;
border: 8px solid #666;
-webkit-border-radius: 58px;
-moz-border-radius: 58px;
border-radius: 58px;
-webkit-box-shadow: 2px 2px 4px #888;
-moz-box-shadow: 2px 2px 4px #888;
box-shadow: 2px 2px 4px #888;
}
p.thought:before, p.thought:after{
content: '';
position: absolute;
left: 10px;
top: 70px;
width: 40px;
height: 40px;
background-color: #fff;
border: 8px solid #666;
-webkit-border-radius: 28px;
-moz-border-radius: 28px;
border-radius: 28px;
z-index:5;
}
p.thought:after{
position: absolute;
width: 20px;
height: 20px;
left: 5px;
top: 100px;
-webkit-border-radius: 18px;
-moz-border-radius: 18px;
border-radius: 18px;
z-index:6;
}
最新實現效果: