对于表单字段,使用<br/>与<p> </p>和CSS相比,当前接受的桌面,移动和可访问性最佳实践是什么?

时间:2014-12-05 17:41:08

标签: html accessibility

问题:我是否应该避免使用<br/>来破坏行以支持在<p></p>中包装内容?什么时候可以使用<br/>(如果有的话)?

它们在我称之为典型的桌面浏览器方面都能很好地工作,但是其中一种方法可以更好地使用辅助功能和移动设备吗?

目前推荐的最佳做法是什么? (这似乎是一个不断变化的目标。)

例如,在做这样的事情时:

使用<br/>将标签与输入分开

&#13;
&#13;
<label for="txtUsername">Username</label><br/>
<input type="text" id="txtUsername" autocomplete="off" maxlength="50" spellcheck="false"/>
&#13;
&#13;
&#13;

使用<p></p>将标签与输入分开

&#13;
&#13;
<p><label for="txtUsername">Username</label></p>
<p><input type="text" id="txtUsername" autocomplete="off" maxlength="50" spellcheck="false"/></p>
&#13;
&#13;
&#13;

我已经搜索了一下,似乎没有达成100%的共识,我想我会想起那个精彩的SO社区..谢谢!

4 个答案:

答案 0 :(得分:4)

在HTML5中,只有在换行符为#34;实际上是内容的一部分时才能使用br element。适用br的典型示例:in postal addressesin poems

由于示例中的换行符没有意义(似乎只是出于布局原因需要;另请参见下面的示例),您不能使用br。您应该使用CSS(display:block)。

div元素默认情况下通常附带此CSS声明,并且使用它(或更具体的元素,如p,如果合适)允许没有CSS支持的用户代理(例如,文本浏览器) )以更易于理解的方式显示内容(如果使用所谓的&#34;块级&#34;元素,它们通常也会显示换行符。)


规范在一个例子中明确提到了类似的案例:

  

以下示例不合规,因为它们滥用了br元素:

     

[...]

<p><label>Name: <input name="name"></label><br>
<label>Address: <input name="address"></label></p>

答案 1 :(得分:1)

确定页面上元素的可视布局通常在CSS中完成,并且最好在可能的情况下分离关注点。因此,将标签标签放在输入标签的单独行上将通过CSS完成,例如,将label设为display:block

答案 2 :(得分:1)

如果您的意图真的是

  

快速掌握最佳实践和标准

然后我建议熟悉HTML5中提出的结构。如果您尝试使用HTML5的构造,则会尝试避免使用<br>标记,而是将您的内容排列在semantic markup内,并使用CSS格式化内容。

答案 3 :(得分:0)

p-tag代表段落。一段中的内容应始终独立于另一段中的内容。顺便提一下,大多数浏览器都会使用更大的空间/两个p标签之间的空行。

因此,如果你不想使用css(这将是我的首选) - 请使用br。

但是,如果你真的希望将内容分开,请不要做这样的事情(不幸的是很常见):

&#13;
&#13;
Some example text.<br/><br/>
Even more example text.
&#13;
&#13;
&#13;

在这里你真的会使用p-tags:

&#13;
&#13;
<p>Some example text.</p>
<p>Even more example text.</p>
&#13;
&#13;
&#13;