目前最优雅地实现多重边框的方案是利用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种多重边框的实现方式,各有优缺点,你们要根据实际状况进行取舍。
文中所述部分文字及代码汇编于网络。因时间不足,能力有限等缘由,存在文字阐述不许及代码测试不足等诸多问题。