CSS實(shí)現(xiàn)對(duì)話框小尾巴功能

對(duì)話框小尾巴,估計(jì)大家在實(shí)際開(kāi)發(fā)中應(yīng)該經(jīng)常遇到過(guò),省事點(diǎn)的就是叫設(shè)計(jì)小姐姐給切個(gè)帶小尾巴的背景圖,那不省事的呢?
邊框的魔法
在css3出來(lái)之前,若通過(guò)css來(lái)實(shí)現(xiàn)小尾巴效果,可能使用最多的是通過(guò)如下的hack方式:
<div class="tooltip"> <p>我是快樂(lè)的小尾巴的爸爸</p> <span class="triangle"></span> </div> .tooltip { position: relative; background-color: silver; width: 200px; height: 50px; border-radius: 0.25em; display: flex; justify-content: center; align-items: center; border:1px solid red; } .triangle { display: block; height: 0px; width: 0px; border: 10px solid transparent; border-top-color: silver; background:red; position: absolute; bottom: -20px; left: calc(50% - 10px); }
效果如下:
不設(shè)置 triangle 寬高,設(shè)置 border 10像素的透明邊框,然后設(shè)置 top 方向邊框顏色和父元素一致就可完成這樣的效果,同理,變換小尾巴箭頭方向只需要在top,bottom,left,right方向上單獨(dú)設(shè)置不同的邊框顏色即可。
這種方式是挺奇妙的,但存在以下幾個(gè)問(wèn)題:
tooltip
被咬了一口的樣式,殘缺的美~
clip-path
針對(duì)以上問(wèn)題,現(xiàn)在有了一種特別好的方式,就是通過(guò)css3新增的clip-path屬性來(lái)實(shí)現(xiàn)
clip-path屬性可以創(chuàng)建一個(gè)只有元素的部分區(qū)域可以顯示的剪切區(qū)域,區(qū)域內(nèi)的部分顯示,區(qū)域外的隱藏
css代碼如下:
.triangle { display: block; height: 20px; width: 20px; background-color: inherit; border: inherit; position: absolute; bottom: -10px; left: calc(50% - 10px); // ---關(guān)鍵代碼 start--- clip-path: polygon(0% 0%, 100% 100%, 0% 100%); transform: rotate(-45deg); // ---end--- border-radius: 0 0 0 2px; }
我們可以看到 triangle 繼承了父元素 tooltip 的邊框顏色以及背景色,同時(shí)我們還設(shè)置了小尾巴2個(gè)像素的圓角。
其中 polygon 多邊形的坐標(biāo)如下:
深綠色塊就是我們要顯示的區(qū)域,然后逆時(shí)針?lè)D(zhuǎn)45度就成了我們想要的樣式。
多么好的方式呀!
那瀏覽器兼容性如何呢?我查看了下Caniuse這個(gè)網(wǎng)站,除了老IE基本其它瀏覽器都支持,所以開(kāi)心的用起來(lái)吧!
最后提供一個(gè) sass 的mixin,參數(shù)是上下左右四個(gè)方向。
@mixin triangleMixin ($direction) { background-color: inherit; border: inherit; clip-path: polygon(0% 0%, 100% 100%, 0% 100%); @if( $direction == left ) { transform: rotate(45deg); } @else if( $direction == right ) { transform: rotate(-135deg); } @else if( $direction == down ) { transform: rotate(-45deg); } @else { transform: rotate(135deg); } }
總結(jié)
以上所述是小編給大家介紹的CSS實(shí)現(xiàn)對(duì)話框小尾巴功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)歡迎給我留言,小編會(huì)及時(shí)回復(fù)大家的!
相關(guān)文章
CSS3軟件卸載對(duì)話框代碼 根據(jù)是否卸載出現(xiàn)不同表情
這是一個(gè)對(duì)話框插件,它主要用來(lái)卸載軟件時(shí)的提示,特點(diǎn)在于,當(dāng)用戶選擇保留和卸載后,對(duì)話框中間的表情會(huì)根據(jù)用戶選擇發(fā)生動(dòng)態(tài)變化,非??蓯?ài)。需要的朋友前來(lái)下載2019-07-29純CSS實(shí)現(xiàn)氣泡對(duì)話框尖角處理方案
這篇文章主要介紹了純CSS實(shí)現(xiàn)氣泡對(duì)話框尖角處理的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的的朋友參考下吧2017-06-26用純css3和html制作泡沫對(duì)話框?qū)崿F(xiàn)代碼
泡沫對(duì)話框是一種比較流行的趨勢(shì)因?yàn)樗淖兞藗鹘y(tǒng),通常情況下都是使用html和javascript或者是圖片來(lái)實(shí)現(xiàn),接下來(lái)為大家介紹下使用css3配合html來(lái)實(shí)現(xiàn)一些簡(jiǎn)單的泡沫對(duì)話框2013-03-21純CSS代碼實(shí)現(xiàn)各類(lèi)氣球泡泡對(duì)話框效果
利用CSS的border屬性可以生成一些圖形,例如三角或是圓角。純粹的CSS2的內(nèi)容,沒(méi)有兼容性的問(wèn)題,我之前在純CSS實(shí)現(xiàn)各類(lèi)氣球泡泡對(duì)話框效果一文中算是比較詳細(xì)的講述了CSS2010-12-27css 實(shí)現(xiàn)小尖角聊天對(duì)話框帶尖角的說(shuō)話泡泡效果
這篇文章主要介紹了css 實(shí)現(xiàn)小尖角聊天對(duì)話框帶尖角的說(shuō)話泡泡效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下2020-04-10