Отзывчивое решение
Вот хорошее решение для адаптивного дизайна или неизвестных размеров в целом, если вам не нужна поддержка IE8 и ниже.
.centered-axis-x {
position: absolute;
left: 50%;
transform: translate(-50%, 0);
}
.outer {
position: relative; /* or absolute */
/* unnecessary styling properties */
margin: 5%;
width: 80%;
height: 500px;
border: 1px solid red;
}
.inner {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
/* unnecessary styling properties */
max-width: 50%;
text-align: center;
border: 1px solid blue;
}
<div class="outer">
<div class="inner">I'm always centered<br/>doesn't matter how much text, height or width i have.<br/>The dimensions or my parent are irrelevant as well</div>
</div>
Вот скрипт JS
Подсказка в том, что left: 50%
относится к родительскому элементу, а преобразование translate
относится к ширине / высоте элементов.
Таким образом, у вас есть идеально центрированный элемент с гибкой шириной как для дочернего, так и для родительского элементов. Бонус: это работает, даже если ребенок больше родителя.
Вы также можете центрировать его по вертикали с помощью этого (и, опять же, ширина и высота родительского и дочернего элементов могут быть полностью гибкими (и / или неизвестными)):
.centered-axis-xy {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
Имейте в виду, что вам также может потребоваться префикс transform
vendor. Например -webkit-transform: translate(-50%,-50%);
person
ProblemsOfSumit
schedule
30.04.2014