Кажется, что каждый браузер добавляет магический жестко заданный отступ внутри <input type="text">
. Некоторые браузеры (IE, Safari, Chrome) делают поле ввода немного выше, но они правильно выровнены, как если бы это был обычный элемент HTML. Я могу жить с дополнительной высотой. Но некоторые браузеры плохо себя ведут (Firefox и Opera), а также пытаются либо выровнять текст по вертикали, либо добавить дополнительные отступы над ним. Я удивлен, что современные браузеры не позволяют размещать текстовые поля так, как если бы они были такими же, как HTML, и добавляют некоторое волшебное форматирование. Я делаю что-то неправильно? Я что-то упустил? Это какие-то собственные свойства CSS, которые могут мне помочь? Я кратко посмотрел на CSS документацию Firefox, но не смог найти. Кроме того, я мог бы использовать редактируемый 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>
Редактировать: Я немного поэкспериментировал с -moz-outline и -moz-box-sizing в Firefox (на всякий случай), но ни один из их значения убирают лишние отступы.