LESS 中的 mixin 嵌套及嵌套层级限制

阅读时长 3 分钟读完

什么是 mixin?

Mixin 是一种在 LESS 中定义可重用样式块的方式。可以将一些常用的样式组合成一个 mixin,下次需要使用这些样式时只需要调用这个 mixin 即可。

Mixin 的定义方式如下:

Mixin 调用方式如下:

mixin 嵌套

在 LESS 中,我们可以在 mixin 中嵌套其他的 mixin,以达到复用代码的目的,如下:

-- -------------------- ---- -------
------- -
  ---------- -----

  ------- -
    ------ -----
  -
-

-------- -
  --------

  ------- -
    --------
  -
-

上面的代码中,我们在 mixin1 中嵌套了一个 mixin2,然后在 element 元素中调用 mixin1 ,同时在 element 的 hover 状态下调用 mixin2。

mixin 嵌套层级限制

然而在 LESS 中, mixin 的嵌套是有层级限制的。默认情况下,LESS 允许嵌套四级。

比如下面的代码,我们在第四级 mixin 中嵌套了第五级 mixin,会得到一个嵌套层级错误的提示:

-- -------------------- ---- -------
------- -
  ------- -
    ------- -
      ------- -
        ------- -

        -
      -
    -
  -
-

错误提示信息如下:

Maximum call stack size exceeded in _mixin.less on line 6, column 1:

5 {

--------------------------------------^

这是因为 mixin5 的嵌套层级已经超过了 LESS 的默认限制。

为了避免在 LESS 的 mixin 嵌套中出现过深的层级,我们可以使用 & 来代替选择器,减少嵌套层级。如下:

-- -------------------- ---- -------
------- -
  ------- -
    ------- -
      - ------- -
        - ------- -

        -
      -
    -
  -
-

这样虽然还是五级嵌套,但是由于 mixin4 和 mixin5 使用了 & 代替选择器,相当于把 mixin4 和 mixin5 赋给 mixin3 ,这样就相当于只有三级嵌套。

总结

在 LESS 的 mixin 中,我们可以通过 mixin 嵌套来达到复用代码的目的,但是由于 mixin 嵌套存在层级限制,如果层级嵌套过深将会得到一个错误提示。我们可以使用 & 来代替选择器,减少嵌套层级,避免在 LESS 的 mixin 嵌套中出现过深的层级。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64abd88b48841e98947b7004

纠错
反馈