button默认type="submit"易致表单误提交;button支持HTML嵌套、flex对齐更优、原生表单高级属性及无障碍;input type="button"仅适用遗留系统value依赖场景。

不写type属性时,button默认会提交表单
这是最常踩的坑:在
input type="button"没有这些能力,它的作用域被严格限制在自身节点上。
另外,button天然响应:focus-visible,无障碍体验更稳;input需要手动加aria-label补全语义,否则屏幕阅读器可能只读出“按钮”两个字。
旧版 IE 兼容性不是你该选input type="button"的理由
现在还要求支持 IE8 或更老内核的项目极少。而就算真要兼容,input type="button"在旧 IE 里也有问题:文字垂直居中失效、padding渲染异常、line-height常被忽略。反倒是button在 IE9+ 中行为统一,加上一句button { vertical-align: middle; }就能压住大部分对齐问题。
真正该用input type="button"的场景只剩一个:遗留系统无法修改 DOM 结构,且已有大量依赖value取值逻辑的 JS 代码(比如用el.value读按钮文字),改button会牵扯太多。
其他所有情况,优先写——别省那几个字符,漏掉type属性才是真麻烦。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











