SCSS入门指南——功能强大的CSS预处理器
你是否曾经编写过几行 CSS 代码,并觉得应该有一种方法可以更轻松快捷地编写 CSS 代码?SCSS(Sassy CSS)正是为此而生。你是否想过将 HTML 元素嵌套在其父元素内?SCSS 正是为此而生的。不得不承认,这确实是一个非常强大的功能,它让 Web 开发人员编写 CSS 代码变得更加轻松。在本文中,我们将探讨 SCSS 的诸多特性以及更多内容。
先决条件
-
具备 HTML 和 CSS 的基础知识(至少用它们构建过一个简单的网页)。
-
代码编辑器(推荐使用 VS Code)。
-
以及一个浏览器(推荐使用Chrome或Firefox)。
为什么选择 SCSS?
SCSS(Sassy CSS)是一种预处理器脚本语言,它会被编译成普通的 CSS。SCSS 通过添加变量、嵌套、mixin 等特性扩展了 CSS 的功能。以下列举了一些您可能考虑使用 SCSS 而不是纯 CSS 来设计静态和动态网页样式的原因。
-
变量: SCSS 允许您定义变量,这对于存储可重用的值(例如颜色、字体大小和间距)非常有用。这使得保持样式的一致性以及在一个地方更改值变得更加容易。
-
嵌套: SCSS 允许您将 CSS 规则嵌套在父选择器中。这有助于提高样式的可读性,并使其更具条理性,尤其是在处理复杂结构时。
-
Mixins: Mixins 允许您定义可重用的样式块,这些样式块可以在多个地方引用。这有助于减少代码重复,并使您的样式更易于维护。
-
局部文件和导入: SCSS 支持将样式拆分成更小的模块化文件,称为局部文件(partials)。然后,您可以使用
@import指令将这些局部文件合并成一个单独的 CSS 文件。这可以使您的代码库更清晰、更易于管理。 -
数学运算: SCSS 允许您对值执行算术运算,这对于响应式布局、间距调整等计算非常有用。
-
函数: SCSS 提供了一组内置函数,可用于操作数值、执行颜色计算等。
-
条件语句: SCSS 支持 if/else 语句和循环,这对于根据特定条件创建动态样式非常有用。
-
易读的语法:大多数开发者都认为 SCSS 的语法比普通 CSS 更易读、更直观。嵌套结构能让代码更容易理解,尤其是在处理复杂的样式场景时。
然而,需要注意的是,选择使用 SCSS 还是纯 CSS 取决于项目的具体需求和性质以及您的个人偏好。如果您正在开发一个样式需求极少的小型项目,纯 CSS 可能就足够了。另一方面,对于规模更大、更复杂的项目,SCSS 可以提供诸多优势,从而带来更高效、更易于维护的样式工作流程。
什么是SCSS?
SCSS,即“Sassy CSS”,是一种 CSS 预处理器脚本语言,它在标准 CSS 的基础上添加了额外的特性和功能。它的开发旨在提高样式表编写和管理的效率和强大功能。SCSS 是 CSS 的超集,这意味着任何有效的 CSS 也都是有效的 SCSS,但 SCSS 为 CSS 扩展了更多功能。
SCSS 最初由Hampton Catlin 于 2006 年开发,后于2009 年由 Natalie Weizenbaum维护。该语言旨在解决编写复杂且易于维护的 CSS 时遇到的一些限制和挑战。SCSS 也被称为“SASS” ,即Syntactically Awesome Stylesheets(语法超棒的样式表)的缩写。
如何安装 SCSS
可以通过在 VS Code 编辑器中下载Live Sass Compiler扩展来安装 SCSS 。
也可以按照以下步骤安装该扩展:
- 打开 VS Code 编辑器
- 按下键盘上的 Ctrl + P
- 输入
exe install glenn2223.live-sass
SCSS是如何编译的
如下图所示,点击Watch Sass状态栏中的按钮即可编译 SCSS。这将激活 SCSS 的实时编译,之后您可以再次点击Stop Watching Sass状态栏中的按钮来关闭实时编译。
所有在 main.scss 文件中编写的 SCSS 代码都将被编译到该文件夹main.css中的文件中。/dist/css
注意: SCSS 文件以 .scss 为扩展名保存,例如 style.scss。此外,与 HTML 链接所需的文件是main.css目录中的文件./dist/css/main.css,请注意,该main.scss文件是正在编译的文件。另外,main.scss在编写任何 SCSS 代码之前,必须先创建该文件。
SCSS 中的嵌套
大多数 Web 开发人员使用 SCSS 的原因之一是它的嵌套功能。SCSS 允许您将 CSS 规则嵌套在父选择器中。这有助于提高样式的可读性,并使其更具条理性,尤其是在处理复杂结构时。
例如,让我们创建一个简单的 HTML 页面,其中包含两个元素:一个父元素和一个子元素。
<body>
<div class="parent">
<div class="child"></div>
</div>
</body>
让我们添加一些样式,并将这两个元素嵌套在一起。
.parent {
padding: 2rem;
background-color: red;
.child {
background-color: blue;
padding: 1rem;
}
}
上述代码的运行结果如下所示。
让我们给父元素添加悬停状态
.parent {
padding: 2rem;
background-color: red;
.child {
background-color: blue;
padding: 1rem;
}
&:hover {
background-color: yellow;
}
}
在嵌套规则中,& 符号(&)用作占位符,用于选择当前或父选择器。
在 SCSS 中声明变量
在 SCSS 中,变量使用 ` $<variable>` 符号声明。参考上面的 HTML 页面,下面是 SCSS 中使用变量的简单方法。
$color-primary: red;
$color-secondary: blue;
$padding-large: 2rem;
$padding-small: 1rem;
.parent {
padding: $padding-large;
background-color: $color-primary;
.child {
background-color: $color-secondary;
padding: $padding-small;
}
}
与 CSS 不同,在 SCSS 中声明变量非常简单,而且这些变量可以保存为局部视图(partials),以便在任何地方使用。我们将在本文后面更深入地探讨局部视图。
在 SCSS 中使用 Mixins
Mixins 是 SCSS 的一项强大功能,它允许您定义可重用的 CSS 属性和规则块。这些块随后可以包含在样式表的不同部分中。Mixins 对于减少代码重复、促进模块化设计以及提高样式表的可维护性尤为有用。
以下是 SCSS 中 mixin 的工作原理:
定义 Mixin:可以使用指令 `mixin`,后跟名称和一组 CSS 属性和规则来定义 Mixin @mixin。以下是一个简单的 Mixin 示例:
@mixin box-shadow($x, $y, $blur, $color) {
box-shadow: $x $y $blur $color;
}
使用 Mixin:上述 Mixin 可以通过在样式表中使用@include指令来调用,指令后跟 Mixin 的名称及其所需的任何参数。以下是一个示例:
.parent {
@include box-shadow(2px, 2px, 5px, rgba(0, 0, 0, 0.2));
}
在上面的示例中,box-shadowmixin 被包含在.parent类中,应用了指定的 box-shadow 属性。
SCSS 中的函数
SCSS 函数是另一项强大的功能,它使您能够执行计算、操作数值和创建动态样式。SCSS 提供内置函数,也允许您创建自定义函数。SCSS 中的函数与编程语言中的函数类似,它们接受输入(参数)并返回值。
以下是 SCSS 中函数工作原理的示例;
内置函数:SCSS 提供了各种内置函数,可用于操作值、执行计算和修改样式。一些内置函数示例包括 `__getitem__` 、lighten()` __getitem__`、 `__getitem__` 、`__getitem__`、`__getitem__` 等等。darken()rgba()round()percentage()mix()
$color: #3498db;
.lighter-color {
background-color: lighten($color, 20%);
}
自定义函数: SCSS 还允许您使用指令创建自定义函数@function。自定义函数可以接受参数、执行计算或逻辑运算,并返回值。以下是一个将像素值转换为 rem 的自定义函数示例:
@function px-to-rem($pxValue, $baseFontSize: 16px) {
@return ($pxValue / $baseFontSize) * 1rem;
}
.text {
font-size: px-to-rem(18px);
}
SCSS 中局部视图的工作原理
在 SCSS 中,partials 文件可以将样式表拆分成更小、更模块化的文件,从而更好地组织和维护代码。SCSS 中的 partial 文件通常以下划线 (_) 为前缀,并以 .scss 为扩展名。它们包含 CSS 代码片段,可以使用@import指令将其包含并合并到主 SCSS 文件中。
以下是 SCSS 中 partials 的工作原理
- 创建局部文件:局部文件用于存放样式中的特定部分,例如字体、颜色、布局等。要创建局部文件,您需要为其命名,文件名以下划线开头,以“.”结尾
.scss。例如,_variable.scss`.partial.js`。
2.
在局部文件中定义样式:
在局部文件中,您可以像在常规 SCSS 文件中一样定义样式。例如,_variables.scss 可以包含颜色和字体相关的样式:
// _variables.scss
$base-font-size: 16px;
$color-primary: red;
$color-secondary: blue;
$padding-large: 2rem;
$padding-small: 1rem;
body {
font-family: Arial, sans-serif;
font-size: $base-font-size;
}
3.
导入局部样式表:要将局部样式表中的样式包含到主 SCSS 文件中,请使用@import不带下划线和扩展名的指令。导入局部样式表时,无需在导入语句中包含下划线或 .scss。//
main.scss
@import 'variables';
.parent {
padding: $padding-large;
background-color: $color-primary;
.child {
background-color: $color-secondary;
padding: $padding-small;
}
}
SCSS中的继承
SCSS 还允许使用 ` @extend<property>` 指令后跟元素选择器,将属性从父元素继承到子元素
。以下是 SCSS 中继承的工作原理。
.parent {
display: flex;
justify-content: center;
align-items: center;
.child {
@extend .parent;
flex-wrap: wrap;
}
}
在上面的代码中,.parent元素的所有属性都将被继承.child,这类似于 mixin,但略有不同,因为 mixin 更灵活。
想了解更多关于 SCSS 的知识?点击下方链接,跟随@codestackr学习 SCSS 课程-链接
文章来源:https://dev.to/classicthedemigod/getting-started-with-scss-the-css-preprocessor-with-superpowers-34ed


