我想知道css网格如何利用最大宽度。以旧的方式,您使用具有包装类的容器来设置边距。
使用CSS网格,根据您创建它们的方式,您不再需要使用容器,有时您无法添加容器。
我希望标题为全宽,但我希望其中的导航最大宽度为屏幕分辨率和边距的80%自动,此代码类似于人们的方式用包装容器完成。问题是,我如何使用旁边和主要做同样的事情,因为他们不在父母的内部设置最大宽度?
body {
display: grid;
grid-template-areas:
"header header"
"aside main";
grid-template-columns: 275px 1fr;
grid-template-rows: 1fr 1fr;
}
header {
grid-area: header;
border: solid 1px black;
}
header > nav {
max-width: 80%;
margin: auto;
border: solid 1px blue;
}
aside {
grid-area: aside;
}
main {
grid-area: main;
}
HTML
<html>
<body>
<header>
<nav>nav</nav>
</header>
<aside>aside</aside>
<main>main</main>
</body>
</html>
如果我必须将它们包装在容器内,那将如何影响网格?如果我在html或body标签上设置最大宽度,那么我如何获得一个延伸浏览器整个宽度的标题?
答案 0 :(得分:3)
将此视为
的四个列网格grid-template-columns: 10% 275px 1fr 10%;
然后根据修订的网格区域
分配元素grid-template-areas:
"header header header header"
". aside main .";
body {
display: grid;
grid-template-areas: "header header header header" ". aside main .";
grid-template-columns: 10% 275px 1fr 10%;
grid-template-rows: 1fr 1fr;
margin: 0;
padding: 0;
background: lightgrey;
}
header {
grid-area: header;
background:rebeccapurple;
}
header>nav {
max-width: 80%;
margin: auto;
background: lightblue;
}
aside {
grid-area: aside;
background: lightgreen;
}
main {
grid-area: main;
background: pink;
}
&#13;
<header>
<nav>nav</nav>
</header>
<aside>aside</aside>
<main>main</main>
&#13;
要使用max-width
nav
尊重我们必须从标题中取nav
的值,以便它成为网格项。然后我们可以在网格上将它对齐 over 标题。
对内部列使用minmax
我们可以获得所需的结果
body {
display: grid;
grid-template-columns: 1fr minmax(auto, 100px) minmax(auto, 300px) 1fr;
grid-template-rows: 1fr 1fr;
margin: 0;
padding: 0;
background: lightgrey;
}
header {
grid-column: 1/-1;
grid-row: 1;
background: rebeccapurple;
}
nav {
grid-column: 2 / 4;
grid-row: 1;
background: lightblue;
}
aside {
grid-column: 2;
background: lightgreen;
}
main {
grid-column: 3;
background: pink;
}
&#13;
<header></header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
&#13;
演示此处使用较小的列宽仅供参考。根据需要修改最大数字。