Допустим, у меня есть фрагмент HTML вроде этого:
<div style="width:300px;">
<label for="MyInput">label text</label>
<input type="text" id="MyInput" />
</div>
Это не мой точный код, но важно то, что в контейнере фиксированной ширины есть метка и текстовый ввод на одной строке. Как я могу стилизовать ввод, чтобы заполнить оставшуюся ширину контейнера без переноса и не зная размера метки?
Ответы:
хотя все ненавидят таблицы за разметку, они помогают с такими вещами, используя явные теги таблиц или используя display: table-cell
источник
Вот простое и чистое решение без использования JavaScript или взлома макета таблицы. Это похоже на этот ответ: автозаполнение ввода текста заполнение 100% с другими элементами с плавающей
Важно обернуть поле ввода диапазоном
display:block
. Следующее, что кнопка должна идти первой, а поле ввода - второй.Затем вы можете перемещать кнопку вправо, и поле ввода заполняет оставшееся пространство.
Простая скрипка: http://jsfiddle.net/v7YTT/90/
Обновление 1: если ваш сайт ориентирован только на современные браузеры, я предлагаю использовать гибкие блоки . Здесь вы можете увидеть текущую поддержку .
Обновление 2: это работает даже с несколькими кнопками или другими элементами, которые полностью используют поле ввода. Вот пример .
источник
Я предлагаю использовать Flexbox:
Не забудьте добавить правильные префиксы вендора, хотя!
источник
label
? Мне было бы особенно интересно узнать, как можноborder-box
flex: 2
и нетflex: 1
?Пожалуйста, используйте flexbox для этого. У вас есть контейнер, который собирается сгибать своих детей в ряд. Первый ребенок занимает свое место по мере необходимости. Второй сгибается, чтобы занять все оставшееся пространство:
источник
row
по умолчанию, вам не нужно его указывать.Самый простой способ добиться этого будет:
CSS:
HTML:
Похоже: http://jsfiddle.net/JwfRX/
источник
Очень простой трюк с использованием
CSS calc
формулы. Все современные браузеры, IE9, широкий спектр мобильных браузеров должны поддерживать это.источник
Вы можете попробовать это:
источник
Если вы используете Bootstrap 4:
Еще лучше использовать то, что встроено в Bootstrap:
https://jsfiddle.net/nap1ykbr/
источник