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