如何在文本之间换行?
How to get lines around text with break in between?
我必须在文本周围有空格的地方添加线条,这样就不仅仅是在周围添加边框了。以下是预期的结果,但我不确定从哪里开始修改边框,使其具有如图所示的间隙。
在间距和边框方面,
- 他们必须
10px
从侧面看。所以最上面的应该是从右边开始的10px
。最下面的应该是左起10px
。
- 空格的宽度可以是
8px
或 16px
之间的任意值。
- 边框应为
1px
或 3px
,具体视情况而定。
对于解决方案,如果需要更多 html 个元素,或者如果我们必须以任何 css 个伪元素为目标,那很好。
期望输出:
我尝试了以下方法,但无法像图片那样工作。
.box {
border-top: 1px solid black;
border-right: 1px solid black;
border-bottom: 1px solid black;
}
<div class="box">
Some text inside
</div>
使用渐变
.box {
padding:20px;
display:inline-block;
border-right:2px solid;
border-left:2px solid;
background:
linear-gradient(to left ,#000 10px,transparent 10px 30px,#000 0) top,
linear-gradient(to right,#000 10px,transparent 10px 30px,#000 0) bottom;
background-size:100% 2px;
background-repeat:no-repeat;
}
<div class="box">
Some text inside
</div>
使用CSS变量方便调整:
.box {
--b:2px; /* Thickness of border */
--g:10px; /* The gap */
--s:10px; /* The offset of the gap */
--grad:#000 var(--s),transparent var(--s) calc(var(--s) + var(--g)),#000 0;
padding:20px;
display:inline-block;
border-right:var(--b) solid;
border-left:var(--b) solid;
background:
linear-gradient(to left ,var(--grad)) top,
linear-gradient(to right,var(--grad)) bottom;
background-size:100% var(--b);
background-repeat:no-repeat;
}
<div class="box">
Some text inside
</div>
<div class="box" style="--s:20px;--g:50%;--b:5px;">
Some text
</div>
<div class="box" style="--s:80%;--g:10%;--b:1px">
Some text<br> inside
</div>
另一个使用剪辑路径的想法:
.box {
--b:2px; /* Thickness of border */
--g:10px; /* The gap */
--s:10px; /* The offset of the gap */
padding:20px;
display:inline-block;
border:var(--b) solid;
clip-path:polygon(0 0,
calc(100% - var(--s) - var(--g)) 0,
calc(100% - var(--s) - var(--g)) var(--b),
calc(100% - var(--s)) var(--b),
calc(100% - var(--s)) 0,
100% 0,100% 100%,
calc(var(--s) + var(--g)) 100%,
calc(var(--s) + var(--g)) calc(100% - var(--b)),
var(--s) calc(100% - var(--b)),
var(--s) 100%,
0 100%);
}
<div class="box">
Some text inside
</div>
<div class="box" style="--s:20px;--g:50%;--b:5px;">
Some text
</div>
<div class="box" style="--s:80%;--g:10%;--b:1px">
Some text<br> inside
</div>
我必须在文本周围有空格的地方添加线条,这样就不仅仅是在周围添加边框了。以下是预期的结果,但我不确定从哪里开始修改边框,使其具有如图所示的间隙。
在间距和边框方面,
- 他们必须
10px
从侧面看。所以最上面的应该是从右边开始的10px
。最下面的应该是左起10px
。 - 空格的宽度可以是
8px
或16px
之间的任意值。 - 边框应为
1px
或3px
,具体视情况而定。
对于解决方案,如果需要更多 html 个元素,或者如果我们必须以任何 css 个伪元素为目标,那很好。
期望输出:
我尝试了以下方法,但无法像图片那样工作。
.box {
border-top: 1px solid black;
border-right: 1px solid black;
border-bottom: 1px solid black;
}
<div class="box">
Some text inside
</div>
使用渐变
.box {
padding:20px;
display:inline-block;
border-right:2px solid;
border-left:2px solid;
background:
linear-gradient(to left ,#000 10px,transparent 10px 30px,#000 0) top,
linear-gradient(to right,#000 10px,transparent 10px 30px,#000 0) bottom;
background-size:100% 2px;
background-repeat:no-repeat;
}
<div class="box">
Some text inside
</div>
使用CSS变量方便调整:
.box {
--b:2px; /* Thickness of border */
--g:10px; /* The gap */
--s:10px; /* The offset of the gap */
--grad:#000 var(--s),transparent var(--s) calc(var(--s) + var(--g)),#000 0;
padding:20px;
display:inline-block;
border-right:var(--b) solid;
border-left:var(--b) solid;
background:
linear-gradient(to left ,var(--grad)) top,
linear-gradient(to right,var(--grad)) bottom;
background-size:100% var(--b);
background-repeat:no-repeat;
}
<div class="box">
Some text inside
</div>
<div class="box" style="--s:20px;--g:50%;--b:5px;">
Some text
</div>
<div class="box" style="--s:80%;--g:10%;--b:1px">
Some text<br> inside
</div>
另一个使用剪辑路径的想法:
.box {
--b:2px; /* Thickness of border */
--g:10px; /* The gap */
--s:10px; /* The offset of the gap */
padding:20px;
display:inline-block;
border:var(--b) solid;
clip-path:polygon(0 0,
calc(100% - var(--s) - var(--g)) 0,
calc(100% - var(--s) - var(--g)) var(--b),
calc(100% - var(--s)) var(--b),
calc(100% - var(--s)) 0,
100% 0,100% 100%,
calc(var(--s) + var(--g)) 100%,
calc(var(--s) + var(--g)) calc(100% - var(--b)),
var(--s) calc(100% - var(--b)),
var(--s) 100%,
0 100%);
}
<div class="box">
Some text inside
</div>
<div class="box" style="--s:20px;--g:50%;--b:5px;">
Some text
</div>
<div class="box" style="--s:80%;--g:10%;--b:1px">
Some text<br> inside
</div>