Здравствуйте, прошу сильно не пинать, только учусь. Хочу сверстать для начала вот такую шапку:
Решил, что содержимое header'a нужно обернуть в центровщик с определенной шириной, а самому header'у задать фон, чтобы он растягивался на всю ширину.
<div class="header-top">
<div class="layout-positioner">
<span class="logo">Aditii</span>
<input class="search" type="text">
<span class="shopping-card">$300</span>
</div>
</div>
Но кроме ширины центровщику приходится задавать еще и display: flex. Разумно ли это? Или в центровщик нужно вставить еще один, "настоящий header", которому впоследствии зададим display: flex?
.logo,
.search,
.shopping-card {
border: 1px solid red;
}
.header-top {
background-color: grey;
}
.layout-positioner {
display: flex;
max-width: 640px;
margin: 0 auto;
background-color: lightgrey;
}
.search {
flex-grow: 2;
}
И второй вопрос, я хочу прижать к правому краю корзину товаров. Как я понимаю это можно сделать двумя способами: родителю задать justify-content: space-between или задать полю поиска flex-grow: 2, но с другой стороны мне нужно не только прижать корзину товаров, но и не растягивать слишком сильно поле поиска. Если задать полю поиска какую нибудь максимальную ширину, то одновременно она и flex-grow: 2 не работают.
Ссылка №1
Как здесь поступить? Обернуть поле поиска в какой нибудь див и ему задать flex-grow: 2? Но в этом случаю я почему-то не смогу изменить ширину поля поиска и мне приходится его центрировать задав новому диву text-align: center?
Ссылка №2
В конечном итоге я хочу, чтобы при изменении ширины сначала уменьшалось свободное пространство между логотипом и полем поиска; полем поиска и корзиной товаров, а затем уменьшалось само поле поиска.