【问题标题】:grid-template-areas spanning col-names跨越列名的网格模板区域
【发布时间】:2018-08-15 00:16:08
【问题描述】:

所以你我想要这样的网格:

+-----------------------+
|          A            |
-------|--------|-------+
|  B   |  C     |   D   |
|      |        |       |
+------+--------+-------+

我可以这样做(scss 语法):

grid-template-areas: "a-block a-block a-block" "b-block c-block d-block";

所以问题:我怎么能不重复“a-block”三遍?我可以做类似repeat("a_block", 3) 之类的事情吗? 有没有更紧凑的方法来跨越网格区域列(在 sass 中)?

【问题讨论】:

    标签: css sass css-grid


    【解决方案1】:

    不,没有其他方法可以声明这些字符串值(在纯 CSS 级别)。

    每个字符串必须具有相同的列数,如 Grid 规范中所定义。

    更多细节在这里:

    【讨论】:

    • 不,我猜你不能在 vanilla CSS 中做到这一点。这太糟糕了。这迫使您保持名称简短,但我想保持名称更长 - 以匹配位于这些区域中的元素的类。
    【解决方案2】:

    这个 sass 函数应该可以解决问题。不确定这是否是最好的编写方式,但它似乎有效。

    @function repeat-str($str, $times) {
      @if $times > 0 {
        @return $str + repeat-str($str, $times - 1);
      }
      @return "";
    }
    
    .grid {
      grid-template-areas: repeat-str("a-block ", 3) "b-block c-block d-block";
      // output: grid-template-areas: "a-block a-block a-block " "b-block c-block d-block";
    }
    

    【讨论】:

    • 天哪,SASS 有时真的很丑 ;) 好吧,它可能很丑,但它有效。
    • 我同意,哈哈。甚至可能选择自己写出重复的名称,但也许该函数可以在某处重用。谁知道¯\_(ツ)_/¯
    • 对于简单的网格重复名称是一种方法。但是在一个真正的应用程序中,给网格区域赋予与将放置在其中的元素类相同的名称是非常好的。如果使用 BEM,名称可能会变得很长。如果你需要跨越其中的 20 个......你可以想象
    猜你喜欢
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 2019-10-27
    相关资源
    最近更新 更多