Вертикальное выравнивание в Bootstrap CSS

658
26 июля 2017, 20:36

Делаю через Bootstrap 3, нужно выравнивание нескольких (любых объектов) с чётным-нечётным количеством (не строчные!). Примеры с прописыванием точных размеров в px не предлагать, только в %.
Вот пример кода:

<div class="col-xs-12 col-sm-12 col-md-9 col-lg-9">
    <div class="row">
        <div class="col-xs-12 col-sm-12 col-md-offset-1 col-lg-offset-1">
            <div class="col-xs-12 col-sm-12 col-md-3 col-lg-3 col-md-offset-1 col-lg-offset-1">
                <div class="kostnormaltext">Подсказки</div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-3 col-lg-3">
                <div class="center-block">
                    <img class="center-block img-responsive img-rounded" src="{% static 'img/scrip_key.jpg' %}" id="fillimage" alt="">
                </div>
            </div>
            <div class="col-xs-12 col-sm-12 col-md-3 col-lg-3">
                <div class="">
                    <button onclick="" type="button" class="btn btn-success" id="buttoncheck">Звук</button>
                    <button onclick="" type="button" class="btn btn-success" id="buttoncheck">Проверить</button>
                    <button onclick="" type="button" class="btn btn-success" id="buttoncheck">Следующая нота</button>
                </div>
            </div>
        </div>
    </div>
</div>

При этом нужно сделать так, чтобы эти элементы были всегда вертикально в центре своей колонки, независимо от масштабирования экрана. но зависимо от общего размера всего ряда!. По-сути есть 1 ряд в нём 3 колонки (разделены тёмно-жёлтым цветом) и синяя центральная линия, к которой нужно выравнивать (не важно какой блок двигать, parent-зелёный или child-красный).

Answer 1

Используйте возможности флекса. Если задать контейнеру с классом row свойство display: flex, то его дочерние элементы можно выравнивать вертикально по середине через свойство align-items: center.

.flex { 
  display: flex; 
  align-items: center; 
  justify-content: space-around; 
  width: 500px; 
  height: 200px; 
  padding: 15px; 
  background-color: #ccc; 
} 
 
.item1 { 
  width: 150px; 
  height: 80px; 
  background-color: green; 
  margin-right: 5px; 
  margin-left: 5px; 
} 
 
.item2 { 
  width: 150px; 
  height: 50px; 
  background-color: red; 
  margin-right: 5px; 
  margin-left: 5px;       
} 
.item3 { 
  width: 150px; 
  height: 100px; 
  background-color: blue; 
  margin-right: 5px; 
  margin-left: 5px; 
}
<div class="flex"> 
  <div class="item1"> 
  </div> 
  <div class="item2"> 
  </div> 
  <div class="item3"> 
  </div> 
</div>

READ ALSO
Нарисовать разные слои так, чтобы не сбился весь дизайн

Нарисовать разные слои так, чтобы не сбился весь дизайн

Есть страница, составленная из квадратиков как на фотографии ниже(1)И все они расположены плотно друг к другу

229
Разместить кнопки в меню на одинаковое растояние и до конца экрана при разных разширениях

Разместить кнопки в меню на одинаковое растояние и до конца экрана при разных разширениях

Здравствуйте, как можно с помощью css разместить кнопки на нижнем меню нормально, чтобы при сжатии экрана они просто сближались друг к другуи...

209