你能用css来定位<br />吗?

是否有可能使用CSS定位line-break <br/>标签?

每次出现换行时,我都想要一个1px的虚线。 我用自己的CSS自定义网站,不能更改设置的HTML,否则我会用一些其他的方式。

我不认为这是可能的,但也许有人知道的方式。

BR生成一个换行符,它只是一个换行符。 由于这个元素没有内容,只有less数样式适用于它,如clearposition 。 您可以设置BR的边框,但不会看到它,因为它没有视觉尺寸。

如果你想在视觉上将两个句子分开,那么你可能要使用为此目标而devise的水平尺 。 既然你不能改变标记,恐怕只能使用CSS你不能实现这一点。

看来,已经在其他论坛上讨论过了。 从Re中提取:使用CSS设置BR元素的高度

对于无线电通信局而言,他导致了一个有点奇怪的地位,那就是一方面它不被当作一个正常的要素,而是作为生成的内容中的\ A的一个实例,但是另一方面它被当作是一个正常的CSS元素属性(一个有限的子集)被允许。

我还在CSS 1规范中find了一个说明(没有更高级的规范提到它):

当前的CSS1属性和值不能描述“BR”元素的行为。 在HTML中,“BR”元素指定了单词之间的换行符。 实际上,该元素被换行符replace。 未来版本的CSS可能会处理添加和replace的内容,但是基于CSS1的格式化程序必须特别对待“BR”。

格兰特·瓦格纳(Grant Wagner)的testing表明,无法像对待其他元素一样对BR进行风格化。 还有一个在线的网站,您可以在浏览器中testing结果 。

更新

宾夕法尼亚州进行了一些进一步的调查,并指出 ,IE8(在Win7上)和Chrome 2 / Safari浏览器4b让你有些BR风格。 实际上,我使用IE Net Renderer的IE8引擎检查了IE演示页面 ,并且工作正常。

更新2 c69做了一些进一步的调查,事实certificate,你可以风格标记br相当多,但不是跨浏览器),但这不会影响换行本身,因为它似乎属于父容器。

尝试以下方法,我使用Update 2从另一个高票的答案放在一起,它完全适合我:

 br { content: "A" !important; display: block !important; margin-bottom: 1.5em !important; } 

为了未来访客可能错过我的评论的好处:

 br { border-bottom:1px dashed black; } 

不起作用。

它已经在IE 6,7和8,Firefox 2,3和3.5B4,Safari 3和4 Windows,Opera 9.6和10(alpha)和谷歌浏览器(版本2)进行了testing,并没有在任何他们。 如果在将来某个时候有人发现一个支持<br>元素的浏览器,请随时更新这个列表。

另外请注意,我尝试了一些其他的事情:

 br { border-bottom:1px dashed black; display:block; } br:before { /* and :after */ border-bottom:1px dashed black; /* content and display added as per porneL's comment */ content: ""; display: block; } br { /* and :before and :after */ content: url(a_dashed_line_image); } 

其中,Opera 9.6和10(alpha)(谢谢!):

 br:after { border-bottom:1px dashed black; content: ""; display: block; } 

当它只在一个浏览器中被支持的时候不是很有用,但是我总是发现有趣的是看看不同的浏览器是如何实现这个规范的。

有一个很好的理由,你需要风格的标签。

当它是代码的一部分,你不想(或不能)改变,你想这个特定的不显示。

 .xxx br {display:none} 

可以节省很多时间,有时候也可以节省一天时间。

我知道你不能编辑HTML,但如果你可以修改CSS,你可以添加JavaScript?

如果是这样,你可以包括jquery,那么你可以做

 <script language="javascript"> $(document).ready(function() { $('br').append('<span class="myclass"></span>'); }); </script> 
 br { padding: 1px 8px; border-bottom: 1px dashed #000 } 

在IE8中呈现如下…不过在一个浏览器中并不是很多。

IE 8截图

(注意我使用IE 8.0.7100(在Win7 RC),如果这有什么区别)

也,

 br:after { content: "..." } br { content: "" }` 

要么,

 br:after { border: 1px none black; border-bottom-style: dashed; content: ""; padding: 0 6px 0; } 

br { content: "" }

在Chrome 2 / Safari浏览器4b中给出了一条虚线,但是失去了换行符(除非有人能想出一种方法来重新引入),这使得它变得毫无用处。

例如
IE8testing , Chrome / Safaritesting等

我自己的testing结果表明, br标签不喜欢成为CSS的目标。

但是,如果你可以添加样式,那么你也可以添加一个脚本标签到页面的标题? 链接到一个外部.js ,这样做是这样的:

 function replaceLineBreaksWithHorizontalRulesInElement( element ) { elems = element.getElementsByTagName( 'br' ); for ( var i = 0; i < elems.length; i ++ ) { br = elems.item( i ); hr = document.createElement( 'hr' ); br.parentNode.replaceChild( hr, br ); } } 

所以总之,这不是最佳的,但这是我的解决scheme。

这似乎解决了这个问题:

 <!DOCTYPE html> <style type="text/css"> #someContainer br { display:none } #someContainer br + a:before { content:"|"; color: transparent; letter-spacing:-100px; border-left: 1px dashed black; margin:0 5px; } </style> <div id="someContainer"><a>link</a><br /><a>link</a><br /><a>link</a></div> 

BR是内联元素,而不是块元素。

所以,你需要:

  br.Underline{ border-bottom:1px dashed black; display: block; } 

否则,对这样的事情稍微挑剔的浏览器会拒绝将边界应用到BR元素,因为内联元素没有边界,填充或边距。

这将工作,但只在IE浏览器。 我在IE8中testing它。

 br { border-bottom: 1px dashed #000000; background-color: #ffffff; display: block; } 

我把一个<br>标签放到<span>标签中,并能够使用display:none;<span>上控制何时不使用媒体查询使用<br>标记。

老问题,但这是一个相当干净整洁的修复,可能会用于仍然想知道是否有可能的人:) 🙂

 br{ content: '.'; display: inline-block; width: 100%; border-bottom: 1px dashed black; } 

为什么不使用HR标签? 这是完全为你想要的。 有点像在你桌子上放着一把汤匙时,试着做一个吃汤的叉子。