我正在尝试通过css-grid grid-template-areas选项理解和工作.
给出这个HTML
<div class="wrapper">
<div class="d">D</div>
<div class="b">B</div>
<div class="c">C</div>
<div class="a">A</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这个css
.wrapper {
grid-template-areas: "areaA areaB areaC areaD"
}
.A { grid-area: areaA; }
.B { grid-area: areaB; }
.C { grid-area: areaC; }
.D { grid-area: areaD; }
Run Code Online (Sandbox Code Playgroud)
我得到(预期)以下结果
A B C D
Run Code Online (Sandbox Code Playgroud)
现在,如果我添加媒体查询,并希望隐藏列B,C和D.
@media (min-width: 500px) {
.wrapper {
grid-template-areas: "areaA";
}
.B {
display: none;
}
.C {
display: none;
}
.D {
display: none;
}
}
Run Code Online (Sandbox Code Playgroud)
这也有效:
A
Run Code Online (Sandbox Code Playgroud)
现在,我删除了display:none条目,希望因为没有提到grid-template-areas他们不会显示的元素.我错了 ;)
是否可以指定仅使用css-grid默认隐藏未指定的元素?我似乎找不到任何提到这一点的东西
该grid-template-areas属性无法隐藏网格项目。它旨在创建网格区域。
但是您的媒体查询仍然可以非常简单。
这就是您所需要的:
@media (max-width: 500px) {
section:not(.a) { display: none; }
}
Run Code Online (Sandbox Code Playgroud)
@media (max-width: 500px) {
section:not(.a) { display: none; }
}
Run Code Online (Sandbox Code Playgroud)
article {
display: grid;
grid-template-areas: "areaA areaB areaC areaD";
}
@media (max-width: 500px) {
section:not(.a) { display: none; }
}
.a { grid-area: areaA; }
.b { grid-area: areaB; }
.c { grid-area: areaC; }
.d { grid-area: areaD; }
/* non-essential demo styles */
section {
height: 50px;
width: 75px;
background-color: lightgreen;
border: 1px solid #ccc;
display: flex;
justify-content: center;
align-items: center;
font-size: 1.2em;
}Run Code Online (Sandbox Code Playgroud)