Выбор входных и текстовых входов в HTML - лучший способ сделать равную ширину?
У меня такая простая форма (только для иллюстрации)...
<form>
<div class="input-row">
<label>Name</label>
<input type="text" name="name" />
</div>
<div class="input-row">
<label>Country</label>
<select name="country">
<option>Australia</option>
<option>USA</option>
</select>
</div>
</form>
Мой метод компоновки с использованием CSS выглядит следующим образом:
form {
width: 500px;
}
form .input-row {
display: block;
width: 100%;
height: auto;
clear: both;
overflow: hidden; /* stretch to contain floated children */
margin-bottom: 10px;
}
form .input-row label {
display: block;
float: left;
}
form .input-row input,
form .input-row select {
display: block;
width: 50%;
float: right;
padding: 2px;
}
Все это выравнивается довольно хорошо, за исключением того, что мой select
элемент (в любом случае, Firefox) не всегда такой же, как и другие элементы input
. Он обычно более узкий на несколько пикселей.
Я попытался изменить ширину на размер пикселя (например, 200px
), но это не повлияло.
Каков наилучший способ получить их для всех с одинаковой шириной? Я надеюсь, что это не прибегает ко мне, устанавливая select
width
индивидуально, или помещая их в таблицы...
Ответы
Ответ 1
Решение состоит в том, чтобы указать модель окна для элементов формы, и браузеры обычно согласны с большинством, когда вы используете border-box:
input, select, textarea {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
Здесь normalize.css проект, который объединяет такие трюки.
Ответ 2
padding сделает текст ближе к краю окна.
попробуйте установить поле на 0px, и если это кажется правильным, поиграйте с ним (например, просто установите только margin-margin)
Ответ 3
Имели те же проблемы со 100% шириной таблицы и ячеек, с текстовым полем (также с шириной на 100%) шире, чем ячейка таблицы.
Это решило мою проблему в css:
table td
{
padding-right: 8px;
}
Не лучшее решение когда-либо, потому что вы, вероятно, получите дополнительное пространство в правой части. Но, по крайней мере, это больше не скрывается!