Terry建议的伪元素的使用有一个 PRO 和一个 CON:
- PRO - 良好的跨浏览器兼容性,因为旧 IE 也支持伪元素。
- CON - 它需要创建一个额外的(即使已生成)元素,该元素实际上被定义为pseudo-element。
无论如何是一个很好的解决方案。
其他解决方案:
如果您可以接受 IE9 以来的兼容性(IE8 不支持此功能),您可以通过其他两种可能的方式达到预期的效果:
- 使用与单个插图
outline
结合的属性border
box-shadow
- 使用两个
box-shadow
结合border
.
这是一个带有Terry修改代码的 jsFiddle,并排显示了这些其他可能的解决方案。每个的主要具体属性如下(其他在.double-border
课堂上共享):
.left
{
outline: 4px solid #fff;
box-shadow:inset 0 0 0 4px #fff;
}
.right
{
box-shadow:0 0 0 4px #fff, inset 0 0 0 4px #fff;
}
更少的代码:
您询问了使用 LESS 等预处理器的可能优势。在这种特殊情况下,实用程序不是很好,但无论如何你可以优化一些东西,用 @variable 声明颜色和边框/ouline/ shadow。
这是我的 CSS 代码示例,在 LESS 中声明(更改颜色和边框宽度变得非常快):
@double-border-size:4px;
@inset-border-color:#fff;
@content-color:#ccc;
.double-border
{
background-color: @content-color;
border: @double-border-size solid @content-color;
padding: 2em;
width: 16em;
height: 16em;
float:left;
margin-right:20px;
text-align:center;
}
.left
{
outline: @double-border-size solid @inset-border-color;
box-shadow:inset 0 0 0 @double-border-size @inset-border-color;
}
.right
{
box-shadow:0 0 0 @double-border-size @inset-border-color, inset 0 0 0 @double-border-size @inset-border-color;
}