css多重边框

时间:2024-01-12 14:57:08

一、使用box-shadow实现多重边框

html

<div class="multiple"></div>

css

.multiple{
background: yellowgreen;
box-shadow: 0 0 0 10px #655,0 0 0 20px deeppink;
margin: 200px;
width :300px;
height:200px;
}

效果图

css多重边框css多重边框

值得说明的是,box-shadow是层层叠加的,第一层投影位于最顶层,依次类推。因此你需要按照此规律扩张半径。比如上面的代码,如果我们想在外层在加一个5px的外框,那么久需要指定扩张半径的值为25px(20px+5px)。上述方法所创建出的“假的边框”出现在元素的外圈,他们并不会响应鼠标事件,比如悬停或者点击,如果这一点非常重要,你可以给box-shadow属性加上inset关键字,来使投影绘制在元素的内圈,注意此时需要额外的内边距俩腾出足够的空间,代码如下。

css

.multiple{
background: yellowgreen;
box-shadow: inset 0 0 0 10px #655,inset 0 0 0 20px deeppink;
padding: 20px;
margin: 200px;
width :300px;
height:200px;
}

加padding和不加padding效果图

css多重边框css多重边框css多重边框css多重边框

二、使用outline实现二重边框(缝边效果)

html

<div class="multiple"></div>

css

.multiple{
background: yellowgreen;
border: 10px solid #655;
outline: 10px solid deeppink;
width :300px;
height:200px;
margin: 100px;
}

效果图

css多重边框css多重边框

注意:

1. 这种方法只适用于双层边框的场景;

2. 边框不一定融合border-radius产生的圆角

3. 可以接受负值,因此可以实现缝边效果,如下:

css

.multiple{
background: #655;
border-radius: 20px;
outline: 2px dashed white;
outline-offset: -15px;
width :300px;
height:200px;
margin: 100px;
}

效果图

css多重边框css多重边框

使用border+outline也可以实现这种效果:

css

.multiple{
background: #655;
border: 2px dashed white;
outline: 10px solid #655;
width :300px;
height:200px;
margin: 100px;
}

效果图

css多重边框css多重边框