为什么人们在 SCSS 中使用“@extend”?
Why people use '@extend' in SCSS?
在 Sass 中,我发现我可以将“@extend”与“@mixin”一起使用。
但是从代码中,我很好奇使用扩展的优势是什么。
如果我们知道我们必须使用哪个 'classes',我们可以只使用两个 class,而不是扩展和制作另一个 class.
在我看来,如果我们只使用两个 classes,而不进行多次扩展,代码会更短并且我们可以节省内存。我能想到的优点是在 'CSS output' 上更容易看到,但通常人们只检查 SCSS 文件,而不是 CSS 代码输出。
使用两个单独的 classes 而不是使用多个扩展不是更好吗?使用“@mixin”的主要优势是什么?
它可以帮助您快速编写 DRY 代码。如果使用得当,@extend 会非常有用。
它允许一个选择器扩展另一个选择器的样式,实质上提供了一种子类化形式。 @extend 通过将选择器组合成一个逗号分隔的选择器来工作。
即-
.A {
font-size: 1rem;
color:red;
}
.a{
@extend .A;
line-height: normal;
}
Which outputs:
.A,.a {
font-size: 1rem;
color:red;
}
.a{
line-height: normal;
}
有几个关于扩展的重要问题需要牢记:
- 他们更改您的 CSS 规则的顺序并经常笨拙地重新组合它们,这可能会在以后出现意外问题
- 当你的 Sass 被缩小和 gzip 时,它们的性能不如 Mixins。
Harry Roberts 详细介绍这些问题的精彩文章:"Mixins for Better Performance"
在 Sass 中,我发现我可以将“@extend”与“@mixin”一起使用。
但是从代码中,我很好奇使用扩展的优势是什么。
如果我们知道我们必须使用哪个 'classes',我们可以只使用两个 class,而不是扩展和制作另一个 class.
在我看来,如果我们只使用两个 classes,而不进行多次扩展,代码会更短并且我们可以节省内存。我能想到的优点是在 'CSS output' 上更容易看到,但通常人们只检查 SCSS 文件,而不是 CSS 代码输出。
使用两个单独的 classes 而不是使用多个扩展不是更好吗?使用“@mixin”的主要优势是什么?
它可以帮助您快速编写 DRY 代码。如果使用得当,@extend 会非常有用。
它允许一个选择器扩展另一个选择器的样式,实质上提供了一种子类化形式。 @extend 通过将选择器组合成一个逗号分隔的选择器来工作。
即-
.A {
font-size: 1rem;
color:red;
}
.a{
@extend .A;
line-height: normal;
}
Which outputs:
.A,.a {
font-size: 1rem;
color:red;
}
.a{
line-height: normal;
}
有几个关于扩展的重要问题需要牢记:
- 他们更改您的 CSS 规则的顺序并经常笨拙地重新组合它们,这可能会在以后出现意外问题
- 当你的 Sass 被缩小和 gzip 时,它们的性能不如 Mixins。
Harry Roberts 详细介绍这些问题的精彩文章:"Mixins for Better Performance"