SASS 中的 @extend 用法及注意点

阅读时长 5 分钟读完

SASS 中的 @extend 用法及注意点

在前端开发中,CSS 是不可或缺的一部分,但 CSS 语法比较冗长,写起来很不方便。为了解决这个问题,我们可以使用 SASS(Syntactically Awesome StyleSheets)这个 CSS 预处理器来大幅简化 CSS 的编写。

SASS 中的 @extend 是一个很强大的功能,可以实现类似继承一样的效果,避免重复劳动,提高 CSS 的可维护性。本文将详细介绍 @extend 的用法及注意点,希望能够对大家有所帮助。

@extend 的基本用法

在 SASS 中,可以使用 @extend 来实现类似继承的效果。假设我们有一个基础样式 .base-style,我们可以使用 @extend 来继承它的样式:

这样,.new-style 就会继承 .base-style 中的所有样式,并加上自己的一些样式。最终编译出来的 CSS 代码如下:

可以看到,SASS 将 .new-style 继承自 .base-style 的样式,合并了起来,生成了新的 CSS 代码。

同时,我们还可以继承多个样式,只需要在 @extend 后面跟上多个类名即可:

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

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

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

这样,.new-style 就继承了 .base-style 和 .extra-style 的样式。最终编译出来的 CSS 代码如下:

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

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

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

注意:在继承多个样式时,SASS 会按照类名在 CSS 中的先后顺序来合并样式,所以要根据实际需要进行设计和排列。

@extend 的注意点

虽然 @extend 很方便,但是在使用过程中也有一些需要注意的地方:

  1. 不能继承父级样式

在 SASS 中,@extend 只能继承同一层级的样式,不能继承父级的样式。下面的案例中,new-style 想要继承 base-style,但是实际上并不会生效:

这样写是不行的,要继承 base-style,必须在同一层级中。

  1. 不要滥用 @extend

虽然 @extend 非常方便,但是如果使用得过于频繁,就会导致较长的 CSS 选择符。例如下面的代码中,new-style 继承了 base-style 和 extra-style,但是生成的 CSS 选择符就比较长了:

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

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

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

最终生成的 CSS 选择符如下:

可以看到,CSS 的选择符非常长,如果出现在多个地方,就会造成不必要的网络带宽浪费。

  1. 不要跨文件使用 @extend

虽然 SASS 支持在不同文件中使用 @extend,但是这样会使你的 CSS 设计变得混乱。比如,我们有一个 main.scss 主文件和一个 variables.scss 变量文件,并且在变量文件中定义了一个 $brand-color 变量,现在我们想要在主文件中使用 @extend 继承这个变量:

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

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

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

这样看起来没什么问题,但是如果我们在其他地方也用到了这个变量,并且改变了它的值,就会在不知不觉中改变我们在 main.scss 中的样式,这种情况非常危险,所以不要在不同文件中使用 @extend。

总结

@extend 是 SASS 中一个非常有用的功能,可以让我们编写 CSS 更加方便。在使用 @extend 时,需要注意不能继承父级样式、不要滥用、不要跨文件使用等事项,这样可以避免出现意外的问题,提高代码的可维护性和可读性。

示例代码:

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

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

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

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

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

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

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

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

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

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

纠错
反馈