在文字的右侧和左侧添加行

时间:2019-07-06 19:19:39

标签: html css

我有以下HTML和CSS:

body {
  text-align: center;
}

div {
  border: 1px solid black;
  margin: 0 auto;
  width: 200px;
}

p {
  border: 1px solid red;
  line-height: 0.5;
  margin: 20px;
  text-align: center;
}

span {
  display: inline-block;
  position: relative;
}

span:before,
span:after {
  content: "";
  position: absolute;
  height: 5px;
  border-bottom: 1px solid black;
  top: 0;
  width: 100%;
}

span:before {
  right: 100%;
  margin-right: 20px;
}

span:after {
  left: 100%;
  margin-left: 20px;
}
<div>
  <p class="strike"><span>Phrase</span></p>
</div>

我在文本的左侧和右侧添加了一行,但是有两个问题:

  1. 该行超出了P边框;

  2. P不能填充容器DIV的整个宽度。

我该如何解决这些问题?

2 个答案:

答案 0 :(得分:2)

我保留了您原始的CSS,但其中很多都已注释掉。 FlexBox是实现所需目标的好方法(与position: absoluteposition: relative相对:

/*body {
  text-align: center;
}*/

div {
  border: 1px solid black;
  margin: 0 auto;
  width: 200px;
}

p {
  border: 1px solid red;
  /*line-height: 0.5;*/
  /*margin: 20px;*/
  /*text-align: center;*/
}

span {
  display: flex;
  /*position: relative;*/
  /*width: 100%;*/
  align-items: center;
}

span:before,
span:after {
  content: "";
  /*position: absolute;*/
  /*height: 5px;*/
  border-bottom: 1px solid black;
  /*top: 0;*/
  width: 100%;
}

span:before {
  /*right: 100%;*/
  margin-right: 20px;
}

span:after {
  /*left: 100%;*/
  margin-left: 20px;
}
<div>
  <p class="strike"><span>Phrase</span></p>
</div>

答案 1 :(得分:1)

  1. 使用left:0;right:0来确保线条保持在边框内
  2. p上的边距是阻止它填充容器整个宽度的原因。

也不需要跨度。

body {
  text-align: center;
}

div {
  border: 1px solid black;
  margin: 0 auto;
  width: 200px;
}

p {
  border: 1px solid red;
  line-height: 0.5;
  /* margin: 20px; to span full width*/
  text-align: center;
  position: relative;
}

p:before,
p:after {
  content: "";
  position: absolute;
  height: 1px;
  background:black;
  top: 50%;
  transform:translateY(-50%);
  width: 20%;
}

p:before {
  left: 0;
}

p:after {
  right: 0;
}
<div>
  <p class="strike">Phrase</p>
</div>