最大宽度与css网格

时间:2018-02-28 08:52:01

标签: css css3 css-grid

我想知道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标签上设置最大宽度,那么我如何获得一个延伸浏览器整个宽度的标题?

https://jsfiddle.net/6zd3o088/6/

1 个答案:

答案 0 :(得分:3)

将此视为

的四个列网格
grid-template-columns: 10% 275px 1fr 10%;

然后根据修订的网格区域

分配元素
grid-template-areas: 
"header header header header"
". aside main .";

&#13;
&#13;
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;
&#13;
&#13;

要使用max-width nav尊重我们必须从标题中取nav的值,以便它成为网格项。然后我们可以在网格上将它对齐 over 标题。

对内部列使用minmax我们可以获得所需的结果

&#13;
&#13;
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;
&#13;
&#13;

演示此处使用较小的列宽仅供参考。根据需要修改最大数字。

Codepen

相关问题