使用CSS删除多个额外的中断标记

时间:2012-09-06 07:18:57

标签: html css layout

我的HTML包含多个<br>标记。

<br>
<br>
<br>
<br>
<br>
TITLE
<br>
<br>
foo bar
<br>
foo bar
...

我想最多只保留单休息和双休息(新行和新段落),我想忽略所有额外的<br>。因此,一个接一个地最多2 <br>。所以,

<br><br><br><br><br>TITLE<br><br>foo bar<br>foo bar<br><br><br>foo bar

会变成

<br><br>TITLE<br><br>foo bar<br>foo bar<br><br>foo bar

如何使用CSS执行此操作?

我想选择所有<br>元素,这些元素至少有2个先前的<br>兄弟姐妹

编辑:对于更多的上下文,HTML在外部网站上,我尝试用firefox / Stylish改进阅读,所以只有CSS

2 个答案:

答案 0 :(得分:5)

使用:nth-child选择器可以轻松实现。

<强> CSS:

br:nth-child(3n + 3) { display: none; }​

SEE DEMO

答案 1 :(得分:2)

<br>代码can't be styled in any other way in most browsers,您可以隐藏它们:

br+br+br {display: none}​ /* (Also works in IEs 7+8) */

http://jsfiddle.net/nottrobin/Wxf3D/1/(感谢@ A.K)

问题在于,使用标记<br><br><br>hello<br>它也会匹配最终的<br>,因为它不会将文本节点计为兄弟节点。您可以通过将标记更新为:

来解决此问题
<br><br><br><br><br>
<p>TITLE</p>
<br><br>
<p>foo bar</p>
<br>
<p>foo bar</p>

当然,如果您愿意,也可以使用jQuery删除这些元素:

<script>
    jQuery("br+br+br").remove();
</script>

(我担心我试图制定一个只有JavaScript的解决方案时会失去耐心)