将<div>或<span>放在<button>中是否在语义上不正确?</button> </span> </div>

时间:2012-10-19 20:50:17

标签: html5

我想做以下事情,但它在语义上是否正确?

<button>
  <div></div>
  <div></div>
</button>

6 个答案:

答案 0 :(得分:31)

目前的HTML5草案说它不正确。

http://www.w3.org/TR/2012/WD-html5-20120329/the-button-element.html#the-button-element<button>必须只包含短语内容。短语内容定义为包括<span>但不包括<div>

答案 1 :(得分:14)

不,它无效。您可以在W3C验证它。

http://validator.w3.org/#validate_by_input+with_options

将其粘贴到直接输入中,然后验证。

<!DOCTYPE html>

<button>
  <div></div>
  <div></div>
</button>

设置UTF8编码,并在W3C测试时选择HTML5。

答案 2 :(得分:5)

我确定这是异端的,但是如果您想要验证,您可以始终在按钮内使用<span>元素并将其设置为<div>

button span {

  display: block;

}
<button>
  <span>I'm a div</span>
  <span>I'm a div</span>
  <span>I'm a div</span>
</button>

今天验证了这一点。是否会在十年内验证是另一回事......

enter image description here

答案 3 :(得分:1)

跨度似乎是合法的。

enter image description here

(来自https://validator.w3.org/的截图)

答案 4 :(得分:1)

Div和span元素没有任何语义。它们是泛型块和内联元素。当你使用它们时,你需要问自己关于语义的唯一问题是这个内容是否有更好的语义元素?

也就是说,由于与语义无关的原因,将div放在按钮内是不正确的。 specification说明按钮的内容模型:

  

短语内容,但必须没有互动内容后代。

......一个范围是短语内容,但div不是。

答案 5 :(得分:0)

button 应该包含单个 div 或 span,如果你想在一个按钮中放置多个 div 或 span,首先将每个内容放在一个 div 或 span 中并应用 style="Display:flex;"或 style="Display:-webkit-box;"。