CSS3效果:實現氣泡效果


首先定義一個

<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;
}

最新實現效果:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM