在 CSS-Grid 中创建叠加层
Creating overlay in CSS-Grid
我正在尝试在 CSS3 网格中创建叠加层,但我似乎无法弄清楚如何实现它。我在网上搜索过,但没有找到任何帮助。我想实现如下目标:
body {
margin: 0;
padding: 0;
}
.wrapper {
display: grid;
grid-template-rows: 1f;
width: 100vw;
height: 100vh;
grid-template-areas:
"a"
"b"
"c";
}
.box {
background-color: #444;
color: #fff;
}
.a {
grid-area: a;
}
.b {
grid-area: b;
}
.c {
grid-area: c;
}
<div class="wrapper">
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c">C</div>
</div>
这是一个 link 代码笔:https://codepen.io/anon/pen/PROVeY
已编辑:
如何在 CSS3 网格布局中将 div 放置在左侧和右侧的叠加层上,以对抗其后面较大的 div
body {
margin: 0;
padding: 0;
}
.wrapper {
display: grid;
grid-template-rows: 1f;
width: 100vw;
height: 100vh;
grid-template-areas:
"a"
"b"
"c";
}
.box {
background-color: #444;
color: #fff;
}
.a {
grid-area: a;
}
.b {
grid-area: b;
}
.c {
grid-area: c;
}
.D {
grid-area: D;
}
<div class="wrapper">
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c">C</div>
<div class="box D">C</div>
</div>
像这样:
Grid-template 区域不是这里最有用的东西。最好独立定义列/行,然后将元素单独分配给它们。然后按要求对齐。
body {
margin: 0;
padding: 0;
}
.wrapper {
margin:auto;
width:90vw;
display: grid;
height: 100vh;
grid-template-columns:1fr; /* only one column */
grid-template-rows:1fr auto; /* 2 rows */
}
.a,
.b {
grid-column:1; /* first-column */
grid-row:1; /* first row */
}
.b {
width:3em;
height:3em;
align-self: end; /* bottom of column */
justify-self: end; /* right of row */
margin:1em;
}
.box {
border:1px solid green;
}
<div class="wrapper">
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c">C</div>
</div>
更新 以解决您更新后的问题:
试试下面的代码片段:
body {
margin: 0;
padding: 0;
}
.wrapper {
margin:auto;
width:90vw;
display: grid;
height: 100vh;
grid-template-columns:1fr; /* only one column */
grid-template-rows:1fr auto; /* 2 rows */
}
.a,
.b,.c {
grid-column:1; /* first-column */
grid-row:1; /* first row */
}
.c {
width:3em;
height:3em;
align-self: end; /* bottom of column */
justify-self: end; /* right of row */
margin:1em;
}
.b {
width:9em;
height:3em;
align-self: end; /* bottom of column */
justify-self: start; /* left of row */
margin:0.5em;
}
.box {
border:1px solid green;
}
<div class="wrapper">
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c">C</div>
<div class="box d">D</div>
</div>
我正在尝试在 CSS3 网格中创建叠加层,但我似乎无法弄清楚如何实现它。我在网上搜索过,但没有找到任何帮助。我想实现如下目标:
body {
margin: 0;
padding: 0;
}
.wrapper {
display: grid;
grid-template-rows: 1f;
width: 100vw;
height: 100vh;
grid-template-areas:
"a"
"b"
"c";
}
.box {
background-color: #444;
color: #fff;
}
.a {
grid-area: a;
}
.b {
grid-area: b;
}
.c {
grid-area: c;
}
<div class="wrapper">
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c">C</div>
</div>
这是一个 link 代码笔:https://codepen.io/anon/pen/PROVeY
已编辑:
如何在 CSS3 网格布局中将 div 放置在左侧和右侧的叠加层上,以对抗其后面较大的 div
body {
margin: 0;
padding: 0;
}
.wrapper {
display: grid;
grid-template-rows: 1f;
width: 100vw;
height: 100vh;
grid-template-areas:
"a"
"b"
"c";
}
.box {
background-color: #444;
color: #fff;
}
.a {
grid-area: a;
}
.b {
grid-area: b;
}
.c {
grid-area: c;
}
.D {
grid-area: D;
}
<div class="wrapper">
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c">C</div>
<div class="box D">C</div>
</div>
像这样:
Grid-template 区域不是这里最有用的东西。最好独立定义列/行,然后将元素单独分配给它们。然后按要求对齐。
body {
margin: 0;
padding: 0;
}
.wrapper {
margin:auto;
width:90vw;
display: grid;
height: 100vh;
grid-template-columns:1fr; /* only one column */
grid-template-rows:1fr auto; /* 2 rows */
}
.a,
.b {
grid-column:1; /* first-column */
grid-row:1; /* first row */
}
.b {
width:3em;
height:3em;
align-self: end; /* bottom of column */
justify-self: end; /* right of row */
margin:1em;
}
.box {
border:1px solid green;
}
<div class="wrapper">
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c">C</div>
</div>
更新
试试下面的代码片段:
body {
margin: 0;
padding: 0;
}
.wrapper {
margin:auto;
width:90vw;
display: grid;
height: 100vh;
grid-template-columns:1fr; /* only one column */
grid-template-rows:1fr auto; /* 2 rows */
}
.a,
.b,.c {
grid-column:1; /* first-column */
grid-row:1; /* first row */
}
.c {
width:3em;
height:3em;
align-self: end; /* bottom of column */
justify-self: end; /* right of row */
margin:1em;
}
.b {
width:9em;
height:3em;
align-self: end; /* bottom of column */
justify-self: start; /* left of row */
margin:0.5em;
}
.box {
border:1px solid green;
}
<div class="wrapper">
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c">C</div>
<div class="box d">D</div>
</div>