При попытке центрировать содержимое в контейнере CSS-Tricks имеет отличное руководство. Однако, пытаясь вертикально сосредоточить текст, который немного меньше его контейнера, я думаю, что предпочтительным вариантом вертикально центрирующего текста может быть предпочтительнее. Вместо того, чтобы использовать всю высоту шрифта, я бы предпочел сосредоточить его на основе x-высоты шрифта (в основном высота строчной буквы x)
И посмотрите на этот пример, где красный - на всей высоте, а зеленый - на основе x-height
Единственная возможность, которую я мог бы придумать, - добавить псевдотекст в текст с той же высотой, что и контейнер, и использовать вертикальное выравнивание: посредине.
.pseudo {
white-space: nowrap;
}
.pseudo:before {
content: '';
display: inline-block;
vertical-align: middle;
height: 100px;
width: 0;
}
Это работает, но, к сожалению, только для одной строки. Мне было интересно, если кто-нибудь еще попытался решить эту проблему, и, возможно, есть лучшие практики? Мне особенно интересно использовать как можно меньше "волшебных" чисел, и если есть хорошее решение для многострочного варианта.
См. Codepen для примера о том, почему я хочу сосредоточить его на основе x-height, и мое решение.