<button> 是否应该包含嵌套的 DOM 元素?

Should <button> contain nested DOM element or not?

我没有意识到它是否不好,根据关于 HTML 语义书写的 W3C 规则 - 我们应该如何用后代元素编写 button 元素?

像这样:

<button>
 <div>
   <span>'hi'</span>
 </div>
</button>

或只有这个:

<button>'hi'</button>

基本上规范不允许这样做。

它可能适合您,但这不是最佳做法。

如您所见,here 按钮不能是交互式内容后代。

您还可以在 here

中验证您的 html

我在 W3C Validator 中测试了您的代码,显示的错误是 Element div not allowed as child of element button in this context. (Suppressing further errors from this subtree.)

<button> 中的嵌套标签是 not valid and returns the following when tested:

Element div not allowed as child of element button in this context.

非嵌套标签是正确的做法。

喜欢的可以自己看看。我用下面的HTML来测试:

<!DOCTYPE html>
<html lang="en"> 
<head> 
<title>Button test HTML</title> 
</head>
<body>
<button>
<div>
   <span>'not valid'</span>
 </div>
</button>
<button>Valid</button>
</body>
</html>

button element may contain elements that are phrasing content without also being interactive content。换句话说:在段落内级别使用的元素(有时称为 内联元素 ),并且不允许用户交互。

例如,这意味着它可能包含 span 个元素,但不包含 div 个元素。所以这是有效的:

<button>
  <span>'hi'</span>
</button>