Что лучший способ состоит в том, чтобы компенсировать высоту моего <select..>
элементы и мой <input type="text"..>
элементы? Это оказывается трудным из-за различий в измеряющих поле моделях.
Таблица стилей агента пользователя Google Chrome имеет это:
select { -webkit-box-sizing: border-box; }
.. тогда как другие поля ввода текста используют модель поля содержания. Почему различие? Я должен, возможно, заставить все свои основанные на тексте поля ввода использовать модель поля границы?
BTW, я использую совместимый стандартами режим (при помощи <!DOCTYPE html>
).
Может быть, я ошибаюсь, но вы пробовали использовать значения высоты строки?
Ага .. это крайне сложно.
Не забывайте, что есть проблемы с тем, что firefox по-разному обрабатывает элементы формы.
В лучшем случае кроссбраузерные манипуляции с формами невозможны. : D
Некоторые моменты, на которые следует обратить внимание. line-height не может использоваться для всех элементов .. т.е. Firefox жестко кодирует высоту строки для ввода элементов [type = text].
У меня есть статья об использовании встроенного блока и вертикального выравнивания, которая может помочь некоторым .. (используйте verital-align: baseline;) The Joys of Inline Block на Screwlewse.com
Также имейте в виду, что многие новые браузеры имеют этот добавленный хром, чтобы входные данные формы больше походили на ОС. (но это похоже на другую проблему)
Не могли бы вы просто явно установить высоту всех вводимых и выбрать поля на определенную высоту в пикселях с помощью CSS? Если он не «выглядит» одинаково по высоте из-за границ, удалите границы или установите их все одинаково одинаково. Например:
<html>
<body>
<input type=text style="border: 1px solid black; height: 37px;">
<select style="border: 1px solid black; height: 37px; line-height: 37px; font-size: 28px;"></select>
<input type=button style="border: 1px solid black; height: 37px;">
</body>
</html>
Это сделает все три поля формы высотой 37 пикселей. Работает в IE и Chrome, но я нигде не тестировал.
Или же, как только страница загрузится, переберите все поля формы, найдите самое большое и установите высоту остальных, используя их атрибут style.height.