似乎每个浏览器都在<input type="text">
内添加了一些神奇的硬编码填充。有些浏览器(IE、Safari、Chrome)使输入框略微变高,但它们以正常的 HTML 元素顶部对齐。我可以接受额外的高度。但是有些浏览器表现不佳(Firefox 和 Opera),还尝试垂直对齐文本或在其上方添加一些额外的填充。我惊讶于现代浏览器不能像 HTML 一样布置文本框并添加一些魔术格式。我是做错了什么吗?我是否错过了某些技巧?它们是否有某些专有的 CSS 属性可以帮助我?我简要查看了 Firefox 的 CSS 文档,但没有找到任何内容。或者,我可以使用可编辑的 HTML 替代 <input type="text">
。
这里是一个演示问题的代码片段:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Test</title>
<style type="text/css">
body, input {
font-family: sans-serif;
font-size: 16pt;
color: White; }
#textbox {
position: absolute;
left: 20px;
top: 20px;
width: 100px;
background-color: #A5C9E2;
line-height: 16pt;
padding: 0px;
margin: 0px;
border-width: 0px; }
#box {
position: absolute;
left: 120px;
top: 20px;
width: 100px;
background-color: #AFD66A;
line-height: 16pt; }
</style>
</head>
<body>
<input type="text" id="textbox" value="Hello">
<div id="box">Hello</div>
</body>
</html>
编辑:我在Firefox中尝试了一下-moz-outline和-moz-box-sizing,但它们的任何值都没有去除额外的填充。