簡言
目前最優(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)虛線等樣式的邊框
- 描邊在盒模型之外,會(huì)與外部元素發(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
屬性
方案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
屬性可能會(huì)和周邊元素發(fā)生重疊耿币,因此要適當(dāng)?shù)卦O(shè)置元素的外邊距。box-shadow
兼容性一般韧拒。
6 參考
7 結(jié)語
本文簡述了5種多重邊框的實(shí)現(xiàn)方式掰读,各有優(yōu)缺點(diǎn)秘狞,大家要根據(jù)實(shí)際情況進(jìn)行取舍。
文中所述部分文字及代碼匯編于網(wǎng)絡(luò)蹈集。因時(shí)間不足烁试,能力有限等原因,存在文字闡述不準(zhǔn)及代碼測(cè)試不足等諸多問題拢肆。