我刚刚注意到一个非常简单的表单的奇怪渲染。
这是我的标记/CSS:http://jsfiddle.net/a9PLM/
如您所见,文本字段和按钮具有相同的样式,但它们的大小却截然不同。
为什么会出现这种情况?
谢谢!
这是因为
<input type="submit">
和 <input type="text">
/<textarea>
使用的盒模型不同。您可以通过使用 CSS 指定盒子模型来使它们相同:
box-sizing: border-box;
-moz-box-sizing: border-box;
您可以在此处阅读有关盒子模型的更多信息:https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/The_box_model
我编辑了你的 jsFiddle 以显示它的工作原理:jsFiddle 演示
我认为这是一个浏览器渲染问题...按钮的显示方式与文本输入不同。
要修复,请将其添加到您的 CSS 中
form input[type="submit"]{
width:273px;
}
文本字段上的填充为其两侧提供了额外的空间。将输入和文本区域的填充设置为 0。
问题在于表单部分通常不会像普通 HTML 元素一样呈现,并且它们的样式总是有点随意。我会尝试避免像这样需要精确调整大小的情况,但如果不能,则像这样拆分选择器:
form textarea, form input[type=text]
{
width:250px;
padding:10px;
}
form input[type=submit] { width: 270px }
请注意,我在宽度上添加了 20 px (10 x 2) 以补偿填充。
我使用了这个仅 CSS 的解决方案,它适用于 IE、FF 和 Chrome。基本上,这个想法是手动强制输入元素的高度大于标准框的值。对文本和按钮都执行此操作:
示例:
input { margin:0; padding:0; border:solid 1px #888; vertical-align:middle; height:30px; }
input[type="submit"] { height:32px; }