我希望<span class="line-sm"></span>
的下划线填充{{1}}空格的其余部分并有一个边框底。
这是一个样机,红线是我想要的跨度:
如果窗口缩小,则跨度也会缩小。有点像“包含”图像背景。
这是我拥有的HTML:
<p>
如果不使用表或采取一些疯狂的解决办法,是否有可能做到这一点?
谢谢!
答案 0 :(得分:1)
您可以使用flexbox来使跨度增大以适合其父级。在这种情况下,建议您在strong
之前关闭span
标签。
p {
display: flex;
}
p .line-sm {
flex: 1;
margin-left: 10px;
border-bottom: 1px solid red;
}
<p>
<strong>What ACT score do you want?</strong>
<span class="line-sm"></span>
</p>
如果要确保跨度不会折叠到消失的程度,可以在其上添加min-width
:
p {
display: flex;
}
p .line-sm {
flex: 1;
min-width: 200px;
margin-left: 10px;
border-bottom: 1px solid red;
}
<p>
<strong>What ACT score do you want?</strong>
<span class="line-sm"></span>
</p>
答案 1 :(得分:1)
如果您不想使用flexbox,请尝试添加一些伪元素:
CSS:
.line {
position: relative;
display: block;
}
.line::before {
display: block;
position: absolute;
width: 100%;
bottom: 0;
border-bottom: solid red 2px;
content: '';
z-index: 0;
}
.text {
position: relative;
display: inline-block;
background: white;
/* make some space with padding after text label */
padding-right: 5px;
z-index: 1;
}
HTML:
<p>
<span class="line">
<span class="text">
<strong>What ACT score do you want?</strong>
</span>
</span>
<span class="line">
<span class="text">
Another line
</span>
</span>
</p>
答案 2 :(得分:0)
您可以使用:after
伪类在内容之后显示行。
span.line-sm:after {
margin: 0 0 0 10px;
background-color: #000;
content: "";
display: inline-block;
height: 1px;
position: relative;
vertical-align: middle;
width: 50%;
}
<p>
<strong>What ACT score do you want? <span class="line-sm"></span></strong>
</p>