Можно использовать 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. Это довольно просто ... Все, что вам нужно сделать, это установить положение элемента, absolute
а затем положение 50%
от top
оси и перевести от оси с отрицательным-50%
div {
height: 100px;
width: 100px;
background-color: tomato;
position: relative;
}
p {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
демонстрация
Обратите внимание , что это не будет поддерживаться на старых браузерах, например , IE8, но вы можете сделать IE9 и другие версии старых браузеров , хромовых и Firefox с помощью -ms, -moz
и -webkit
префиксы соответственно.
Для получения дополнительной информации transform
вы можете обратиться сюда .
Это просто: дайте родительскому div следующее:
и дайте дочернему div (s) это:
Это оно!
источник
display:table;
родительский элемент, чтобы он работал.Старый вопрос , но в настоящее время CSS3 делает вертикальное выравнивание очень просто !
Просто добавьте
#abc
в следующий css:Простая демонстрация
Демо-версия исходного вопроса обновлена
Простой пример:
источник
CSS3
?Я нашел это решение от Себастьяна Экстрёма. Это быстро, грязно и очень хорошо работает. Даже если вы не знаете рост родителя:
Читайте полную статью здесь .
источник
transform-style: preserve-3d;
:!Вы можете использовать высоту строки, равную высоте div. Но для меня лучшее решение - это ->
position:relative; top:50%; transform:translate(0,50%);
источник
Как насчет добавления
line-height
?Скрипка, высота строки
Или
padding
дальше#abc
. Это результат с заполнениемОбновить
Добавьте в свой css:
Результат . Надеюсь, это то, что вы ищете.
источник
Попробуй это:
Другой метод центрирования div:
источник
источник
Используйте свойство CSS translateY для вертикального центрирования текста в его контейнере.
А затем примените его к содержащему DIV
Отрегулируйте процент translateY в соответствии со своими потребностями. Надеюсь это поможет
источник
Этот код предназначен для вертикального среднего и горизонтального выравнивания по центру без указания фиксированной высоты:
источник