【基礎(chǔ)】CSS實(shí)現(xiàn)多重邊框的5種方式

簡言

目前最優(yōu)雅地實(shí)現(xiàn)多重邊框的方案是利用CSS3box-shadow屬性,但如果要兼容老的瀏覽器垫桂,則需要選擇其它的方案。本文簡要地列舉了幾種多重邊框的實(shí)現(xiàn)方案,大家可以根據(jù)項(xiàng)目實(shí)際及兼容性要求等情況植酥,選擇最適合的實(shí)現(xiàn)方案。

CSS多重邊框

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 演示程序

利用outline實(shí)現(xiàn)雙重邊框

演示程序

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 演示程序

利用額外的DIV嵌套實(shí)現(xiàn)雙重邊框

演示程序

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 演示程序

利用偽元素實(shí)現(xiàn)雙重邊框

演示程序

3.3 說明

  • IE6,7,8不兼容
  • :after也可以
  • 同時(shí)應(yīng)用:before:after可以實(shí)現(xiàn)三重邊框

4 利用border-image屬性

方案4利用CSS3border-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 演示程序

利用border-image屬性實(shí)現(xiàn)雙重邊框

演示程序

4.3 說明

本例中,利用border-image-slice將邊框圖片分成如下圖所示的9個(gè)區(qū)域:

border-image-slice示例圖片

其中包括四個(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 演示程序

利用box-shadow屬性實(shí)現(xiàn)多重邊框

演示程序

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 參考

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)及代碼測(cè)試不足等諸多問題拢肆。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末减响,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子郭怪,更是在濱河造成了極大的恐慌支示,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鄙才,死亡現(xiàn)場(chǎng)離奇詭異颂鸿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)攒庵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門嘴纺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浓冒,你說我怎么就攤上這事栽渴。” “怎么了稳懒?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵闲擦,是天一觀的道長。 經(jīng)常有香客問我场梆,道長墅冷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任或油,我火速辦了婚禮寞忿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘装哆。我一直安慰自己,他們只是感情好定嗓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布蜕琴。 她就那樣靜靜地躺著,像睡著了一般宵溅。 火紅的嫁衣襯著肌膚如雪凌简。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天恃逻,我揣著相機(jī)與錄音雏搂,去河邊找鬼藕施。 笑死,一個(gè)胖子當(dāng)著我的面吹牛凸郑,可吹牛的內(nèi)容都是我干的裳食。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼芙沥,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼诲祸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起而昨,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤救氯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后歌憨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體着憨,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年务嫡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了甲抖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡植袍,死狀恐怖惧眠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情于个,我是刑警寧澤氛魁,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站厅篓,受9級(jí)特大地震影響秀存,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜羽氮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一或链、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧档押,春花似錦澳盐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至粒没,卻和暖如春筛婉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背癞松。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工爽撒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留入蛆,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓硕勿,卻偏偏與公主長得像哨毁,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子首尼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color挑庶,font,text-align软能,li...
    love2013閱讀 2,304評(píng)論 0 11
  • 選擇qi:是表達(dá)式 標(biāo)簽選擇器 類選擇器 屬性選擇器 繼承屬性: color迎捺,font,text-align查排,li...
    wzhiq896閱讀 1,732評(píng)論 0 2
  • 最近在閱讀CSS Secrets這本書凳枝,發(fā)現(xiàn)作者講解了很多容易被忽略的CSS小技巧,感受到作者在寫代碼的過程中跋核,不...
    hershin閱讀 461評(píng)論 0 0
  • SMART原則岖瑰,即:1. 目標(biāo)必須是具體的(Specific)2. 目標(biāo)必須是可以衡量的(Measurable)3...
    夜者無念閱讀 1,187評(píng)論 0 0
  • 被生活壓迫的緩不過氣,你茍延殘喘砂代。其實(shí)蹋订,大多數(shù)的不幸,都是理想與現(xiàn)實(shí)的差距刻伊。那小小的夢(mèng)想露戒,在現(xiàn)實(shí)面前輕易被撕得支離...
    糖果去旅行閱讀 189評(píng)論 0 0