Проблема в том, что Flexbox не работает в строках / столбцах так, как таблица.Вы можете использовать col-sm-auto
, чтобы заставить каждую метку сжиматься до нужного размера, но тогда метки / входы не будут выравниваться вертикально вниз по странице ...
Звучит так, как будто вы хотите уменьшить столбец метки, чтобы он соответствовал ширине самой широкой метки .Это можно сделать, поместив все метки в 1 столбец, а входные данные - в другой столбец, но тогда каждая метка / ввод не будет складываться вместе на экранах мобильных устройств.
Нет элегантного решения этой проблемы, предназначенного только для начальной загрузки.,Вы можете использовать таблицы, сетку CSS или опцию, описанную @Toan Lu в комментариях.
Опция Bootstrap Grid
Я бы порекомендовал просто использовать col-sm-2
или col-sm-3
для надписей (подгонка их приблизительно к самой широкой надписи) и text-truncate
для многоточия (...) переполненного текста до тех пор, пока они не будут складываться вертикально на мобильном устройстве ...
<div class="form-row">
<label class="col-form-label col-sm-2 text-truncate">
Label
</label>
<div class="col-sm-3 col-md-2">
<select>..</select>
</div>
</div>
https://www.codeply.com/go/e3mDrmMv7k
Параметр таблицы
При использовании этой опции используется width:1%
на этикетках, чтобы они сжимались до ширины самой широкой.Используйте text-nowrap
, чтобы предотвратить наклейку этикеток.Каждая строка формы представляет собой d-table-row
, а каждая метка - d-table-cell
...
.col-form-label.d-sm-table-cell {
width: 1%;
}
<div class="container py-3">
<div class="form-row d-table-row">
<label class="col-form-label col-sm-2 d-sm-table-cell text-nowrap">
Genre
</label>
<div class="col-sm-3 col-md-2">
<select>
..
</select>
</div>
</div>
<div class="form-row d-table-row">
<label class="col-form-label col-sm-2 d-sm-table-cell text-nowrap">
Longer label here
</label>
<div class="col-sm-3 col-md-2">
<select>
..
</select>
</div>
</div>
</div>
https://www.codeply.com/go/e3mDrmMv7k (см. 2-й вариант)
Параметр таблицы делаетделится на tr / td, но также работает быстро, позволяя полям складываться вертикально на мобильном телефоне.Подробнее о [классы d-таблицы] (Да, часть Bootstrap 4: http://getbootstrap.com/docs/4.1/utilities/display/#notation).
Параметр CSS Grid
Один другой (не Bootstrap4) метод использует сетку CSS. Сделайте строку display:grid
Используйте размер fr
для 2 grid-template-columns
поперек строки.
.d-grid {
display: grid;
grid-template-columns: 0fr 1fr;
}
https://www.codeply.com/go/9Z7Hg2tl1H