【问题标题】:How to hide elements not specified in grid-template-areas?如何隐藏网格模板区域中未指定的元素?
【发布时间】:2020-08-17 18:46:51
【问题描述】:

我正在努力理解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>

还有这个 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; }

我得到(预期的)以下结果

A B C D

现在如果我添加一个媒体查询,并想隐藏 B、C 和 D 列

@media (min-width: 500px) {
    .wrapper {
        grid-template-areas: "areaA";
    }

    .B {
        display: none;
    }

    .C {
        display: none;
    }

    .D {
        display: none;
    }
}

这也有效:

A

现在,我随后删除了display:none 条目,希望因为grid-template-areas 中没有提及它们不会显示的元素。我错了;)

是否可以仅使用 css-grid 指定未指定的元素默认隐藏?我似乎找不到任何提到这一点的东西

【问题讨论】:

  • 否...如果一个元素没有分配一个显式网格区域,它出现在之后确定的最后一个区域隐式网格
  • 不幸的是,没有这样的方法。你仍然需要使用'display:none;'或 'visibility: hidden' 隐藏元素。

标签: css css-grid


【解决方案1】:

grid-template-areas 属性不能隐藏网格项。它旨在创建网格区域。

但您的媒体查询仍然可以非常简单。

这就是你所需要的:

@media (max-width: 500px) {

   section:not(.a) { display: none; }

}

jsFiddle demo

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;
}
<article>
  <section class="d">D</section>
  <section class="b">B</section>
  <section class="c">C</section>
  <section class="a">A</section>
</article>

【讨论】:

  • 为了不显示多个选择器,您可以将它们链接起来,例如部分:not(.a):not(.d) { 显示:无; }
  • 您能以这种方式定位特定的网格区域吗? section:not([grid-area=whatever]) 似乎是对的,但对我不起作用
  • @JonathanTuzman section:not([grid-area=whatever]) 是选择&lt;section&gt;:not&lt;... grid-area="whatever"&gt;。该选择器使用Attribute selectors (MDN),但grid-areaCSS property (MDN),而不是HTML 属性。
猜你喜欢
  • 2021-08-11
  • 1970-01-01
  • 2018-06-10
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 2021-10-15
  • 2017-04-09
  • 2014-06-01
相关资源
最近更新 更多