【发布时间】:2012-02-16 08:50:41
【问题描述】:
我正在尝试对某些表单元素进行一些非常精确的样式设置,而这个问题让我很伤心。
如果我尝试从<input>(使用display: block)中删除padding、margin、border 和outline,以便字段的大小完全由文本决定,输入字段最终比任何其他以完全相同的方式样式化的块级元素具有几个像素的额外填充。这是一个例子:
http://jsfiddle.net/nottrobin/b9zfa/
<input class="normalised testSubject" value="hello" />
<div class="normalised testSubject">hello</div>
渲染:
在该示例中,<div> 的计算高度为 16px,而<input> 的计算高度为 19px。
我在 Chrome 16、Firefox 9 和 Opera 11 中得到了相同的行为,因此它显然独立于渲染引擎。
我可以通过手动添加高度来解决此问题,但我不想这样做,因为我希望设计保持responsive。
谁能帮我理解这里发生了什么,以及我如何能够可靠地确保<input> 与它后面的任何块级元素的高度相同?
【问题讨论】:
-
从
.normalisedCSS 中移除line-height : 1em以使它们具有相同的高度。这将使div与您的input字段高度相同。查看此修改后的fiddle -
@Dave:我已经通过 Chrome 17 确认了这一点。
-
任何遇到这个问题的人都应该表达他们对这两个错误报告的支持bugzilla.mozilla.org/show_bug.cgi?id=349259bugzilla.mozilla.org/show_bug.cgi?id=697451