我想在一些文本中规范化换行符和段落之间的间距。
为此,我希望折叠所有换行符,使它们本身不产生高度,然后将margin-bottom添加到两个连续<br>
标记的最后一个。
是否有一个css选择器让我选择<br>
中成对出现的最后<p>
个标签?
<p>
Some text<br />
Some more text<br /><br /> <!-- I wan't to target the last of these -->
Even more text<br /> <!-- Not this one -->
</p>
我尝试了以下选择器,但没有骰子。似乎+选择器忽略了文本而变得贪婪。
p br {
line-height: 0;
height:0;
margin:0;
padding:0;
content: " ";
display: block;
}
p br + br {
margin-bottom: 1em;
}
这是否可以使用给定的标记,最好没有任何javascript?
答案 0 :(得分:7)
原始文本在某种程度上是不可见到CSS选择器。根据您的HTML,CSS将其视为:
<p>
<br />
<br /><br /> <!-- I wan't to target the last of these -->
<br /> <!-- Not this one -->
</p>
所以每个<br />
,但第一个与p br + br
选择器匹配。没有办法以你接近它的方式解决你的问题(原始CSS)。
其他方法是 JavaScript 或服务器端(无论您使用何种语言 - PHP,Java等)。
答案 1 :(得分:2)
如果您总是拥有相同数量的br
代码,则可以使用br:nth-child(n)
来选择它们。
一个例子是:br:nth-child(2){ height:12345px; }
答案 2 :(得分:1)
没有CSS唯一的解决方案。但是您可以向要选择的<br />
元素添加一个类(并且避免使用两个连续的br)。这是jsfiddle http://jsfiddle.net/jqcyc/5/