目标是突出显示div的边框,并使该突出显示无论基础颜色如何都可见。这种想法是通过在div周围创建一个边框来实现的,其中每个边框元素(在本例中为圆圈,而不是破折号)都包含白色填充,而其自身是彩色边框。
不幸的是,边框没有重叠,而是偏移了,从而生成了两边框外观,而不是具有不同颜色的单个边框。
Codepen:https://codepen.io/anon/pen/gqbrzv
<div class="selectionBox">
<div class="inner"></div>
</div>
.selectionBox {
width: 100px;
height: 100px;
background: blue;
box-sizing: border-box;
position: absolute;
border: 5px dotted #FFF;
pointer-events: none;
}
.selectionBox .inner {
position: relative;
top: 0;
left: 0;
width: 100%;
height: 100%;
border: 7px dotted #F23C32;
}
答案 0 :(得分:1)
您可以考虑采用径向梯度来实现这一目标:
.selectionBox {
width: 100px;
height: 100px;
padding: 10px;
background:
linear-gradient(blue,blue) content-box, /*will hide the radial gradient inside and keep them only visible on the padding*/
radial-gradient(#fff 40%,red 44%,red 58%,transparent 60%) top left/10px 10px,
blue;
box-sizing: border-box;
position: absolute;
pointer-events: none;
}
<div class="selectionBox">
</div>
答案 1 :(得分:0)
如果有一个绝对元素,它将始终根据相对的第一个父元素进行定位;如果有一个边界,它将根据该元素进行偏移。我的解决方案包括将selectionBox和inner放入一个绝对定位的容器中,然后使这些元素具有相同的大小,除了inner元素带有红点:
.container {
position: relative;
}
.selectionBox {
width: 100px;
height: 100px;
background: blue;
box-sizing: border-box;
position: absolute;
top: 0;
left: 0;
border: 7px dotted #FFF;
pointer-events: none;
}
.inner {
position: absolute;
top: 0;
left: 0;
width: 100px;
height: 100px;
box-sizing: border-box;
border: 7px dotted #F23C32;
}
<div>
<div class="selectionBox">
</div>
<div class="inner"></div>
</div>