Вертикально выровнять текст в поле ввода фиксированной высоты без отображения: таблица или заполнение?
свойство line-height обычно заботится о вертикальном выравнивании, но не с входными данными. Есть ли способ автоматически центрировать текст, не играя с заполнением?
16 ответов:
в Opera 9.62, Mozilla 3.0.4, Safari 3.2 (для Windows) это помогает, если вы поместите некоторый текст или по крайней мере пробел в той же строке, что и поле ввода.
<div style="line-height: 60px; height: 60px; border: 1px solid black;"> <input type="text" value="foo" /> </div>
(представьте себе   после input-statement)
IE 7 игнорирует каждый взлом CSS, который я пробовал. Я бы рекомендовал использовать прокладку только для IE. Должно быть проще для вас правильно позиционировать его, если он должен работать только в одном конкретном браузере.
Я сам столкнулся с этой проблемой. Я обнаружил, что не указывая высоту ввода, но используя шрифт-высоту и заполнение в сочетании, приводит к вертикально выровненному тексту.
например, допустим, вы хотите иметь 42px высокое поле ввода, с размером шрифта 20px. Вы можете просто найти разницу между высотой ввода и размером шрифта, разделить его на два и установить заполнение на эту сумму. В этом случае у вас будет общая стоимость заполнения 22px, которая составляет 11px на каждом сторона.
<input type="text" style="padding: 11px 0px 11px 0px; font-size: 20px;" />
Это даст вам 42px высокое поле ввода с идеальным вертикальным выравниванием.
надеюсь, что это поможет.
Я не пробовал это сам, но попробуйте установить:
height : 36px; //for other browsers line-height: 36px; // for IE
где 36px-высота вашего ввода.
Я знаю, что опаздываю на вечеринку, но, надеюсь, это поможет всем, кто ищет краткий ответ, который работает во всех основных браузерах (кроме IE6, мы решили прекратить поддержку этого браузера, поэтому я отказываюсь даже смотреть на него больше).
#search #searchbox { height: 21px; line-height: 21px; }
ура! ДЖП
input[type=text] { height: 15px; line-height: 15px; }
это правильный способ установки вертикального среднего положения.
на мой взгляд, ответ на этой странице с наибольшим количеством голосов является лучшим ответом, но его математика была неправильной, и я не мог ее прокомментировать.
Мне нужно было, чтобы поле ввода текста было ровно 40 пикселей в высоту, включая границу 1 пикселя по всему периметру. Конечно, я хотел, чтобы текст был выровнен по вертикали в центре во всех браузерах.
1 пиксель сверху
1 пиксель дно!--6--> 8 пиксельная верхняя прокладка
8 пикселей отступ снизу
22 пиксельный шрифт размер1 + 1 + 8 + 8 + 22 = 40 пиксели точно.
одна вещь, чтобы помнить, что вы должны удалить свой css height свойство или эти пиксели будут добавлены к вашей общей выше.
<input type="text" style="padding-top:8px; padding-bottom:8px; margin: 0; border: solid 1px #000000; font-size:22px;" />
это работает в Firefox, Chrome, IE 8 и Safari. Я могу только предположить, что если что-то простое, как это работает в IE8, он должен работать точно так же в 6, 7 и 9, но я не проверял. Пожалуйста, дайте мне знать, и я буду редактировать этот пост соответственно.
после долгих поисков и разочарований комбинация установки высоты, высоты линии и отсутствия заполнения работала для меня при использовании фонового изображения с фиксированной высотой (24px) для поля ввода текста.
.form-text { color: white; outline: none; background-image: url(input_text.png); border-width: 0px; padding: 0px 10px 0px 10px; margin: 0px; width: 274px; height: 24px; line-height: 24px; vertical-align: middle; }
просто не устанавливайте высоту поля ввода, только установите размер шрифта, который будет в порядке
вот как я это делаю.
<ul> <li>First group of text here.</li> <li><input type="" value="" /></li> </ul>
затем внутри вашего CSS-файла,
ul li { display: block; float: left; }
Это должно работать для вас.
перейти к
line-height
.The
vertical-align
тег работает для кнопки "Отправить", но не для текста в поле ввода. Установкаline-height
до высоты поля ввода работает во всех браузерах. Включая ИЕ7.
извините заранее простой ответ...
просто удалите текст заголовка и используйте заполнитель ввода для заголовка вашей метки. Некоторые визуальные и css работают после этого, и ваша форма будет выглядеть жесткой и удобной для пользователя. Я знаю о недостатках, но это полностью снимет выравнивание борьбы.
Я на самом деле строю один сейчас, который включает в себя многоступенчатый и CSS прогресс бар в WordPress...основываясь на популярном контактную форму 7 плагин и он выглядит отличный. Дайте мне знать, если вы хотите скриншот.
Ура!
LaddtheImpaler
этот пример может решить ваши проблемы навсегда:
добавьте это во входное свойство css и никогда не добавляйте % вместо px:
height:25px;
поздно на вечеринку, но текущие ответы не будут работать, если у вас есть box-sizing: border-box set (что многие люди делают для элементов формы в эти дни).
просто сбросьте размер коробки для IE8 до
box-sizing: content-box;
затем используйте один из ответов padding / height.
Если ваш элемент является блочным элементом, содержащимся/или с дисплеем например, так:
display: table-cel
или, с фиксированной высотой линии, вы можете установить вертикальное выравнивание следующим образом:
Vertical-Align: Middle;
это не будет работать для других случаев, но он отлично работает на этих условиях.