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

<input type="button" />

而不是:

<button></button>

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


当前回答

在<button>元素中,您可以放置内容,如文本或图像。

<button type="button">Click Me!</button> 

这是该元素与使用<input>元素创建的按钮之间的区别。

其他回答

<button>很灵活,因为它可以包含HTML。此外,使用CSS进行样式设置要容易得多,而且样式设置实际上适用于所有浏览器。然而,Internet Explorer(Ew!IE!)存在一些缺点。Internet Explorer使用标记的内容作为值,无法正确检测value属性。表单中的所有值都会发送到服务器端,无论是否单击按钮。这使得将其用作<button type=“submit”>变得棘手和痛苦。

另一方面,<input type=“submit”>没有任何值或检测问题,但您不能像使用<button>那样添加HTML。它也很难进行样式设置,并且样式设置在所有浏览器中的响应并不总是很好。希望这有所帮助。

<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

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

引用HTML手册中的表单页:

使用BUTTON元素创建的按钮的功能与使用INPUT元素创建的相同,但它们提供了更丰富的呈现可能性:BUTTON元件可能有内容。例如,包含图像的BUTTON元素的功能类似于类型设置为“image”的INPUT元素,但BUTTON类型允许内容。

作为补充说明,<button>将隐式提交,如果您想在表单中使用按钮而不提交,这可能会导致问题。因此,使用<input type=“button”>(或<button type=“button”>)的另一个原因

编辑-更多详细信息

如果没有类型,按钮将隐式接收提交类型。表单中有多少提交按钮或输入并不重要,任何一个显式或隐式键入为提交的按钮或输入在单击时都将提交表单。

按钮支持3种类型

submit ||  "submits the form when clicked (default)"
reset  ||  "resets the fields in the form when clicked"
button ||  "clickable, but without any event handler until one is assigned"