CSS选择器用于定位在p-tag中成对出现的最后一个br-tag?

时间:2013-11-29 12:31:16

标签: css css-selectors

我想在一些文本中规范化换行符和段落之间的间距。

为此,我希望折叠所有换行符,使它们本身不产生高度,然后将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;
}

示例:http://jsfiddle.net/jqcyc/

这是否可以使用给定的标记,最好没有任何javascript?

3 个答案:

答案 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/