SASS 中 @extend 的注意事项

阅读时长 4 分钟读完

在 Sass 中,使用 @extend 等价于 CSS 中的类的继承,可以避免出现重复的样式,减小样式表的体积,提高代码的可复用性。但是,@extend 也有一些需要注意的地方,本文将详细介绍这些注意事项。

1. @extend 只能继承选择器

在 Sass 中,@extend 只能继承选择器,无法继承属性,例如:

上面的代码中,@extend 继承了 .button 这个选择器,但无法直接继承它的 background-color 属性,需要通过继承 .button 的方式来达到相同的效果。

2. @extend 会生成多个选择器

在 Sass 中,@extend 在继承时会产生多个选择器,如果被继承的选择器会被多个地方引用,@extend 也会被复制多次。例如:

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

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

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

上面的代码中,使用了两次 @extend 指令,会产生两个新的选择器 .primary-button 和 .danger-button,它们都包含 .button 的样式。

3. @extend 必须放在选择器的最后

在 Sass 中,@extend 必须放在选择器的最后,如果在其他样式或属性之前使用 @extend,可能会产生预期之外的结果。例如:

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

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

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

上面的代码中,@extend 在 .button 中放在了 background-color 之前,会导致样式无法正确继承,正确的写法应该是将 @extend 放在最后。

4. 含有 @extend 的样式不易维护

虽然 @extend 可以减小样式表的体积和提高代码的可复用性,但过度使用 @extend 可能会导致代码变得不易维护。当代码量增加时,很难判断某个 @extend 是否会影响其他地方的样式,还会在编译时产生多个选择器,影响页面性能。

5. 总结

在 Sass 中,@extend 是一种很方便的样式复用方式,但也需要注意以下几点:

  • @extend 只能继承选择器,无法继承属性。
  • @extend 会产生多个选择器,需要注意样式的层级关系。
  • @extend 必须放在选择器的最后,以免影响样式的继承。
  • 过度使用 @extend 可能会导致样式不易维护和页面性能下降。

因此,在使用 @extend 时,需要根据具体情况进行考虑和使用,避免出现问题。

参考代码:

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

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

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

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

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

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

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

纠错
反馈