Замість align-self: centerвикористання align-items: center.
Не потрібно змінювати flex-directionчи використовувати text-align.
Ось ваш код, за допомогою одного коригування, щоб він працював:
ul {
height: 100%;
}
li {
display: flex;
justify-content: center;
/* align-self: center; <---- REMOVE */
align-items: center; /* <---- NEW */
background: silver;
width: 100%;
height: 20%;
}
align-selfВластивість застосовується до нежестким деталей . За винятком того, що ваш liелемент не є гнучким, тому що його батьківський - той ul- не має display: flexабо display: inline-flexзастосував.
Отже, ulне є гнучким контейнером, liне є гнучким елементом і align-selfне має ефекту.
align-itemsВластивість аналогічно align-self, за винятком того, що відноситься до згинають контейнери .
Оскільки liє гнучким контейнером, align-itemsйого можна використовувати для вертикального центрування дочірніх елементів.
* {
padding: 0;
margin: 0;
}
html, body {
height: 100%;
}
ul {
height: 100%;
}
li {
display: flex;
justify-content: center;
/* align-self: center; */
align-items: center;
background: silver;
width: 100%;
height: 20%;
}
<ul>
<li>This is the text</li>
</ul>
демонстраційний код
Технічно ось як align-itemsі align-selfпрацювати ...
align-itemsВластивість (на контейнері) встановлює значення за замовчуванням align-self(по пунктам). Тому align-items: centerозначає, що всі гнучкі елементи будуть встановлені align-self: center.
Але ви можете змінити цей за замовчуванням, відкоригувавши align-selfокремі елементи.
Наприклад, ви можете мати стовпчики однакової висоти, тому контейнер встановлений у align-items: stretch. Однак один елемент потрібно закріпити вгорі, щоб його встановити align-self: flex-start.
приклад
Як текст є флекс-елементом?
Деяким може бути цікаво, як працює текст ...
<li>This is the text</li>
є дочірнім елементом li.
Причина полягає в тому, що текст, який явно не обернутий вбудованим елементом, алгоритмічно загортається вбудованим полем. Це робить його анонімним вбудованим елементом і дитиною батька.
З специфікації CSS:
9.2.2.1 Анонімні вставки
Будь-який текст, який безпосередньо міститься в блоці елемента контейнера, повинен розглядатися як анонімний вбудований елемент.
Специфікація flexbox передбачає подібну поведінку.
4. Гнучкі предмети
Кожна дитина, що надходить у контейнер flex, стає гнучким елементом, і кожен безперервний текст, який безпосередньо міститься у контейнері flex, загортається в анонімний елемент flex.
Отже, текст у тексті liє гнучким елементом.
align-items: baseline. Добре підходить для різних висот, що надходять з різних символів unicode тощо