用CSS忽略<br>

Eva*_*nss 102 css

我正在一个网站上插入换行符,就像<br>在某些标题中一样.假设我无法编辑源HTML,有没有CSS的方法我可以忽略这些中断?

我正在移动优化网站,所以我真的不想使用JavaScript.

eno*_*rev 181

使用css,您可以"隐藏"br标签,它们不会产生影响:

br {
    display: none;
}
Run Code Online (Sandbox Code Playgroud)

如果您只想在特定标题类型中隐藏一些,只需使您的CSS更具体.

h3 br {
    display: none;
}
Run Code Online (Sandbox Code Playgroud)

  • 一定要看看Aneesh的答案,它是相关的,并修复了enobrev没有考虑的问题. (10认同)
  • 同意,Aneesh 的回答是一个很棒的补充。http://stackoverflow.com/a/18040142/14651 (3认同)
  • 此解决方案不适用于Firefox.如果周围没有空间,那么它将周围的单词组合在一起.这是[样本](http://jsfiddle.net/P6NZd/28/)你可以看到关于它的讨论[下面](http://stackoverflow.com/a/21754314/1412655) (2认同)

Kar*_*k C 87

注意:此解决方案仅适用于Webkit浏览器,它会将伪元素错误地应用于自动关闭标记.

作为上述答案的补充,值得注意的是,在某些情况下,需要插入空格而不是仅仅忽略<br>:

例如,上述答案将转向

Monday<br>05 August
Run Code Online (Sandbox Code Playgroud)

Monday05 August
Run Code Online (Sandbox Code Playgroud)

正如我在尝试格式化每周活动日历时验证的那样.优选插入"星期一"之后的空格.这可以通过在CSS中插入以下内容轻松完成:

br  {
    content: ' '
}
br:after {
    content: ' '
}
Run Code Online (Sandbox Code Playgroud)

这将使

Monday<br>05 August
Run Code Online (Sandbox Code Playgroud)

看起来像

Monday 05 August
Run Code Online (Sandbox Code Playgroud)

如果要用逗号分隔,或者将任何想要的内容放在其中以使其成为分隔符,则可以更改content属性!顺便说说br:after', '' '

Monday, 05 August
Run Code Online (Sandbox Code Playgroud)

看起来整洁;-)

请参阅此处以供参考.

如上面的答案,如果你想使它特定于标签,你可以.因为如果你想要这个属性为标签的工作<h3>,只需添加一个h3每之前brbr:after,例如.

它最常用于伪标签.

  • 好点但这似乎只适用于使用Firefox和IE的Webkit浏览器(Chrome和Safari)这种技术不起作用,请查看http://jsfiddle.net/nicooprat/ZHxNA/与Firefox和IE ...任何想法如何用空间替换br以便它可以与所有主要的braowsers一起使用? (9认同)
  • 这是非常错误的解决方案,主要是因为@ScottS已经编写的内容."内容"应该仅适用于伪元素,而伪元素不适用于自闭合标记.这可能现在有效,但我不敢称此解决方案面向未来. (6认同)
  • @firepol:实际上,Firefox和IE正在做"正确"的事情,因为`<br />`是一个[伪元素不应该工作的元素](http://stackoverflow.com/tags/pseudo - 元素/信息).而`content`仅适用于伪元素. (4认同)
  • 非常天才! (2认同)

Tim*_*mes 16

如果你加入风格

br{
    display: none;
}
Run Code Online (Sandbox Code Playgroud)

然后这将工作.不确定它是否适用于IE的旧版本.

  • 这是早些时候发布的,投票少了......怎么了? (3认同)

Neo*_*Neo 9

我是这样做的:

br { 
    display: inline;
    content: ' ';
    clear:none;
}
Run Code Online (Sandbox Code Playgroud)


Net*_*fer 6

您可以使用span元素而不是br您希望白色空间方法工作,因为它依赖于被替换元素"未定义"的伪元素.

HTML

<p>
   To break lines<span class="line-break">in a paragraph,</span><span>don't use</span><span>the 'br' element.</span>
</p>
Run Code Online (Sandbox Code Playgroud)

CSS

span {white-space: pre;}

span:after {content: ' ';}

span.line-break {display: block;}

span.line-break:after {content: none;}
Run Code Online (Sandbox Code Playgroud)

DEMO

通过将适当的span元素设置为,可以简单地实现换行display:block.

通过在HTML标记中使用ID和/或类,您可以轻松地通过CSS或使用CSS选择器来定位每个单独或跨度元素的组合nth-child().

因此,您可以使用媒体查询为响应式布局定义不同的断点.

您还可以通过Javascript(jQuery)简单地添加/删除/切换类.

这种方法的"优点"是它的健壮性 - 适用于支持伪元素的每个浏览器(参见:我可以使用 - CSS生成的内容).

作为替代方案,还可以通过伪元素添加换行符:

span.break:before {  
    content: "\A";
    white-space: pre;
}
Run Code Online (Sandbox Code Playgroud)

DEMO

  • 你有没有错过这部分问题:"假设我无法编辑源代码html"? (4认同)
  • @ScottS:不,我没有。也许你错过了这一部分:“我想要一个解决方案来解决@Aneesh Karthik C对firefox和opera的答案”(因为开始赏金的人不是OP)。答案是,使用 `&lt;br&gt;` 是不可能的,至少不能跨浏览器。所以我展示了一个替代方案。 (2认同)
  • 不,我没有错过那部分(OP不同于赏金和关注Aneesh的回答).但是,Aneesh的回答是在整个问题的背景下,"忽略CSS与CSS?" 似乎很明显,如果一个人对html有实际控制权,那么简单地_deleting_```元素就可以解决问题(可能用空格替换它们).因此整个问题所关注的整个问题是当一个人无法控制html_时; 复杂的附加规定,他们真的不想使用JavaScript(无论出于何种原因)来解决它. (2认同)
  • 问题“如何使用 CSS 忽略`&lt;br&gt;`?” 已经得到答复了。仅当您可以控制 HTML 时,并不意味着您想要更改它。但在响应式设计中,通常需要控制换行符(自动换行除外)。在这种情况下,使用空白或不受 CSS(媒体查询)控制的方法至少是实现该目标的“一种方法”。 (2认同)