Я исправляю это с помощью width
, но как только я это сделаю, max-width
больше не применяется. Это почему? Как я могу это исправить?
Почему это так?
Поскольку у вас есть align-items: center
на контейнере. В контейнере в направлении столбца, который горизонтально центрирует изгибаемые элементы.
Центрирование начинается с середины и выходит одинаково с обеих сторон. Поэтому, когда вы используете max-width
с коротким содержимым, текст будет отображаться по центру под большим абзацем, приведенным выше.
Но если вы используете width: 400px
, элемент будет такой же длины, как полный абзац выше и содержание, по умолчанию выравнивается по левому краю. (Если вы установите p
на text-align: center
, тогда ваш эксперимент завершится неудачей с width: 400px
или без него.)
.text {
width: 840px;
background: #eee;
display: flex;
flex-direction: column;
align-items: center;
}
h1 {
max-width: 640px;
text-align: center;
border: 1px dashed red;
}
p {
width: 400px;
text-align: center;
border: 1px dashed red;
}
<div class="text">
<h1>
A really very long headline indeed, to tell a story
</h1>
<p>
Soufflé sesame snaps tart chocolate chupa chups candy canes jujubes. Sweet brownie cheesecake tootsie roll donut bear claw macaroon brownie jelly. Cake toffee lollipop lollipop fruitcake caramels carrot cake gingerbread chocolate. Cotton candy powder
tiramisu liquorice brownie lemon drops pastry.
</p>
<p>
One word.
</p>
</div>
Как это исправить?
Без JS или дополнительных HTML контейнеров Я не являюсь уверен, что это возможно, потому что нет выравнивания по левому краю для абзацев. Они просто центрируются в зависимости от длины их содержимого до максимальной ширины.