看到像上圖這樣的 tip 的小三角,你會怎么辦?
切個圖上去?恩,不錯,簡單,兼容性也一級棒,不但好控制,那點小東西也增加不了多少圖片的大小。但有沒有更好更講究技巧的辦法呢?哈哈,那必須有啊,而且還不止一種呢:)
純 CSS 做三角形的方法,目前我知道三種,分別是利用 border 屬性,“◆”字符,和 CSS3 transfrom 做 45 度旋轉實現(xiàn)的,CSS3的方法是在碼頭哥的博客上學到的,很感謝你們的分享,前端有你們更精彩!
1.利用 border 屬性實現(xiàn)三角形
這個原理很簡單,我我們先看下面的圖,這是一個邊框為 20px 的 div,看他的邊框,是個梯形,變化會從這里開始。
CSS:
.triangle{ width:30px; height:30px; border-width:20px; border-style:solid; border-color:#e66161#f3bb5b #94e24f #85bfda; }
好的,現(xiàn)在我把它的寬和高都設為 0,看看有什么變化。
四個邊框都變成三角形了,現(xiàn)在我再把它的左右和下邊框的顏色都設成透明或和背景顏色相同的顏色,就出來我們想要的三角形了,推薦把邊框設置成透明,這樣拓展性更好。
注:IE6下把邊框設置成 transparent 時會出現(xiàn)黑影,并不會透明,把 border-style 設置成 dashed 可以解決。
CSS:
.triangle{ width:0; height:0; border-width:20px; border-style:solid dashed dashed dashed; border-color:#e66161 transparent transparent transparent; }
如果我們想實現(xiàn)下圖的效果該怎么辦呢?很簡單,做兩個小三角,一個是背景色,一個是邊框色,然后利用定位重疊在一起,記住他們的定位要相差一個像素。
HTML:
class="message-box" 我是利用 border 屬性實現(xiàn)的
class="triangle-border tb-border"
>
class="triangle-border tb-background"
>
>
CSS:
.message-box { position:relative; width:240px; height:60px; line-height:60px; background:#E9FBE4;box-shadow:1px 2px 3px #E9FBE4; border:1px solid #C9E9C0; border-radius:4px; text-align:center;color:#0C7823; } .triangle-border { position:absolute; left:30px; overflow:hidden; width:0;height:0; border-width:10px; border-style:solid dashed dashed dashed; } .tb-border { bottom:-20px;border-color:#C9E9C0 transparent transparent transparent; } .tb-background { bottom:-19px; border-color:#E9FBE4 transparent transparent transparent; }
猛擊demo
2.利用”◆“字符實現(xiàn)三角形
字符實現(xiàn)也是要用兩個字符用絕對定位去模擬,只是它不能模擬出三角形,它是個菱形,然后露出半個頭,底色又和背景色一樣,看上去就像是個三角形了。。
注意:它的大小是由 font-size 決定的,width 和 height 都決定不了,但最好還是加上,這樣各個瀏覽器去生成這個字符的時候能保持一致,我們?nèi)懡^對定位的時候就不用寫 hack 了。
HTML:
class="message-box" 我是利用 ◆ 字符實現(xiàn)的
class="triangle-character tc-border"◆
>
class="triangle-character tc-background"◆
>
>
CSS:
.message-box { position:relative; width:240px; height:60px; line-height:60px; background:#E9FBE4;box-shadow:1px 2px 3px #E9FBE4; border:1px solid #C9E9C0; border-radius:4px; text-align:center;color:#0C7823; } .triangle-character { position:absolute; left:30px; overflow:hidden; width:26px;height:26px; font:normal 26px "宋體"; // 字符的大小和字體也有關系哦! } .tc-border { bottom:-13px;color:#C9E9C0; } .tc-background { bottom:-12px; color:#E9FBE4; }
猛擊demo
3.利用 CSS3 transfrom 旋轉 45 度實現(xiàn)三角形
先創(chuàng)建一個帶 border 的 div ,設置好背景色和相鄰的兩個邊框的顏色,然后選擇 45 度,聽著很簡單是嗎,但是利用 IE 的 matrix filter 實現(xiàn) css3 transfrom 的兼容方案很頭大,我是沒看懂,有看懂的兄弟情賜教?。海?/p>
注:IE6下無效。
HTML:
class="message-box" 我是利用 css transfrom 屬性字符實現(xiàn)的
class="triangle-css3 transform ie-transform-filter"
>
>
CSS:
.message-box { position:relative; width:240px; height:60px; line-height:60px; background:#E9FBE4;box-shadow:1px 2px 3px #E9FBE4; border:1px solid #C9E9C0; border-radius:4px; text-align:center;color:#0C7823; } .triangle-css3 { position:absolute; bottom:-8px; bottom:-6px\0; left:30px;overflow:hidden; width:13px; height:13px; background:#E9FBE4; border-bottom:1px solid #C9E9C0;border-right:1px solid #C9E9C0; } .transform { -webkit-transform:rotate(45deg); -moz-transform:rotate(45deg); -o-transform:rotate(45deg); transform:rotate(45deg); } .ie-transform-filter { -ms-filter: "progid:DXImageTransform.Microsoft.Matrix( M11=0.7071067811865475,M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865475, SizingMethod='auto expand')"; filter: progid:DXImageTransform.Microsoft.Matrix( M11=0.7071067811865475,M12=-0.7071067811865477, M21=0.7071067811865477, M22=0.7071067811865475, SizingMethod='auto expand'); }
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
新聞標題:三種純CSS實現(xiàn)三角形的方法-創(chuàng)新互聯(lián)
路徑分享:http://redsoil1982.com.cn/article40/dgiheo.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、網(wǎng)站建設、品牌網(wǎng)站制作、靜態(tài)網(wǎng)站、微信公眾號、營銷型網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容