#html #css #twitter-bootstrap-3 #flexbox
#HTML #css #twitter-bootstrap-3 #flexbox
Вопрос:
У меня есть 2 столбца на странице с использованием Bootstrap, но один столбец больше другого. Что я хочу сделать, так это чтобы оба столбца были одинаковой высоты, чтобы я мог выровнять содержимое более короткого столбца внизу.
Я прочитал пару подходов, таких как margins
, flexbox
, и tables
.
Я попробовал flexbox
, и это работает для больших размеров экрана, но когда я перехожу к мобильным размерам, столбцы не складываются, как раньше, до того, как я добавил к ним стиль flexbox. Поля, которые я еще не пробовал, потому что для меня это немного странно. Таблицы — я не знаю, мне просто не нравится использовать таблицы для макета в целом.
Вот скрипка, если вы хотите попробовать ее.
HTML
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="col-md-12">
<h4 class="search-header bold">Deadline</h4>
<div class="form-group">
<label for="select-deadline" class="control-label">Deadline Type</label>
<select name="deadline" id="select-deadline" class="form-control">
<option value="">Upcoming</option>
<option value="" selected="selected">Sponsor</option>
<option value="">Internal</option>
</select>
</div>
<div class="form-group">
<label for="input-days" class="control-label">Due Within How Many Days?</label>
<input type="text" class="form-control" id="input-days" />
</div>
<div class="divider bold italic"><span class="divider-line">amp;mdash;</span> or <span class="divider-line">amp;mdash;</span></div>
<div class="form-group">
<label for="input-date" class="control-label">Last Day to Search</label>
<input type="text" class="form-control" id="input-date" />
</div>
</div>
</div>
<div class="col-md-8">
<div class="col-md-12 action-btn-container">
<button type="button" class="btn btn-default btn-action">Clear All</button>
<button type="button" class="btn btn-default btn-action">Search</button>
</div>
</div>
</div>
</div>
CSS
.action-btn-container {
text-align: right;
}
Обновить:
Вот пример того, как я пытался решить проблему с помощью. flexbox
Ответ №1:
Я попробовал flexbox, и он работает для больших размеров экрана, но когда я перехожу к мобильным размерам, столбцы не складываются, как раньше, до того, как я добавил к ним стиль flexbox.
Начальная настройка контейнера flex такова flex-wrap: nowrap
.
Это означает, что по умолчанию дочерние элементы («гибкие элементы») будут вынуждены оставаться в одной строке независимо от размера экрана.
Если вы хотите, чтобы столбцы располагались вертикально на экранах меньшего размера, добавьте это в контейнер:
flex-wrap: wrap
Комментарии:
1. Вот моя обновленная скрипка со
flexbox
стилем. Почему более короткий столбец, похоже, не учитывает соотношение 4-8 на экранах меньшего размера?2. Потому
.flex-col { flex: 1; }
что применяется к обоим столбцам. Правило предписывает им равномерно распределять пространство между собой. Когда вы удаляете его, ширина начальной загрузки восстанавливается: jsfiddle.net/m8skcbj5/53. О, я понимаю, спасибо! Я просто скопировал это из вопроса, который я прочитал ранее. Не знал, что он делает, поэтому я не стал его удалять.
4. Привет, @Michael_B, flexbox заставил столбцы вести себя по-другому. Когда они складываются, они больше не занимают всю ширину, вместо этого они просто складываются, но сохраняют ширину, которую они имеют в данный момент. Вы можете сравнить эту скрипку , которая является поведением, которое я хочу, и вашу скрипку с равными высотами, используя flexbox.
5. Ну, вы сталкиваетесь со стилями начальной загрузки. Вам нужно переопределить их. Вот пример использования медиа-запроса: jsfiddle.net/m8skcbj5/9