如何构建网格布局
How to structure a grid layout
所以我遇到以下问题 CSS:
const Content = styled("div")`
grid-area: main;
background-color: white;
margin-top: 5px;
margin-left: 20px;
margin-right: 20px;
display: grid;
grid-template-areas:
"contentHeader contentHeader contentHeader"
"contentItem contentItem contentItem"
"contentItem contentItem contentItem";
/* grid-template-columns: 1fr; */
/* grid-auto-columns: 33px;
grid-auto-rows: 150px; */
grid-gap: 10px;
`;
const ContentHeader = styled("h1")`
grid-area: contentHeader;
font-family: Roboto;
font-style: normal;
font-weight: bold;
font-size: 32px;
line-height: 40px;
color: black;
`;
const ContentMain = styled("div")`
grid-column: 1fr;
grid-row: 1fr;
background-color: red;
`;
我的目标是左上角有 header 的布局,然后是两行。
第一行有两列,第一项比第二项大。第二行将有一项填满两列。
相反,我得到了这个:
我知道问题可能出在我的 grid-column
行中,但如果有人能指出正确的方向,那就太好了。另外,我不明白为什么我的 header 和彩色网格项目之间有巨大的差距?
谢谢!
您需要为模板区域中的每个内容项命名:
例如:
grid-template-areas:
"contentHeader contentHeader contentHeader"
"contentItem1 contentItem1 contentItem2"
"contentItem3 contentItem3 contentItem3";
然后在您的 contentItem1 中将此添加到 css:
grid-area: contentItem1
在 contentItem2 div 中将此添加到 css:
grid-area: contentItem2
最后在 contentItem3 中将此添加到 css:
grid-area: contentItem3
这是 css 唯一的演示:
.grid {
display: grid;
grid-template-areas: "contentHeader contentHeader contentHeader" "contentItem1 contentItem1 contentItem2" "contentItem3 contentItem3 contentItem3";
grid-gap: 10px
}
.header {
grid-area: contentHeader;
background-color: red;
height: 50px
}
.item1 {
grid-area: contentItem1;
background-color: blue;
height: 150px;
}
.item2 {
grid-area: contentItem2;
background-color: green;
height: 150px;
}
.item3 {
grid-area: contentItem3;
background-color: yellowgreen;
height: 150px;
}
<div class="grid">
<div class="header"></div>
<div class="item1"></div>
<div class="item2"></div>
<div class="item3"></div>
</div>
所以我遇到以下问题 CSS:
const Content = styled("div")`
grid-area: main;
background-color: white;
margin-top: 5px;
margin-left: 20px;
margin-right: 20px;
display: grid;
grid-template-areas:
"contentHeader contentHeader contentHeader"
"contentItem contentItem contentItem"
"contentItem contentItem contentItem";
/* grid-template-columns: 1fr; */
/* grid-auto-columns: 33px;
grid-auto-rows: 150px; */
grid-gap: 10px;
`;
const ContentHeader = styled("h1")`
grid-area: contentHeader;
font-family: Roboto;
font-style: normal;
font-weight: bold;
font-size: 32px;
line-height: 40px;
color: black;
`;
const ContentMain = styled("div")`
grid-column: 1fr;
grid-row: 1fr;
background-color: red;
`;
我的目标是左上角有 header 的布局,然后是两行。
第一行有两列,第一项比第二项大。第二行将有一项填满两列。
相反,我得到了这个:
我知道问题可能出在我的 grid-column
行中,但如果有人能指出正确的方向,那就太好了。另外,我不明白为什么我的 header 和彩色网格项目之间有巨大的差距?
谢谢!
您需要为模板区域中的每个内容项命名: 例如:
grid-template-areas:
"contentHeader contentHeader contentHeader"
"contentItem1 contentItem1 contentItem2"
"contentItem3 contentItem3 contentItem3";
然后在您的 contentItem1 中将此添加到 css:
grid-area: contentItem1
在 contentItem2 div 中将此添加到 css:
grid-area: contentItem2
最后在 contentItem3 中将此添加到 css:
grid-area: contentItem3
这是 css 唯一的演示:
.grid {
display: grid;
grid-template-areas: "contentHeader contentHeader contentHeader" "contentItem1 contentItem1 contentItem2" "contentItem3 contentItem3 contentItem3";
grid-gap: 10px
}
.header {
grid-area: contentHeader;
background-color: red;
height: 50px
}
.item1 {
grid-area: contentItem1;
background-color: blue;
height: 150px;
}
.item2 {
grid-area: contentItem2;
background-color: green;
height: 150px;
}
.item3 {
grid-area: contentItem3;
background-color: yellowgreen;
height: 150px;
}
<div class="grid">
<div class="header"></div>
<div class="item1"></div>
<div class="item2"></div>
<div class="item3"></div>
</div>