防止伪元素自己打断行

时间:2019-02-06 15:36:31

标签: css line-breaks pseudo-element

我有一个链接样式,该链接样式使用&::after在链接末尾添加了SVG箭头。问题在于,当视口更改大小时,有时只有SVG会中断一行。如何设置它,以便SVG总是在<a>标签中的最后一个单词处换行?

.txtbtn {
  font-size: 1.125rem;
  line-height: 1.222222222;
  letter-spacing: 2.57px;
  color: orange;
  text-decoration: none;
  position: relative;
  text-transform: uppercase;
}

.txtbtn::after {
  position: relative;
  top: 0;
  display: inline-block;
  margin-left: 12px;
  width: 22px;
  height: 15px;
  content: "";
  background: url('https://www.jea.com/cdn/images/svgs/right-arrow.svg') no-repeat center center;
  background-size: contain;
}
<p><a href="#" class="txtbtn">Lorem ipsum dolor sit amet, consectetur abittor.</a></p>

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您可以添加等于图标大小的负边距,并在父元素上使用填充来纠正此问题。当我们到达第一个单词时,该技巧将使您能够中断,并且在逻辑上图标也会跟随。

我还删除了margin-left,并加大了宽度,然后将背景位置调整到了右侧。

p {
  padding-right:22px;
}
.txtbtn {
  font-size: 1.125rem;
  line-height: 1.222222222;
  letter-spacing: 2.57px;
  color: orange;
  text-decoration: none;
  position: relative;
  text-transform: uppercase;
}

.txtbtn::after {
  position: relative;
  top: 0;
  display: inline-block;
  margin-right:-32px;
  width: 32px;
  height: 15px;
  content: "";
  background: url('https://www.jea.com/cdn/images/svgs/right-arrow.svg') no-repeat right/contain;
}
<p><a href="#" class="txtbtn">Lorem ipsum dolor sit amet, consectetur abittor.</a></p>

答案 1 :(得分:2)

您可以将最后一个单词包裹在<span>中,然后将跨度设置为具有puesdo元素并将其设置为white-space: nowrap;

赞:

.txtbtn {
  font-size: 1.125rem;
  line-height: 1.222222222;
  letter-spacing: 2.57px;
  color: orange;
  text-decoration: none;
  position: relative;
  text-transform: uppercase;
}

.txtbtn span::after {
  position: relative;
  top: 0;
  display: inline-block;
  margin-left: 12px;
  width: 22px;
  height: 15px;
  content: "";
  background: url('https://www.jea.com/cdn/images/svgs/right-arrow.svg') no-repeat center center;
  background-size: contain;
}

.txtbtn span {
  white-space: nowrap;
}
<p><a href="#" class="txtbtn">Lorem ipsum dolor sit amet, consectetur <span>abittor.</span></a></p>