我正在学习CSS Grid(非常迟到,我知道)。我挑战自己将一个相对标准的基于浮动的布局转换成网格,但无法理解最后一部分。
我的目标是拥有一个布局,其中内容(标志+导航和侧边栏+内容)居中,并具有max-width
。例如,标志+导航应该具有600px的max-width
。另外,我要求在变量高度的标志/导航行上覆盖全视口的实心填充背景。
第一列(标志和侧边栏)应缩小以适应其内容 - 因此第一列的宽度仅为标志/侧边栏之间的宽度。然后导航/内容应填充由max-width
允许的其余空间。
以下是我最好的尝试。主要内容的宽度不会填满max-width
。相反,主要内容的宽度为Logo + 250px的宽度(由网格列定义)。
我希望实现的是 - 将标志+导航的max-width
定义为特定宽度(比如600px),并使标志列缩小以适应其内容。
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>