css 隐式网格区域命名

bpsygsoo  于 2022-12-27  发布在  其他
关注(0)|答案(1)|浏览(114)

在CSS中有没有可能使用命名的网格区域,例如grid-area: 'a',而不必声明每一个?
我想在grid-template-areas声明中使用它。

.manSection {
  display: grid;
  height: 700px;
  width: 200px;
  grid-template-areas:
    ". a ."
    "b . c"
    ". d ."
    ". e ."
    ". f ."
    "k . g"
    "r . p"
    ". h .";
  row-gap: 10px;
}
<section class="manSection">
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
</section>
qhhrdooz

qhhrdooz1#

不幸的是,这似乎不可能与当前的CSS。
您可以编写一个sass函数来循环遍历每个span,并使用:nth-child()选择器为它提供一个网格区域,但这仍然会导致相同的CSS。
我认为counters可能会自动遍历每个span并指定一个显式的网格区域,尽管grid area属性不接受字符串值,因此与计数器不兼容。

.manSection {
  display: grid;
  height: 700px;
  width: 200px;
  grid-template-areas:
    ". a ."
    "b . c"
    ". d ."
    ". e ."
    ". f ."
    "k . g"
    "r . p"
    ". h .";
  row-gap: 10px;
  counter-reset: mygrid;
}

.manSection > span {
  counter-increment: mygrid;
  grid-area: counter(mygrid, alphabetic);
}
<section class="manSection">
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
  <span>Hi</span>
</section>

相关问题