如何在 CSS 中制作重叠边框?
网站示例(导航框)。
所有元素都必须border有 2px,但由于元素彼此靠近,因此它们之间有 4px:
* {
margin: 0;
padding: 0;
}
body {
padding: 50px 100px;
background-color: #262626;
}
nav {
width: 100%;
height: 100px;
display: flex;
}
.div1,
.div3 {
flex-basis: 100px;
height: 100px;
background-color: #44B3E2;
margin: 0;
padding: 0;
flex-direction: row;
}
.div2 {
flex: 1;
height: 100px;
background-color: #5EE244;
flex-direction: row;
}
.div1,
.div2,
.div3 {
border: 2px solid white;
}
.div1:hover,
.div2:hover,
.div3:hover {
border-color: red;
}
<nav>
<div class="div1"></div>
<div class="div2"></div>
<div class="div3"></div>
</nav>
UPD - 解释:
问题是您正在为所有边的每个元素制作可见边框。
上面的代码做了什么:
nav级有一个 2px 的边框。.div1和.div2.对于子元素(
.div1,.div2,.div3),创建一个:before伪元素,每边尺寸为 -2px,并且在悬停时变为可见(颜色集)的不可见 2px 边框,即:可能是这样的:对于父级——border-collapse:collapse;对于元素 - 显示:表格单元格;