0%

HTML+CSS

记录使用html及css中的一些零散的知识点

HTML

<input><button> 的区别

常见的使用样例

1
2
3
4
5
6
# input
<form action="demo_form.asp">
First name: <input type="text" name="fname"><br>
Last name: <input type="text" name="lname"><br>
<input type="submit" value="提交">
</form>
1
2
# button
<button type="button">点我!</button>

在继续讲述它们的区别的时候,不得不先讲清楚在一个页面上画一个按钮的方式有哪些?

在一个页面上画一个按钮,有四种办法:

  • <input type="button" /> 这就是一个按钮。如果你不写javascript 的话,按下去什>么也不会发生。
  • <input type="submit" /> 这样的按钮用户点击之后会自动提交 form,除非你写了javascript 阻止它。
  • <button> 这个按钮放在 <form> 中也会点击自动提交(但是对对很多浏览器的兼容性较差,还需要用 type属性来确保),比前两个的优点是按钮的内容不光可以有文字,还可以有图片等多媒体内容。(当然,前两个用图片背景也可以做到)。它的缺点是不同的浏览器得到的 value 值不同;可能还有其他的浏览器兼容问题
  • 其他标签,例如 a, img, span, div,然后用图片把它伪装成一个按钮。

作者:王洪雷, 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。(本引用中该博客持有人为了方便记录知识做了部分修改)

更需强调的是它们的本质是不同的

<input type="submit" />不是一个画面元素,而是一个表单(Form)元素,和文本输入是一样的,都属于“数据”的一部分(特征是,有value属性,而且该属性的值,会被传送到server端,可以拿来用),而不是样式的一部分。这种表现和数据混淆的设计,是早期web标准还比较简陋的时代的遗产。
从画面表现上看,通过CSS可以把两者描绘得完全一样。
从画面动作上看,通过JS可以强制两者动作也一致(都提交或者都不提交)。
但是只有表单数据这个特性,是无法混淆的。<button>无法把自己当成form的数据。

所以:

  • 如果只是个单纯的按钮,触发一些画面动作,请使用<button>
  • 反之,会把画面的数据提交给Server的,一般用< input type="submit" />,当然<button> + JS也完全可以取代。

作者:知乎用户, 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

CSS

HTML+CSS