你能用css来定位<br />吗?
是否有可能使用CSS定位line-break <br/>
标签?
每次出现换行时,我都想要一个1px的虚线。 我用自己的CSS自定义网站,不能更改设置的HTML,否则我会用一些其他的方式。
我不认为这是可能的,但也许有人知道的方式。
BR
生成一个换行符,它只是一个换行符。 由于这个元素没有内容,只有less数样式适用于它,如clear
或position
。 您可以设置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.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标签? 这是完全为你想要的。 有点像在你桌子上放着一把汤匙时,试着做一个吃汤的叉子。