css中input与button高度不一致的原因及解决方法

【css文本框与按钮不对齐解决方案 】button在高度计算上始终使用了Quirks模式。在Quirks模式下,边框的计算是在元素的宽度内的,而不像标准模式一样计算在外部(button的高度包含边框的高度,而文本框text则不包含边框高度。)

表单是网页中的重要元素,以及高频率出现的元素,如何把表单做的漂亮非常重要。首先我们需要解决一个实际的问题,就是文本框与按钮不对齐的问题。这个看似简单的问题追究到底可以发现很多我们未尝想到的原理。按钮(button)的高的解析问题导致了不对其问题的根本原因。

下面演示正确的代码示范。

  1. 文字要包含在label标签中,并设置行高,否则文字会与文本框的顶 端对齐。
  2. 文本框要设置vertical-align:middle;否则文本框与button顶端对齐。
  3. button中文字垂直居中,要设置高和行高,行高要小于高。

对input标记设定样式,代码如下:

HTML 代码

<form> <input type=”text” name=”textfield” id=”textfield” />
<input type=”submit” name=”button” id=”button” value=”提交” />
</form>

CSS 代码

#textfield{border:1px solid #000;height:16px;}
#button{background:#FFF;color:#000;border:1px solid #000;height:20px;}

文本域设置高度 16px,按钮高度需要设置 20px。按照 IE 的标准正常对齐,但在 Firefox 中文本域和按钮高度是错开的。

兼容 Firefox

此时通过对 input 标记设定左浮动 (float:left),即可兼容 Firefox,CSS 代码如下:

#textfield{border:1px solid #000;height:16px;float:left;}
#button{background:#FFF;color:#000;border:1px solid #000;height:20px;float:left;}

当然,可以使用CSS Hack以更有针对性地控制浏览器表现。

小结:

  1. button在高度计算上始终使用了Quirks模式。
  2. 在Quirks模式下,边框的计算是在元素的宽度内的,而不像标准模式一样计算在外部,所以在text和button上同时设置边框就会得到button的高度比text小的现象。
  3. 文本框要与button按钮对齐,button的高度是要高于文本text的高度的。
  4. button的高度包含边框的高度,而文本框text则不包含边框高度。
原创文章:css中input与button高度不一致的原因及解决方法 ,未经许可,禁止转载,©版权所有
原文出处:前端开发博客 (http://caibaojian.com/css-input-button.html)
评论已关闭。

“css中input与button高度不一致的原因及解决方法”有3个评论

  1. _WebDevelop曱芈

    老师您好,浏览该网站时发现一个特别好玩的东西。平时复制文字底色都是蓝色,这个网站我发现是粉红,很好奇,请问一下这个是怎么做的?

    ¥ 打赏 赞(2)
    登录回复
    • _WebDevelop曱芈

      自问自答吧,原来是css3的属性
      ::selection {color:#fff; background-color:forestgreen;}
      ::-moz-selection { color:#fff; background-color:forestgreen;}
      ::-webkit-selection { color:#fff; background-color:forestgreen;}

      登录回复