Ви можете використовувати line-height: 50px;
, там вам не знадобиться vertical-align: middle;
.
Демо
Вищезазначене буде невдалим, якщо у вас є кілька рядків, тож у такому випадку ви можете обгорнути текст, використовуючи span
та використовуючи, display: table-cell;
а також display: table;
разом із цим vertical-align: middle;
, також не забудьте використовувати width: 100%;
для#abc
Демо
#abc{
font:Verdana, Geneva, sans-serif;
font-size:18px;
text-align:left;
background-color:#0F0;
height:50px;
display: table;
width: 100%;
}
#abc span {
vertical-align:middle;
display: table-cell;
}
Іншим рішенням, про яке я можу придумати, є використання transform
властивості, translateY()
де Y
явно стоїть Y Axis. Це досить прямо вперед ... Все, що вам потрібно зробити, - це встановити положення елементів у absolute
та пізніше положення 50%
з top
та перекласти з його осі на негативне-50%
div {
height: 100px;
width: 100px;
background-color: tomato;
position: relative;
}
p {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
Демо
Зауважте, що це не підтримується у старих браузерах, наприклад, IE8, але ви можете зробити IE9 та інші старіші версії браузера Chrome і Firefox, використовуючи відповідно -ms, -moz
і -webkit
префікси відповідно.
Для отримання додаткової інформації про це transform
, ви можете звернутися тут .