目前最優雅地實現多重邊框的方案是利用CSS3
的 box-shadow
屬性,但若是要兼容老的瀏覽器,則須要選擇其它的方案。本文簡要地列舉了幾種多重邊框的實現方案,你們能夠根據項目實際及兼容性要求等狀況,選擇最適合的實現方案。css
outline
)屬性方案1利用描邊(outline
)屬性結合border
屬性實現雙重邊框。此方案實現簡單,兼容性好,能兼容除IE6,7
之外的瀏覽器。web
.borders { border: solid 6px #fff; outline: solid 6px #888; }
演示程序瀏覽器
方案2利用額外的DIV嵌套的方式實現多重邊框。這也是惟一不存在兼容性問題的方案。網絡
.outer { border: solid 6px #888; background: #fff; } .inner { background: #222; margin: 6px; }
演示程序測試
方案3利用僞元素(:before
)的方式實現雙重邊框。實現代碼略複雜,屬於hack的實現方式,不推薦。url
.borders { border: solid 6px #fff; position: relative; } .borders:before { content: ""; position: absolute; top: -12px; left: -12px; right: -12px; bottom: -12px; border: solid 6px #888; }
演示程序spa
IE6,7,8
不兼容:after
也能夠:before
和:after
能夠實現三重邊框border-image
屬性方案4利用CSS3
的border-image
屬性實現多重邊框。實現方法簡單,但須要製作一個額外的邊框圖片,兼容性較差。code
.borders { border: solid 12px transparent; border-image: url('borders.jpg') 12 12 12 12 repeat; }
演示程序blog
本例中,利用border-image-slice
將邊框圖片分紅以下圖所示的9個區域:圖片
其中包括四個角(1,2,3,4),四條邊(5,6,7,8)以及中間區域(9)。repeat
表示四條邊都在相應的邊框上重複的平鋪。
box-shadow
屬性方案5利用box-shadow
屬性實現多重邊框。方案5是最簡單,最直接的實現多重邊框的方式。只有一行代碼就能夠實現多重邊框效果。利用了陰影(box-shadow
)實現邊框多少有一些hack的味道。
.borders { box-shadow: 0 0 0 6px #fff, 0 0 0 12px #888; }
爲了用陰影模擬邊框,本例中使用了兩個陰影效果,設置偏移值和模糊值爲0
,並適當地設置陰影的尺寸,從而實現了雙重邊框的效果。由於一個陰影重疊在另外一個陰影之上,第二個陰影的尺寸要設置成第一個陰影尺寸的兩倍。關鍵部分是將模糊值設成0,從而產生像邊框同樣的純色陰影,看起來和邊框同樣。
和描邊(outline
)屬性同樣,box-shadow
屬性可能會和周邊元素髮生重疊,所以要適當地設置元素的外邊距。box-shadow
兼容性通常。
本文簡述了5種多重邊框的實現方式,各有優缺點,你們要根據實際狀況進行取捨。
文中所述部分文字及代碼彙編於網絡。因時間不足,能力有限等緣由,存在文字闡述不許及代碼測試不足等諸多問題。