Я нахожусь в процессе изучения CSS Grid (я давно знаю).Я поставил перед собой задачу преобразовать относительно стандартный макет с плавающей точкой в сетку, но не могу понять эту последнюю часть.
Моя цель - создать макет, в котором контент (логотип + навигация и боковая панель + контент) центрирован, с max-width
.Например, логотип + навигация должны иметь max-width
600 пикселей.У меня также есть требование иметь сплошной фон заливки, покрывающий всю ширину области просмотра (соответствующий высоте переменной высоты логотипа / строки навигации).
Первый столбец (логотип и боковая панель) должен сжиматься, чтобы соответствовать их содержимому, поэтому первый столбец должен иметь ширину, равную ширине между логотипом и боковой панелью.Навигация / содержимое должно затем заполнить оставшееся пространство, разрешенное max-width
.
. Следующее - моя лучшая попытка.Ширина основного контента не заполняет max-width
.Вместо этого ширина основного содержимого равна ширине логотипа + 250 пикселей (ширина, определяемая столбцами сетки).
То, чего я надеюсь добиться, - это определить max-width
для Logo + Nav для определенной ширины (скажем, 600 пикселей) и уменьшить столбец Logo, чтобы соответствовать его содержимому.
body {
margin: 40px;
}
.fill {
grid-column-start: 1;
grid-column-end: 6;
grid-row-start: 1;
grid-row-end: 1;
background-color: gray;
}
.logo {
grid-area: logo;
font-size: calc(1rem + 4vw);
}
.sidebar {
grid-area: sidebar;
}
.content {
grid-area: content;
}
.nav {
grid-area: nav;
text-align: right;
}
.footer {
grid-area: footer;
}
.wrapper {
display: grid;
grid-gap: 10px;
grid-template-columns: auto min-content 120px 120px auto;
grid-template-areas: "... logo nav nav ..." "... sidebar content content ..." "... footer footer footer ...";
background-color: #fff;
color: #444;
}
.box {
background-color: #444;
color: #fff;
border-radius: 5px;
padding: 10px;
}
.header,
.footer {
background-color: #999;
}
<div class="wrapper">
<div class="fill"></div>
<div class="box logo">Logo</div>
<div class="box nav">Nav</div>
<div class="box sidebar">Sidebar</div>
<div class="box content">Content
<br /> More content than we had before so this column is now quite tall.</div>
<div class="box footer">Footer</div>
</div>
Возможно ли это с помощью CSS Grid, и если да, то как?