Хорошо, похоже, это невозможно. У меня есть текстовое поле и поле выбора. Я хочу, чтобы они были одинаковой ширины, чтобы они выстроились на левом краю и в правом поле.
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input, select {
width: 200px;
}
</style>
</head>
<body>
<input type="text" value="ABC"><br>
<select>
<option>123</option>
</select>
</body>
</html>
Что бы вы думали, верно? Неа. Поле выбора в 6 раз меньше, чем в Firefox. См. Снимок экрана.
Итак, давайте отредактируем код и сделаем два стиля.
<style type="text/css">
input {
width: 200px;
}
select {
width: 206px;
}
</style>
Хорошо, что работает!
О, подождите, лучше проверите в Chrome...
Может кто-нибудь сказать мне, как выстроить их во всех браузерах? Почему я не могу просто сделать ширину: 200 пикселей на всех, почему все браузеры отображают ее по-другому? Кроме того, пока мы находимся в этом вопросе, почему текстовое поле и поле выбора имеют разные высоты? Как мы получаем их на одну и ту же высоту? Пробовали высоту и высоту линии. Нет, нет.
Решение:
Хорошо, я нашел решение с некоторой помощью из ответов ниже. Ключ состоит в том, чтобы использовать свойство box-size: border-box, поэтому, когда вы указываете ширину, которая включает границу и дополнение. См. отличное объяснение здесь. Тогда браузер не сможет его заполнить.
Код ниже, также установите высоту ящиков одинакового размера и отступом текст внутри поля, чтобы он выравнивался. Вам также нужно установить границу, поскольку Chrome имеет очень странную перспективную рамку, которую он использует для выбранных боксов, которые выкинут выравнивание. Это будет работать для сайтов HTML5 (например, поддержка IE9, Firefox, Chrome, Safari, Opera и т.д.).
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
input, select {
width: 200px;
border: 1px solid #000;
padding: 0;
margin: 0;
height: 22px;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
input {
text-indent: 4px;
}
</style>
</head>
<body>
<input type="text" value="ABC"><br>
<select>
<option>123</option>
<option>123456789 123123123123</option>
<option>123456789 123123123123 134213721381212</option>
</select>
</body>
</html>
Только одно окончательное предупреждение, которое вы, возможно, не хотите включать в себя кнопки ввода, флажки и т.д., используйте input:not([type='button'])
, чтобы не применять его к определенным типам или использовать input[type='text'], input[type='password']
, чтобы указать те, которые вы хотите применить к.