【发布时间】:2017-02-19 01:36:10
【问题描述】:
我在这里提出了一个问题:How to avoid spaces when wrapping markup across multiple lines,并了解到我可以在跨多行编写标记时避免空格。但是,当我将此方法应用于具有伪元素::before 和::after 的元素时,它不起作用。
同样,如果我只在一行上写标记为<span class="inline">i, friend</span>,它将如我所愿显示“嗨,朋友”。
但是当我把它分成多行时,它会显示 "H i,friend s" 里面有不必要的空格。
这是我的 css 代码和 html 代码::
.parent {
font-size: 0;
}
.parent > span {
font-size: 16px;
display: inline-block;
}
.parent > span::before {
content: "H";
}
.parent > span::after {
content: "s";
}
<p class="parent">
<span>
i, friend
</span>
</p>
我知道不推荐写
<span>
i, friend
</span>
而不是<span>i, friend</span>。
但如果我坚持(见谅),是否可以如我所愿显示“嗨,朋友们”?
【问题讨论】:
-
我能看到这个工作的唯一方法是浮动所有左边并将之前和之后放在父级上:jsfiddle.net/n8hxtzos。看起来你是在为自己创造额外的工作,但如果你要固执的话……
-
您可以使用否定的
margin-right(和margin-left用于::after)来对齐字母。骇人听闻,你仍然会有一个空白(在整个文本的前面而不是在里面),但可能看起来像你想要的(除非第一个或最后一个字母在它们自己的文本行上)。 -
@Pete 谢谢。您的代码确实有效。你能告诉我为什么 float 可以修剪不必要的空间吗?
-
@Pete 在这里似乎是一个小问题。如果我在
<p>中添加更多<span>,则只能为第一个<span>添加“H”,为最后一个添加“s”。无论如何,当我只有一个子元素时它可以正常工作。 -
@Xenos 感谢您的建议。我在努力寻找更多的可能性,所以我看起来有点固执:)
标签: html css line-breaks pseudo-element spaces