CSS 网格,当区域可选时去除间隙
CSS grid, remove gap when area is optional
我开始使用 CSS 网格(太棒了!)。我从最基本的布局开始:移动布局。另外,随着网页的增长,我正在使用媒体查询来更改布局。
目前,我的布局由 3 个区域组成。确切的顺序是内容区、侧边栏区和评论区。 评论区是可选的,可能根本不会显示。区域之间存在 40px 的间距。
这是移动布局css
.grid {
display: grid;
grid-template-columns: 1fr;
grid-auto-rows: auto;
grid-gap: 40px;
}
如果评论区不存在,评论区的空隙也不存在,这就是我想要的。
https://jsfiddle.net/p54od8ho/
当页面变大时,我正在更改布局,如下所示:
@media screen and (min-width: 768px) {
.content {
grid-area: content;
}
.sidebar {
grid-area: sidebar;
}
.comments {
grid-area: comment;
}
.grid {
grid-template-columns: 1fr 300px;
grid-template-rows: auto;
grid-template-areas:
"content sidebar"
"comment sidebar";
}
}
https://jsfiddle.net/g20gtd4z/
40px的空隙是因为评论区存在
但是,评论区不存在时会出现这样的情况:
https://jsfiddle.net/6Lfg55my/1/
如果你注意到,即使评论区不存在,40px 的差距也存在。
我认为一个解决方案是创建一个 class,只是为了删除评论区。
.grid.no_comment {
grid-template-areas:
"content sidebar"
". sidebar";
}
必须有更好更简单的方法(或者可能没有)..
有没有办法,只使用网格选项,让评论区不存在时,差距也消失了?
当评论区存在时,容器中有两列两行:
.grid {
grid-template-columns: 1fr 300px;
grid-template-rows: auto;
grid-gap: 40px;
grid-template-areas:
"content sidebar"
"comment sidebar";
}
因此,自然地,grid-gap
适用于第一行和第二行(和列)之间。
去掉评论区后,容器中还有两列两行。删除该项目不会更改 grid-template-areas
.
的值
因此,自然地,grid-gap
继续在两行之间应用。除了现在,随着评论部分的消失,那个网格区域有一个更大的 space。
当您要删除评论部分时,为什么不删除整个第二行而不是删除那个网格项? grip-gap
仅适用于 在 个网格项之间。
.grid {
grid-template-columns: 1fr 300px;
grid-template-rows: auto;
grid-gap: 40px;
grid-template-areas:
"content sidebar"
/* "comment sidebar" */
;
}
我开始使用 CSS 网格(太棒了!)。我从最基本的布局开始:移动布局。另外,随着网页的增长,我正在使用媒体查询来更改布局。
目前,我的布局由 3 个区域组成。确切的顺序是内容区、侧边栏区和评论区。 评论区是可选的,可能根本不会显示。区域之间存在 40px 的间距。
这是移动布局css
.grid {
display: grid;
grid-template-columns: 1fr;
grid-auto-rows: auto;
grid-gap: 40px;
}
如果评论区不存在,评论区的空隙也不存在,这就是我想要的。
https://jsfiddle.net/p54od8ho/
当页面变大时,我正在更改布局,如下所示:
@media screen and (min-width: 768px) {
.content {
grid-area: content;
}
.sidebar {
grid-area: sidebar;
}
.comments {
grid-area: comment;
}
.grid {
grid-template-columns: 1fr 300px;
grid-template-rows: auto;
grid-template-areas:
"content sidebar"
"comment sidebar";
}
}
https://jsfiddle.net/g20gtd4z/
40px的空隙是因为评论区存在
但是,评论区不存在时会出现这样的情况:
https://jsfiddle.net/6Lfg55my/1/
如果你注意到,即使评论区不存在,40px 的差距也存在。
我认为一个解决方案是创建一个 class,只是为了删除评论区。
.grid.no_comment {
grid-template-areas:
"content sidebar"
". sidebar";
}
必须有更好更简单的方法(或者可能没有).. 有没有办法,只使用网格选项,让评论区不存在时,差距也消失了?
当评论区存在时,容器中有两列两行:
.grid {
grid-template-columns: 1fr 300px;
grid-template-rows: auto;
grid-gap: 40px;
grid-template-areas:
"content sidebar"
"comment sidebar";
}
因此,自然地,grid-gap
适用于第一行和第二行(和列)之间。
去掉评论区后,容器中还有两列两行。删除该项目不会更改 grid-template-areas
.
因此,自然地,grid-gap
继续在两行之间应用。除了现在,随着评论部分的消失,那个网格区域有一个更大的 space。
当您要删除评论部分时,为什么不删除整个第二行而不是删除那个网格项? grip-gap
仅适用于 在 个网格项之间。
.grid {
grid-template-columns: 1fr 300px;
grid-template-rows: auto;
grid-gap: 40px;
grid-template-areas:
"content sidebar"
/* "comment sidebar" */
;
}