您可以在:after伪元素中添加换行符吗?


73

我想将a附加<br />到特定的类。使用:after伪类仅显示<br />为文本。

有没有办法使这项工作?

它是IE8的内部功能,因此浏览器问题不成问题。如果我做

<span class="linebreakclass">cats are</span> brilliant

我希望“辉煌”出现在新行中。


1
请参阅以下问题:使用CSS内容添加HTML实体尽管基于其他答案,这听起来还是行不​​通的……
roryf

Answers:


71

您将无法呈现HTML标签,但可以设置如下样式:

.needs-space:after {
    content: " ";
    display: block;
    clear: both; /* if you need to break floating elements */
}

这里主要设置display: block;这将使:后里面的内容DIV。所有最新的浏览器都支持此伪元素。包括IE。说这话,您应该注意您的用户及其浏览器。


完美的工作,谢谢。这是一个内部软件项目,所有计算机都在运行IE8,所以我不介意使用复杂的CSS :)
NibblyPig

14

您可以使用\A转义序列,该序列将作为换行符呈现:

.new-line:after {
  white-space: pre-wrap;
  content: "\A";
}

CCS 2.1规范中针对该content属性提到了此方法:

作者可以通过"\A"'content' 属性后的字符串之一中写入转义序列,在生成的内容中包括换行符 。此插入的换行符仍受该'white-space'属性约束 。


1

情况变得更糟-:after类甚至在IE6中也不起作用(可能还有其他一些浏览器)。

我认为您真正想要的是元素底部的边距,以提供间距。

只是

.myElement {
    margin-bottom: 1em;
}

为澄清而进行编辑-我认为没有保证金可以做到吗?
NibblyPig,2009年

我知道了-我的答案仅适用于该问题
的第一版
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.