Идеальная 100% ширина родительского контейнера для ввода начальной загрузки?
Как сделать поле ввода начальной загрузки ровно на 100% таким же широким, как его родитель?
Как писал Стив-о'Брайен в Bootstrap Issue #1058:
значение 100% не работает при непосредственном применении к полю ввода, так как оно не учитывает заполнение. Таким образом, вы получаете 100% контейнера плюс заполнение на поле ввода, поэтому поле ввода обычно ломается вне своего контейнера.
этот билет предлагает различные решения, но я ищу лучший способ сделать это-предпочтительно класс CSS, уже предоставленный Bootstrap.
8 ответов:
применение
input-block-level
класс отлично работает для меня, через различные ширины экрана. Он определяется Bootstrap inmixins.less
следующим образом:// Block level inputs .input-block-level { display: block; width: 100%; min-height: 28px; // Make inputs at least the height of their button counterpart .box-sizing(border-box); // Makes inputs behave like true block-level elements }
Это очень похоже на стиль, предложенный "ассемблером" в его комментарий к выпуску №1058.
для тех, кто гуглит это, одно предложение-удалить все
input-group
экземпляров класса. Работал у меня в аналогичной ситуации. Оригинальный код:<form> <div class="bs-callout"> <div class="row"> <div class="col-md-4"> <div class="form-group"> <div class="input-group"> <input type="text" class="form-control" name="time" placeholder="Time"> </div> </div> </div> <div class="col-md-8"> <div class="form-group"> <div class="input-group"> <select name="dtarea" class="form-control"> <option value="1">Option value 1</option> </select> </div> </div> </div> </div> <div class="row"> <div class="input-group"> <input type="text" name="reason" class="form-control" placeholder="Reason"> </div> </div> </div> </form>
новый код:
<form> <div class="bs-callout"> <div class="row"> <div class="col-md-4"> <div class="form-group"> <input type="text" class="form-control" name="time" placeholder="Time"> </div> </div> <div class="col-md-8"> <div class="form-group"> <select name="dtarea" class="form-control"> <option value="1">Option value 1</option> </select> </div> </div> </div> <div class="row"> <input type="text" name="reason" class="form-control" placeholder="Reason"> </div> </div> </form>
Если вы используете C# ASP.NET шаблон по умолчанию MVC вы можете найти, что сайт.css переопределяет некоторые стили начальной загрузки. Если вы хотите использовать Bootstrap, как и я, имея M$ переопределить это (без вашего ведома) может быть источником большого разочарования! Не стесняйтесь, чтобы удалить ненужные стили...
/* Set width on the form input elements since they're 100% wide by default */ input, select, textarea { max-width: 280px; }
чтобы получить желаемый результат, вы должны установить "box-sizing: border-box" против значения по умолчанию, которое является "box-sizing: content-box". Это именно тот вопрос, на который вы ссылаетесь (из MDN):
content-box
Это начальное значение и значение по умолчанию, как указано в стандарте CSS. Свойства width и height измеряются, включая только содержимое, но не заполнение, границу или поле.
border-box
ширина и высота свойства включают содержимое, заполнение и границу, но не поля."
Ссылка:https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing
совместимость для этого CSS хороша.