在 <label> 和它的 <input> 之间使用 <br/> 标签是一种好的做法吗?

Posted

技术标签:

【中文标题】在 <label> 和它的 <input> 之间使用 <br/> 标签是一种好的做法吗?【英文标题】:Is the use of a <br/> tag between a <label> and its <input> good practice? 【发布时间】:2011-03-17 08:26:49 【问题描述】:

我的表单中的字段有一个标签、一些帮助文本、一些示例文本和一些上下文文本。

<!--With Help and Example-->
<li>
    <label for="ingredients">Ingredients</label>
    <br/><!--Is this good practice?-->
    <span class="help">Enter one ingredient per line.</span>
    <br/>
    <textarea id="ingredients" name="ingredients"></textarea>
    <br/>
    <span class="example"><b>Example:</b><br/>1 Cup of Flour<br/>Pinch of Salt<br/>1 Tbsp of Paprika</span>

<!--With context-->
<li>
   <label for="yield">Yield</label>
   <br /> <!--Wish labels were block and you had to style them to be inline-->
   <input type="number" id="yield" name="yield" />
   <span class="context"> servings.</span>
</li>

当我看到它没有样式时,它让我发疯了所有这些东西是如何在同一条线上运行的。

我可能在打字时想出了解决问题的方法。我想我可能会使用&lt;p&gt; 来获取帮助和示例文本。我仍然不喜欢标签总是与输入在同一行。

【问题讨论】:

你对&lt;b&gt;的使用绝对是糟糕的html 为什么?我不想强调它包含的文本。我只希望它在印刷/视觉上大胆。换一种说法。如果我把它排除在外并且没有使文本加粗,它仍然是完全有意义的。 w3schools.com/html5/tag_b.asp 【参考方案1】:

根据 W3 验证器,如果您的意思是“坏”为无效,则不会。 &lt;br&gt;s 允许在 &lt;label&gt;&lt;input&gt; 元素之间。

【讨论】:

实际上,&lt;br&gt; 元素是允许在 &lt;li&gt; 元素中的。它的兄弟姐妹完全不相关。 我知道它是有效的。我想我想知道的是这是否是好的做法。这个问题我可能想多了。【参考方案2】:

这本身还不错,但您应该使用 CSS 进行样式设置(例如布局)。它使代码更易于阅读。例如

CSS

<style type="text/css">
  #myrecipies label,
  #myrecipies li:first-child span:first-child,
  #myrecipies textarea 
    display: block;
  
</style>

HTML

<ul id="myrecipies">
  <li>
    <label for="ingredients">Ingredients</label>
    <span class="help">Enter one ingredient per line.</span>
    <textarea id="ingredients" name="ingredients"></textarea>
    <span class="example"><b>Example:</b><br/>1 Cup of Flour<br/>Pinch of Salt<br/>1 Tbsp of Paprika</span>
  </li>
  <li>
   <label for="yield">Yield</label>
   <input type="number" id="yield" name="yield" />
   <span class="context"> servings.</span>
  </li>
</ul>

这个code in action。

【讨论】:

【参考方案3】:

“Bad”无效?不。 “坏”是没有语义的?是的。

这样做的更好方法是将label 元素包装在p 元素中。毕竟,它们是段落。 (此外,标签不应该是块元素,它是一个内联元素,因为它为内联文本提供了用途,与em 或HTML5 @ 相同的方式987654326@ 元素可以——块元素的作用不止于此。使用 CSS 将其设置为块元素)

编辑:另见 Alohci 的回答,解释了为什么 &lt;br&gt; 在这里被错误地使用。

【讨论】:

在段落中包装标签?这并不比使用换行符更好。大多数表单标签不是文本段落,因此它们不属于 &lt;p&gt; 标记。 一个“段落”不必超过几个词,它只是描述一个文本块。 不,在书面形式中,一个段落通常包含一个或多个句子 (en.wikipedia.org/wiki/Paragraph) 并处理单个点或想法。由于 W3C 规范规定 &lt;p&gt; 标记表示一段文本 (w3.org/TR/1999/REC-html401-19991224/struct/text.html#h-9.3.1),因此表单标签是对 &lt;p&gt; 元素的不当使用。【参考方案4】:

如果一个人真的很迂腐,那么&lt;br/&gt; 的几乎所有用法都是“糟糕的 HTML”。 &lt;br/&gt; 表示语义换行符。换句话说,删除&lt;br/&gt; 会改变内容的含义。这些真的只出现在诗歌/歌词和邮政地址中。

您可以通过使 &lt;li&gt;s 中的其他元素具有 display:block 样式来实现相同的结果。

【讨论】:

谢谢。我想多了。我正计划将它们设计为块状。在我编写 HTML 时,我一直在浏览器中查看它们在一行中的运行情况。我忍不住想打破界限。【参考方案5】:

我认为标签不需要与输入字段位于同一行。 对于良好的用户体验来说,唯一重要的是它在它旁边,这也可能意味着在上面。

【讨论】:

以上是关于在 <label> 和它的 <input> 之间使用 <br/> 标签是一种好的做法吗?的主要内容,如果未能解决你的问题,请参考以下文章

<label> 怎样才能完全填满它的父 <td> 呢?

[codevs1378]选课

如何在nativescript中使Label元素内联?

解释下浮动和它的工作原理?清除浮动的技巧

NOI2002银河英雄传说

JavaScript中的label语句,及应用