摘要:簡言目前最優(yōu)雅地實(shí)現(xiàn)多重邊框的方案是利用的屬性,但如果要兼容老的瀏覽器,則需要選擇其它的方案。方案是最簡單,最直接的實(shí)現(xiàn)多重邊框的方式。只有一行代碼就可以實(shí)現(xiàn)多重邊框效果。
簡言
目前最優(yōu)雅地實(shí)現(xiàn)多重邊框的方案是利用CSS3 的 box-shadow屬性,但如果要兼容老的瀏覽器,則需要選擇其它的方案。本文簡要地列舉了幾種多重邊框的實(shí)現(xiàn)方案,大家可以根據(jù)項(xiàng)目實(shí)際及兼容性要求等情況,選擇最適合的實(shí)現(xiàn)方案。
1 利用描邊(outline)屬性方案1利用描邊(outline)屬性結(jié)合border屬性實(shí)現(xiàn)雙重邊框。此方案實(shí)現(xiàn)簡單,兼容性好,能兼容除IE6,7以外的瀏覽器。
1.1 核心代碼.borders { border: solid 6px #fff; outline: solid 6px #888; }1.2 演示程序
演示程序
1.3 說明只能實(shí)現(xiàn)雙重邊框
邊框樣式靈活,可以實(shí)現(xiàn)虛線等樣式的邊框
描邊在盒模型之外,會與外部元素發(fā)生重疊
2 利用額外的DIV方案2利用額外的DIV嵌套的方式實(shí)現(xiàn)多重邊框。這也是唯一不存在兼容性問題的方案。
2.1 核心代碼.outer { border: solid 6px #888; background: #fff; } .inner { background: #222; margin: 6px; }2.2 演示程序
演示程序
2.3 說明兼容性好
可以實(shí)現(xiàn)多重邊框,虛線邊框等樣式
需要額外的DIV元素,增加了代碼復(fù)雜性
3 利用偽元素方案3利用偽元素(:before)的方式實(shí)現(xiàn)雙重邊框。實(shí)現(xiàn)代碼略復(fù)雜,屬于hack的實(shí)現(xiàn)方式,不推薦。
3.1 核心代碼.borders { border: solid 6px #fff; position: relative; } .borders:before { content: ""; position: absolute; top: -12px; left: -12px; right: -12px; bottom: -12px; border: solid 6px #888; }3.2 演示程序
演示程序
3.3 說明IE6,7,8不兼容
用:after也可以
同時(shí)應(yīng)用:before和:after可以實(shí)現(xiàn)三重邊框
4 利用border-image屬性方案4利用CSS3的border-image屬性實(shí)現(xiàn)多重邊框。實(shí)現(xiàn)方法簡單,但需要制做一個(gè)額外的邊框圖片,兼容性較差。
4.1 核心代碼.borders { border: solid 12px transparent; border-image: url("borders.jpg") 12 12 12 12 repeat; }4.2 演示程序
演示程序
4.3 說明本例中,利用border-image-slice將邊框圖片分成如下圖所示的9個(gè)區(qū)域:
其中包括四個(gè)角(1,2,3,4),四條邊(5,6,7,8)以及中間區(qū)域(9)。
repeat表示四條邊都在相應(yīng)的邊框上重復(fù)的平鋪。
方案5利用box-shadow屬性實(shí)現(xiàn)多重邊框。方案5是最簡單,最直接的實(shí)現(xiàn)多重邊框的方式。只有一行代碼就可以實(shí)現(xiàn)多重邊框效果。利用了陰影(box-shadow)實(shí)現(xiàn)邊框多少有一些hack的味道。
5.1 核心代碼.borders { box-shadow: 0 0 0 6px #fff, 0 0 0 12px #888; }5.2 演示程序
演示程序
5.3 說明為了用陰影模擬邊框,本例中使用了兩個(gè)陰影效果,設(shè)置偏移值和模糊值為0,并適當(dāng)?shù)卦O(shè)置陰影的尺寸,從而實(shí)現(xiàn)了雙重邊框的效果。因?yàn)橐粋€(gè)陰影重疊在另一個(gè)陰影之上,第二個(gè)陰影的尺寸要設(shè)置成第一個(gè)陰影尺寸的兩倍。關(guān)鍵部分是將模糊值設(shè)成0,從而產(chǎn)生像邊框一樣的純色陰影,看起來和邊框一樣。
和描邊(outline)屬性一樣,box-shadow屬性可能會和周邊元素發(fā)生重疊,因此要適當(dāng)?shù)卦O(shè)置元素的外邊距。box-shadow兼容性一般。
6 參考MDN border-image
MDN box-shadow
Multiple Borders with CSS
CSS-tricks Multiple Borders
7 結(jié)語本文簡述了5種多重邊框的實(shí)現(xiàn)方式,各有優(yōu)缺點(diǎn),大家要根據(jù)實(shí)際情況進(jìn)行取舍。
文中所述部分文字及代碼匯編于網(wǎng)絡(luò)。因時(shí)間不足,能力有限等原因,存在文字闡述不準(zhǔn)及代碼測試不足等諸多問題。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/113204.html
摘要:還接受第四個(gè)參數(shù)稱作擴(kuò)張半徑,通過指定正值或負(fù)值,可以讓投影面積加大或者減小如果我們想要一道實(shí)線邊框其實(shí)也是可以通過來模擬,原理就是一個(gè)正值的擴(kuò)張半徑加上兩個(gè)為零的偏移量以及為零的模糊值其實(shí)也能實(shí)現(xiàn)上述實(shí)線效果而且似乎挺簡單,但是卻 1、box-shadow還接受第四個(gè)參數(shù)(稱作擴(kuò)張半徑), 通過指定正值或負(fù)值, 可以讓投影面積加大或者減小2、如果我們想要一道實(shí)線邊框其實(shí)也是可以通過b...
摘要:還接受第四個(gè)參數(shù)稱作擴(kuò)張半徑,通過指定正值或負(fù)值,可以讓投影面積加大或者減小如果我們想要一道實(shí)線邊框其實(shí)也是可以通過來模擬,原理就是一個(gè)正值的擴(kuò)張半徑加上兩個(gè)為零的偏移量以及為零的模糊值其實(shí)也能實(shí)現(xiàn)上述實(shí)線效果而且似乎挺簡單,但是卻 1、box-shadow還接受第四個(gè)參數(shù)(稱作擴(kuò)張半徑), 通過指定正值或負(fù)值, 可以讓投影面積加大或者減小2、如果我們想要一道實(shí)線邊框其實(shí)也是可以通過b...
摘要:多重邊框的兩種實(shí)現(xiàn)方案以由逗號分隔的列表來描述一個(gè)或多個(gè)陰影效果。輪廓與邊框在以下幾個(gè)方面存在不同輪廓不占據(jù)空間,它們被描繪于內(nèi)容之上輪廓可以是非矩形的。是元素的輪廓,懸浮在元素邊框之上。也就是說,它們之間的顏色會繼承父元素的背景色。 多重邊框的兩種實(shí)現(xiàn)方案: border-shadow outline Mutiple border ...
摘要:每條屬性聲明實(shí)現(xiàn)對網(wǎng)頁元素進(jìn)行某種特定格式的設(shè)置,由一個(gè)屬性和一個(gè)值組成,屬性和值之間使用冒號連接,不同聲明之間用分號分隔,所有屬性聲明放到一對大括號中。 showImg(https://segmentfault.com/img/bVbkQCI?w=900&h=383); showImg(https://segmentfault.com/img/bVbkQCO?w=900&h=383)...
閱讀 5366·2021-10-15 09:42
閱讀 1642·2021-09-22 16:05
閱讀 3308·2021-09-22 15:57
閱讀 3456·2019-12-27 12:06
閱讀 997·2019-08-29 15:16
閱讀 2911·2019-08-26 12:24
閱讀 414·2019-08-26 12:02
閱讀 1918·2019-08-23 16:00