max-width 带有 css 网格
max-width with css grid
我想知道 css 网格如何利用 max-widths。以旧的方式,您将使用带有包装器 class 的容器来设置边距。
使用 CSS 网格,根据您创建它们的方式,您不再需要使用容器,有时您无处添加容器。
我希望 header 是全宽的,但我希望其中的导航栏的最大宽度为屏幕分辨率的 80% 并自动设置边距,此代码与第一种方式类似本来可以用包装容器来做的。问题是,我如何对 aside 和 main 做同样的事情,因为它们不在 parent 内以设置最大宽度?
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 标签上设置最大宽度,那么我将如何获得一个延伸整个浏览器宽度的 header?
将其视为
的四列网格
grid-template-columns: 10% 275px 1fr 10%;
然后根据修改后的 grid-areas
分配元素
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;
}
<header>
<nav>nav</nav>
</header>
<aside>aside</aside>
<main>main</main>
要将 max-width
与 nav
一起使用,我们必须从 header 中取出 nav
,使其成为 grid-item .然后我们可以在 over 和 header.
网格上对齐它
对内部列使用 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;
}
<header></header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
此处使用较小的列宽进行演示,仅供参考。根据需要修改最大数字。
我想知道 css 网格如何利用 max-widths。以旧的方式,您将使用带有包装器 class 的容器来设置边距。
使用 CSS 网格,根据您创建它们的方式,您不再需要使用容器,有时您无处添加容器。
我希望 header 是全宽的,但我希望其中的导航栏的最大宽度为屏幕分辨率的 80% 并自动设置边距,此代码与第一种方式类似本来可以用包装容器来做的。问题是,我如何对 aside 和 main 做同样的事情,因为它们不在 parent 内以设置最大宽度?
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 标签上设置最大宽度,那么我将如何获得一个延伸整个浏览器宽度的 header?
将其视为
的四列网格grid-template-columns: 10% 275px 1fr 10%;
然后根据修改后的 grid-areas
分配元素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;
}
<header>
<nav>nav</nav>
</header>
<aside>aside</aside>
<main>main</main>
要将 max-width
与 nav
一起使用,我们必须从 header 中取出 nav
,使其成为 grid-item .然后我们可以在 over 和 header.
对内部列使用 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;
}
<header></header>
<nav>nav</nav>
<aside>aside</aside>
<main>main</main>
此处使用较小的列宽进行演示,仅供参考。根据需要修改最大数字。