Почему не работает margin:auto 0 у слайдера?

409
24 июня 2017, 10:26

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

В слайдере блок с текстом должен быть по середине вертикально, почему margin:auto 0; не работает? Как видите блок прижат к верху родителя https://parq21.github.io/#testimonials раздел Testimonials Как выровнять вертикально? В чем ошибка? Пробовал с помощью :before выровнять, блок вниз почему-то уходит

Интересует, почему margin не работает.

Знаю что:

top:50%; /*опускаем на 50% высоты род.*/ 
transform: translateY(-50%); /*поднимаем на 50% высоты реб.*/ 

и про flex, таблицы

Answer 1
position: relative;
top: 50%;
transform: translateY(-50%);

и удалите margin

Answer 2

Используйте ныне популярный Flexbox. Задайте для .slick-slide вот такой набор стилей:

display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex; 
-ms-flex-align: center;
-webkit-align-items: center;
-webkit-box-align: center;
align-items: center;

В целом, добавив только display:flex все сразу выстраивается в нужный порядок:

Answer 3
margin: 0 auto

выравнивает блок по горизонтали.

Для того, чтоб выровнять блок по вертикали есть несколько вариантов:

position: relative; 

для родителя, для дочернего элемента:

position: absolute;
top: 50%;
margin-top: -0.625em;

Тут подробнее

* { 
box-sizing: border-box; 
line-height: 1.25; 
} 
 
.container { 
  position: relative; 
 width: 30%; 
 height: 400px; 
  background: black; 
  } 
   
  .block { 
    width: 100px; 
    height: 100px; 
    border-radius: 50%; 
    position: absolute; 
    top: 50%; 
    left: 50%; 
    margin-left: -50px; 
    margin-top: -50px; 
    background: red; 
   
   
  }
<div class = "container"> 
  <div class = "block"> 
   
  </div> 
</div>

Добавил пример, если знаем высоту элемента, который размещаем по центру. Смещаем на половину его высоты вверх.

.outer { 
    position: relative; 
    height: 5em; 
    border: 1px solid blue; 
  } 
 
  .inner { 
    position: absolute; 
    top: 50%; 
    margin-top: -0.625em; 
    border: 1px solid red; 
  }
<div class="outer"> 
  <div class="inner">Текст</div> 
</div>

Если нужно размещать текст..

READ ALSO
Не добавляется текст в textarea с помощью append

Не добавляется текст в textarea с помощью append

Реализую добавление картинки в новость и смысл таков: при добавлении картинки на сервер - записывается сразу значение в текстовое поле, чтобы...

650
Резиновая галерея

Резиновая галерея

Имеется резиновая галереяИ пока фотографии одинаковой высоты, всё выглядит нормально, но как только какая-то фотка больше или меньше, естественно,...

482
Как правильно сверстать flexbox?

Как правильно сверстать flexbox?

Никак не получается выровнятьlogo по центру, при этом чтобы два элемента меню

441