我可以使用HTML5在<a>内嵌入<button>元素吗?
我正在做以下事情:
<a href="www.stackoverflow.com">
<button disabled="disabled" >ABC</button>
</a>
这很好,但我得到一个HTML5验证错误,说“元素'按钮'不能嵌套在元素'按钮'中。
任何人都可以给我建议我应该做什么?
不 ,根据W3C的HTML5规范文档,它不是有效的HTML5:
内容模型:透明,但不能有交互式内容后裔。
只要内部没有交互式内容(例如按钮或其他链接),a元素就可以环绕整个段落,列表,表格等等甚至整个部分。
换句话说,除了下面的内容外,你可以嵌套<a>
任何元素:
<a>
<audio>
(如果控件属性存在)
<button>
<details>
<embed>
<iframe>
<img>
(如果usemap属性存在)
<input>
(如果type属性不处于隐藏状态)
<keygen>
<label>
<menu>
(如果type属性处于工具栏状态)
<object>
(如果usemap属性存在)
<select>
<textarea>
<video>
(如果控件属性存在)
如果您试图将按钮链接到某处,请将该按钮封装在<form>
标签中,如下所示:
<form style="display: inline" action="http://example.com/" method="get">
<button>Visit Website</button>
</form>
但是,如果您的<button>
标签使用CSS样式,并且看起来不像系统的小部件...请帮助自己,为<a>
标签创建一个新类并以相同的方式设计它。
如果你使用的是Bootstrap 3 ,这个效果很好
<a href="#" class="btn btn-primary btn-lg active" role="button">Primary link</a>
<a href="#" class="btn btn-default btn-lg active" role="button">Link</a>
没有。
以下解决方案依赖于JavaScript。
<button type="button" onclick="location.href='http://www.stackoverflow.com'">ABC</button>
如果将按钮放置在现有的<form>
并且method="post"
,则确保该按钮具有属性type="button"
否则该按钮将提交POST操作。 通过这种方式,您可以拥有一个包含GET和POST操作按钮混合的<form>
。
上一篇: Can I nest a <button> element inside an <a> using HTML5?