【问题标题】:grid-template-areas: none vs grid-template-areas: dot?网格模板区域:无 vs 网格模板区域:点?
【发布时间】:2021-08-27 21:17:22
【问题描述】:

csstricks says,我们有grid-template-areas 的三个属性值,其中两个是.none。我看不出.none 影响网格的方式有什么不同。请参阅以下内容:

.grid-container {
  display: grid;
  grid-template-areas: "one none two three"
                         "four five . six" ;
  grid-gap: 10px;
  background-color: #2196F3;
  padding: 10px;
}

.grid-container > div {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  padding: 20px 0;
  font-size: 30px;
}

.item1 {
  grid-area: one;
}

.item2 {
  grid-area: two;
}

.item3 {
  grid-area: three;
}

.item4 {
  grid-area: four;
}

.item5 {
  grid-area: five;
}

.item6 {
  grid-area: six;
}
<div class="grid-container">
  <div class="item1">1</div>
  
  <div class="item2">2</div>
  <div class="item3">3</div>  
  <div class="item4">4</div>
  <div class="item5">5</div>
  
  <div class="item6">6</div>
</div>

正如您在上面看到的.none 都在网格中留下空块。我也在MDN上搜索过,但没有解释差异。所以,

grid-template-areas: nonegrid-template-areas: .有什么区别?

【问题讨论】:

  • 显然,呃,none。 ☺
  • none 是属性的整体值,不能用作命名区域
  • @Paulie_D w3.org 有一些理由同时拥有 none.,否则他们可能只需要定义一个就可以逃脱。
  • @TemaniAfif 我不这么认为,csstricks 给出了这个例子:grid-template-areas: "&lt;grid-area-name&gt; | . | none | ..." "...";
  • @user31782 css 技巧没有错,但在这里有点误导。您可以阅读none – no grid areas are defined s。他们展示的语法并不能很好地强调 none 本身就是一个值这一事实。他们应该纠正这个

标签: html css css-grid


【解决方案1】:

来自the specification

名称:网格模板区域

值:无 | &lt;string&gt;+

首字母:无

none 本身是一个值 (grid-template-areas:none),而不是像 grid-template-areas:" none one" 这样使用的值。后者将属于&lt;string&gt;+"none" 将成为命名区域并且不同于.

  • 一系列名称代码点,代表一个命名单元标记,其名称由其代码点组成。

  • 一个或多个“.”的序列(U+002E FULL STOP),代表一个null cell token

下面,我将 6 放在"none" 区域

.grid-container {
  display: grid;
  grid-template-areas: "one . two three"
                         "four five none six" ;
  grid-gap: 10px;
  background-color: #2196F3;
  padding: 10px;
}

.grid-container > div {
  background-color: rgba(255, 255, 255, 0.8);
  text-align: center;
  padding: 20px 0;
  font-size: 30px;
}

.item1 {
  grid-area: one;
}

.item2 {
  grid-area: two;
}

.item3 {
  grid-area: three;
}

.item4 {
  grid-area: four;
}

.item5 {
  grid-area: five;
}

.item6 {
  grid-area: none;
}
<div class="grid-container">
  <div class="item1">1</div>
  
  <div class="item2">2</div>
  <div class="item3">3</div>  
  <div class="item4">4</div>
  <div class="item5">5</div>
  
  <div class="item6">6</div>
</div>

这就是说,您的示例将没有任何区别,因为您明确地将所有项目放置为“无”和“。”在所有情况下都将保持为空。你可以放任何东西,结果都是一样的。

【讨论】:

  • 看来我得停止阅读csstricks了。他们似乎建议,none 可以用来代替 grid-area 名称 来禁用该特定单元格。
  • @user31782 我们不能禁用单元格,如果您认为是这种情况,那您是误会了。即使你使用点,你也不会禁用一个单元格,你只会创建一个未命名的单元格(没有明确的名称用于宽度网格区域)
  • 关于你最后一段 你可以放任何东西 -- 这样我们甚至不需要.,我们不能随便用任何名字来创建一个空单元格,不用作网格项的网格区域的定义?
  • @user31782 . 用于如果您不想给单元格命名,就是这样。这并不意味着您不能将元素放在那里,否则它将是一个空单元格。
  • 我认为. 只是一个示例字符串,即使使用- 而不是. 也可以。可能只是一种确保没有明确定义的grid-area 适合该单元格的方法。
猜你喜欢
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 2018-08-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多