Мне трудно сделать так, чтобы мой заголовок выглядел так, где левый и правый принимают минимально возможную ширину:
Что у меня есть на данный момент:
*,
*::after,
*::before {
margin: 0;
padding: 0;
box-sizing: border-box;
}
header {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
header div {
min-height: 7rem;
display: flex;
align-items: center;
padding: 2rem 5rem;
background-color: blue;
}
.center {
background-color: yellow;
}
.right {
background-color: red;
}
<header>
<div class = "left">Left</div>
<div class = "center">Center</div>
<div class = "right">Right</div>
</header>
flex-grow: 1
.Этого легко добиться с помощью display: flex
и flex-grow: 1
.
Узнайте больше о flexbox:
*,
*::after,
*::before {
margin: 0;
padding: 0;
box-sizing: border-box;
}
header {
display: flex;
}
header div {
min-height: 7rem;
align-items: center;
padding: 2rem 3rem;
background-color: blue;
}
.center {
background-color: yellow;
flex-grow: 1;
}
.right {
background-color: red;
}
<header>
<div class = "left">Left</div>
<div class = "center">Center</div>
<div class = "right">Right</div>
</header>
Использование 1fr 1fr 1fr
для макета сетки означает, что каждый из элементов имеет одинаковую ширину — они разделяют доступную ширину между собой.
Если вы хотите, чтобы левая и правая стороны занимали минимальную ширину, необходимую для их размещения, установите для них значение auto
, а для среднего — 1fr
. Затем средний будет занимать всю оставшуюся ширину.
*,
*::after,
*::before {
margin: 0;
padding: 0;
box-sizing: border-box;
}
header {
display: grid;
grid-template-columns: auto 1fr auto;
}
header div {
min-height: 7rem;
display: flex;
align-items: center;
padding: 2rem 5rem;
background-color: blue;
}
.center {
background-color: yellow;
}
.right {
background-color: red;
}
<header>
<div class = "left">Left</div>
<div class = "center">Center</div>
<div class = "right">Right</div>
</header>
Узнайте больше на:
1fr 1fr 1fr создают проблему, задавая одинаковую ширину поэтому я использовал auto 1fr auto с помощью set auto он может изменить ширину левого и правого на основе относительно родителя. или вы можете установить значения для левого и правого, например: 0.2fr 0.2fr
*,
*::after,
*::before {
margin: 0;
padding: 0;
box-sizing: border-box;
}
header {
display: grid;
grid-template-columns: auto 1fr auto;
}
header div {
min-height: 7rem;
display: flex;
align-items: center;
padding: 2rem 5rem;
background-color: blue;
}
.center {
background-color: yellow;
}
.right {
background-color: red;
}
<header>
<div class = "left">Left</div>
<div class = "center">Center</div>
<div class = "right">Right</div>
</header>