在网页devise中应该不惜一切代价避免<br />和<hr />?

我不断地find需要使用<br />标签的地方,因为CSS不能做我需要的东西。 <br />是不是被认为是“devise”的一部分,而不是文档结构的一部分? 什么是可以接受的用法呢? 同样的规则是否也适用于<hr />

这是一个我感觉被迫使用<br />标签的例子:

我想要显示这个:

<address>1234 south east Main St. Somewhere, Id 54555</address>

喜欢这个:

东南1234号
某处,Id 54555

使用<br />或<hr />没有任何问题。 即使在新的HTML 5草案规范(相关规范信息 )中,它们都不是已弃用的标签。 实际上,要比W3C本身更好地说明<br />标签的正确用法是很困难的:

以下示例是br元素的正确用法:

<P> P上。 谢尔曼结果
42 Wallaby Way <br>
悉尼</ P>

不得将br元素用于分段中的主题组。

下面的例子是不合格的,因为他们滥用br元素:

<p> <a …> 34条评论</a>
<a …>添加评论<a> </ p>

<p>名称:<input name =“name”> <br>
地址:<input名称=“地址”> </ p>

这是上述的替代scheme,这是正确的:

<p> <a …> 34条评论</a>。</ p>
<p> <a …>添加评论<a> </ p>

<p>名称:<input name =“name”> </ p>
<p>地址:<input名称=“地址”> </ p>

<hr />也可以成为内容的一部分,而不仅仅是一个显示元素。 当谈到什么是内容,什么不是什么时,请做出正确的判断,并且知道何时使用这些元素。 它们在当前的W3C规范中都是有效的,有用的元素。 但是,伟大的力量来承担巨大的责任,所以正确使用它们。

编辑1:

在我第一次打“后”之后,又有一个想法 – 近年来networking开发人员的反感情绪很高,原因很多。 人们滥用<table>标签,将其用于网站布局和格式。 这不是它的目的,所以你不应该这样使用它。 但这是否意味着你不应该使用<table>标签? 如果你的代码中真的有一个诚实的表,例如,如果你正在写一篇科学文章,并且想要包含元素周期表 ? 在这种情况下,使用<table>是完全正确的,它变成了语义标记而不是格式化。 <br />是一样的情况。 当它是你的内容的一部分(即,文本应该在这些点为了成为正确的英文),使用它! 当你只是为了格式的原因而做这件事的时候,最好是尝试另一种方式。

只要你不要用段落forms,你可能在我的书里是好的;)我讨厌看:

 <p> ...lengthy first paragraph... <br/> <br/> ...lengthy second paragraph... <br/> <br/> ...lengthy third paragraph... </p> 

至于地址,我会这样做:

 <address class="address"> <span class="street">1100 N. Wullabee Lane</span><br/> <span class="city">Pensacola</span>, <span class="state">Florida</span> <span class="zip">32503</span> </address> 

但是,这可能是因为我喜欢jQuery,并希望在任何给定的时刻访问任何这些部分:)

就我个人而言,我觉得比使用这两个标签要糟糕的多。 过分担心这是浪费时间。

和其他所有东西一样, <br />可能会被滥用来进行devise。 <hr />旨在用于在视觉上划分文本的各个部分,但是是以局部意义上的。 <br />是为了做同样的事情,但没有水平线。

在网站上使用<hr />作为devise是一个devise缺陷,但是在这篇文章中,例如使用<br /><hr />是正确的,因为这部分文本会仍然必须是一段文字,即使网站布局改变了。

是文档中没有语义价值的表示元素,所以从纯粹的angular度来看,是应该避免的。

把HTML看作是一个表象工具,而不是一个需要自我描述的文档。 并没有添加语义值 – 而是代表浏览器中的一个非常具体的表示。

所有人都说,在你的方法是务实的。 尽量避免使用它们,但是如果你发现自己编码在墙上和天花板上,以避免它们,那么最好还是继续使用它们。 语义是重要的,但像这样的边缘情况不是他们最重要的地方。

我相信绝对避免使用普遍接受的解决scheme(即使它已经过时)与用<div>标签而不是<table>标签devise表格是一样的,只要您可以使用<div>

在devise你的网站时,你可能不需要使用<br />标签,但是我仍然可以想象它们在需要用户input的地方很有用。

我没有看到使用<br />任何错误 ,但没有遇到很多情况下,我需要使用它们。 在大多数情况下,如果这是您纵向分离内容所需要的,那么可能会比使用<br />标签更优雅(更漂亮)的解决scheme。

我在段之间放置了一个<hr style="display:none"> 。 例如,在多列布局中的列之间。 在不支持CSS的浏览器中,分离仍然是清晰的。

没有为什么? 他们是有用的构造。


添加本附录(附带HR),以防我的简短答案被解释为缺乏适当的考虑。 ;)

对于其他人通常所付出的时间来说,这是一种非常浪费的时间 – 试图提出跨浏览器CSS限制的解决scheme来解决用户界面问题,即BR和HR标签以及他们喜欢的在两秒内解决平。 为什么一些UI人浪费了太多的时间来尝试用纯粹的方式来使用像断行和水平线那样的经过validation的HTML构造,这对我来说是一个完全的秘密; 这两个标签,等等,都是完全合法的,确实在那里供您使用。 “纯”,从这个意义上讲,是无稽之谈。

我一起工作的一个devise师根本无法自己去做; 他会浪费几个小时,甚至几天,试图围绕它“编码”,并且还拿出一些在Opera中不起作用的东西。 我发现,完全莫名其妙。 老兄,添加BR,完成。 完全合法,像魅力一样,每个人都开心。

我全是抽象的介绍,不要误解我的意思; 我们全力以赴做最好的工作。 但是明智的。 如果花费了五个小时的时间,试图想出一些方法来实现,那么BR现在就给你一些东西,而神不会因为这样做而降火,那就去做吧。 有机会,如果这是有问题的,反正你的解决scheme可能有问题。

有趣的问题。 我一直用回车(因此作为内容的一部分,真的)。 不知道这是否是正确的方式,但它为我服务。

另一方面, <hr/>

我不会不惜一切代价但如果你想成为纯粹的,这些标签与结构和一切布局没有任何关系,但HTML应该将内容与表示分开。 <hr />可以通过CSS和通过正确使用像<p>这样的标签来完成。

如果你不想成为一个纯粹主义者,使用它们:)

我想你应该很less需要你的模板中的BR标签。 但有时可以在内容中调用,用户生成和系统生成。 就像如果你想保留段落中的一段文字,但在它之前需要换行符。

你有什么感觉你被迫使用BR标签?

<br>是表示换行符的HTML方法,因为没有其他的方法。

源代码中的物理换行符被理所当然地忽略(更正确的说:被视为一个单一的空格),所以你需要一种标记方式来expression它们。

不是每一个换行符都是新段落的开始,并且把文本打包成<div> s(例如),只是为了避免看起来太过偏执。 他们为什么打扰你?

BR是好的,因为强硬的换行符可能是内容的一部分,例如代码块(即使你可能使用PRE元素)或歌词。

另一方面,人力资源是纯粹的表象:一个横向的规则,一条横线。 改为使用border-top / bottom代替相邻元素。

我个人觉得,为了内容和风格的真正分离, <br /><hr />都应该避免。

至于在我自己的标记中<br />标签,我使用<div>结合CSS margin属性来处理任何需要换行符的内容,对于任何可能内联的东西,都使用<span>一个不同的“内容类”(显然可以将它们与class属性区分开来)。

要用cssreplace<hr />标签,我只需创build一个带有border-top-style css属性的<div> ,将其他三边设置为none 。 所述<div>marginpadding属性然后处理水平线的实际放置/定位。

就像我说的,我不是专家,我的网页devise经验大多是我用JSP页面工作的一个副作用(我是Java程序员),但在一些研究中我遇到了这个问题,想把我的两分钱…

确保包含一个指定XHTML的DTD。

如果你的DTD丢失或者指定了HTML4,那么正确parsingHTML4或更低版本的死肉会用尖括号来抛弃你的文档。

人力资源部门目前正在采取一些黑客行为来阻止移动浏览器的字体膨胀algorithm的发生。

此外,如果您有很多由HR分隔的小内容,则Googlebot目前将其视为“N个单独的条目”,这可能对您有用。

BRs应该只能用作段落内的换行符,这是一个非常罕见的印刷用法(除了可能在表格单元格内),我不知道有任何hacky的理由来使用它们。

您可以使用<br>但不要使用<hr>

<BR> – LINE BREAK
– 这是显示信息。 仍然在常用,但用于克制。

水平法则
– 显示没有语义值的信息 – 从不使用它。 根据定义,“横向”是一种视觉属性。

资料来源: 正确的HTML标签使用指南

如果你要严格的话,这是不好的用法。

<br/> <hr/>不是内容的一部分。 例如, <hr/>通常用于分隔文本块。 但是不可能有边界底? <br/>在许多情况下,我们可以看到它们是将文本限制在某种forms的方式,而这种方式不能用css来完成。

当然你不去严格不要太担心。