首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CSS实现多重边框的5种方式

CSS实现多重边框的5种方式

作者头像
Javanx
发布2019-09-04 15:39:39
1.3K0
发布2019-09-04 15:39:39
举报
文章被收录于专栏:web秀web秀

前言

目前最优雅地实现多重边框的方案是利用CSS3 的 box-shadow属性,但如果要兼容老的浏览器,则需要选择其他的方案。本文简要地列举了几种多重边框的实现方案,大家可以根据项目实际及兼容性要求等情况,选择最适合的实现方案。

CSS实现多重边框的5种方式
CSS实现多重边框的5种方式

利用描边(outline)属性

方案1利用描边(outline)属性结合border属性实现双重边框。此方案实现简单,兼容性好,能兼容除IE6,7以外的浏览器。

.borders {
 border: solid 6px #fff;
 outline: solid 6px #888; 
}
CSS实现多重边框的5种方式
CSS实现多重边框的5种方式

优缺点:

只能实现双重边框 边框样式灵活,可以实现虚线等样式的边框 描边在盒模型之外,会与外部元素发生重叠

利用额外的div

利用额外的DIV嵌套的方式实现多重边框。这也是唯一不存在兼容性问题的方案。

.outer {
 border: solid 6px #888;
 background: #fff;
}
.inner {
 background: #222;
 margin: 6px;
}
CSS实现多重边框的5种方式
CSS实现多重边框的5种方式

优缺点:

兼容性好 可以实现多重边框,虚线边框等样式 需要额外的DIV元素,增加了代码复杂性

利用伪元素

利用伪元素(:before)的方式实现双重边框。实现代码略复杂,属于hack的实现方式,不推荐。

.borders {
 border: solid 6px #fff;
 position: relative;
}
.borders:before {
 content: "";
 position: absolute;
 top: -12px;
 left: -12px;
 right: -12px;
 bottom: -12px;
 border: solid 6px #888;
}
CSS实现多重边框的5种方式
CSS实现多重边框的5种方式

优缺点:

IE6,7,8不兼容 用:after也可以 同时应用:before和:after可以实现三重边框

利用border-image属性

利用CSS3的border-image属性实现多重边框。实现方法简单,但需要制做一个额外的边框图片,兼容性较差。

.borders {
 border: solid 12px transparent;
 border-image: url('borders.jpg') 12 12 12 12 repeat;
}
CSS实现多重边框的5种方式
CSS实现多重边框的5种方式

利用border-image-slice将边框图片分成如下图所示的9个区域:

CSS实现多重边框的5种方式
CSS实现多重边框的5种方式

其中包括四个角(1,2,3,4),四条边(5,6,7,8)以及中间区域(9)。 repeat表示四条边都在相应的边框上重复的平铺。

利用box-shadow属性

利用box-shadow属性实现多重边框。方案5是最简单,最直接的实现多重边框的方式。只有一行代码就可以实现多重边框效果。利用了阴影(box-shadow)实现边框多少有一些hack的味道。

.borders {
 box-shadow: 0 0 0 6px #fff, 0 0 0 12px #888;
}
CSS实现多重边框的5种方式
CSS实现多重边框的5种方式

优缺点:

为了用阴影模拟边框,本例中使用了两个阴影效果,设置偏移值和模糊值为0,并适当地设置阴影的尺寸,从而实现了双重边框的效果。因为一个阴影重叠在另一个阴影之上,第二个阴影的尺寸要设置成第一个阴影尺寸的两倍。关键部分是将模糊值设成0,从而产生像边框一样的纯色阴影,看起来和边框一样。

和描边(outline)属性一样,box-shadow属性可能会和周边元素发生重叠,因此要适当地设置元素的外边距。box-shadow兼容性一般。

喜欢小编的点击关注哦,专注web技术分享!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年9月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 利用描边(outline)属性
  • 利用额外的div
  • 利用伪元素
  • 利用border-image属性
  • 利用box-shadow属性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档