在查看大多数网站(包括SO)时,大多数网站使用:

<input type="button" />

而不是:

<button></button>

两者之间的主要区别是什么?是否有合理的理由使用其中一个而不是另一个?是否有合理的理由使用组合它们?使用<button>是否存在兼容性问题,因为它没有被广泛使用?


当前回答

这篇文章似乎很好地概括了两者的区别。

从页面:

使用BUTTON元素创建的按钮与按钮一样使用INPUT元素创建,但是它们提供了更丰富的渲染可能性:BUTTON元素可能有内容。例如,按钮包含图像的元素函数类似于类型设置为的INPUT元素“image”,但BUTTON元素类型允许内容。Button元素-W3C

其他回答

如果您使用的是jQuery,则会有很大的不同。jQuery知道输入上的事件比按钮上的事件多。在按钮上,jQuery只知道“单击”事件。在输入上,jQuery能够识别“点击”、“聚焦”和“模糊”事件。

您可以随时根据需要将事件绑定到按钮,但只需注意jQuery自动识别的事件是不同的。例如,如果您创建了一个函数,该函数在页面上出现“focusin”事件时执行,则输入将触发该函数,但按钮不会触发。

<button>

默认情况下,其行为类似于具有“type=”submit“属性可以在没有表单的情况下使用,也可以在表单中使用。允许文本或html内容允许css伪元素(如:before)标记名通常是单个表单的唯一名称

vs.

<input type='button'>

类型应设置为“submit”,以作为提交元素只能在表单中使用。仅允许文本内容没有css伪元素与大多数表单元素(输入)相同的标记名

--在现代浏览器中,这两个元素都很容易使用css设置样式,但在大多数情况下,按钮元素是首选的,因为您可以使用内部html和伪元素设置更多样式

引用

重要提示:如果在HTML表单中使用button元素,不同的浏览器将提交不同的值。Internet Explorer将提交<button>和</button>标记之间的文本,而其他浏览器将提交value属性的内容。使用input元素在HTML表单中创建按钮。

发件人:http://www.w3schools.com/tags/tag_button.asp

如果我理解正确,答案是浏览器之间的兼容性和输入一致性

这篇文章似乎很好地概括了两者的区别。

从页面:

使用BUTTON元素创建的按钮与按钮一样使用INPUT元素创建,但是它们提供了更丰富的渲染可能性:BUTTON元素可能有内容。例如,按钮包含图像的元素函数类似于类型设置为的INPUT元素“image”,但BUTTON元素类型允许内容。Button元素-W3C

我将引用文章锚、输入和按钮之间的区别:

锚(<a>元素)表示超链接,即用户可以在浏览器中导航或下载的资源。如果您希望允许用户移动到新页面或下载文件,请使用锚点。

一个输入(<input>)表示一个数据字段:所以您打算将一些用户数据发送到服务器。有几种与按钮相关的输入类型:

<input-type=“submit”><input-type=“image”><input-type=“file”><输入类型=“重置”><input-type=“button”>

它们每个都有一个含义,例如“file”用于上传文件,“reset”清除表单,“submit”将数据发送到服务器。检查MDN或W3Schools上的W3参考。

按钮(<button>)元素非常通用:

可以在按钮中嵌套元素,例如图像、段落或标题;按钮还可以包含::before和::after伪元素;按钮支持禁用属性。这使得转向变得容易他们断断续续。

再次,检查MDN或W3Schools上<button>标记的W3参考。