是否可以从每个角落开始在div的所有边缘上设置部分边框? 我想避免 background-image 属性&使用CSS Only解决方案来实现这一目标。
使用伪:after 属性可以实现部分边框,但我无法弄清楚如何在所有边缘上使用它?
div应该看起来像焦点小部件,如附图所示。
感谢。
答案 0 :(得分:0)
当然,试试这个:
HTML:
<div></div>
CSS:
div {
background: white;
padding: 1.7em;
position: relative;
width: 300px;
height: 300px;
margin: 3em auto;
border: solid 2px #d00;
}
div::before, div::after {
position: absolute;
background: inherit;
content: '';
z-index: 1;
}
div::before {
width: 100px;
left: calc(50% - 50px);
height: calc(100% + 4px);
top: -2px;
}
div::after {
height: 100px;
left: -2px;
width: calc(100% + 4px);
top: calc(50% - 50px);
}
div > * {
position: relative; z-index: 2; /* ensure any child elements sit above pseudos */
}
答案 1 :(得分:-1)
您可以使用两个额外的边框元素来执行此操作,这样您就不必屏蔽背景,并且可以拥有透明背景。
.element {
width: 200px;
height: 200px;
margin: 50px;
position: relative;
padding: 10px;
}
.top-border,
.bottom-border {
position: absolute;
display: flex;
justify-content: space-between;
width: 100%;
height: 30%;
left: 0;
}
.top-border {
top: 0;
}
.bottom-border {
bottom: 0;
}
.top-border:after,
.top-border:before,
.bottom-border:after,
.bottom-border:before {
content: '';
width: 30%;
height: 100%;
}
.top-border:after,
.top-border:before {
border-top: 1px solid green;
}
.bottom-border:after,
.bottom-border:before {
border-bottom: 1px solid green;
}
.top-border:before,
.bottom-border:before {
border-left: 1px solid green;
}
.top-border:after,
.bottom-border:after {
border-right: 1px solid green;
}
<div class="element">
<div class="top-border"></div>
<div class="bottom-border"></div>
<div class="content">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Reiciendis, libero!</div>
</div>