我希望在<p>内的<span>下划线并填充</p> <p>标记的其余空间

时间:2018-11-15 18:42:43

标签: html css

我希望<span class="line-sm"></span>的下划线填充{{​​1}}空格的其余部分并有一个边框底。

这是一个样机,红线是我想要的跨度:

Mockup of what I'm looking for

如果窗口缩小,则跨度也会缩小。有点像“包含”图像背景。

这是我拥有的HTML:

<p>

如果不使用表或采取一些疯狂的解决办法,是否有可能做到这一点?

谢谢!

3 个答案:

答案 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>

See codepen example

答案 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>