我为什么要使用 SASS?






4.94/5 (4投票s)
一篇快速阅读,
引言
作为一名网页开发者,我们常常会遇到一个关键的障碍:虽然能够出色地将代码编织在一起,但“代码的面子”——即实际的用户界面——却不像其内部结构那样“美观”。也许原因并非缺乏创造力,而是因为一种令人“口感不佳”、“留下苦涩味道”的语法,那就是CSS。有时并非开发者缺乏“设计技巧”,而是他们难以接受一种“粗糙且难以阅读”的语言。
这就像一个“艺术家”只有一个“两种颜色”的调色板,每次绘画的结果都是枯燥乏味的、重复不变的。然而,如果这位“艺术家”被告知,他/她拥有一系列颜色,可以根据需要进行选择和使用;那么他/她所创造出来的东西将是真正令人惊叹的!
我的观点是——对于新手开发者来说,CSS需要一段时间才能理解、掌握甚至接受,而SASS(Syntactically Awesome Style Sheets,语法上超赞的样式表)就此应运而生。这便是对能够让你的“网页开发”体验更加愉悦、减少痛苦(易于维护,减少重复)的甜美之物的介绍。
背景
什么是SASS?
SASS仅仅是一个框架,或者更准确地说,是一套工具,它允许开发者以一种更具逻辑性的方式利用CSS,并且正如“Rails开发者所说”,更加DRY(Don't Repeat Yourself,不要重复自己)。
为什么要使用SASS?
为什么要使用SASS?现在进行谷歌搜索会返回大量结果,我的意思是,市面上有太多这样的框架,除非有同事推荐等,你几乎会忽略它,认为它只是众多“网络”技术中的又一个。所以,为了解决这个问题,我想重点介绍SASS的3个主要“优点”,它们可以立即改善你的“开发时间和体验”,并可能说服你使用它。
SASS安装
遗憾的是,SASS的官方网站没有为.NET用户提供默认安装。它假设你是一个Ruby用户,如果是的话,安装就像打开一罐豆子一样简单。
即:
gem install sass
如果你正在使用Ruby on Rails,那么这是集成SASS的最佳方式,
gem install bootstrap-sass
对于.NET用户,则需要采取不同的方法,因为你将不得不使用Visual Studio的插件。
Mindscape Web Workbench (约18MB)。

对于Sass SCSS文件,Web Workbench提供:
- 语法高亮
- 智能感知。
- 语法错误警告
- 未知变量和混合器的警告
- 跳转到变量或混合器定义
- CSS文件生成
- CSS文件最小化 - 仅限专业版
你的CSS文件将生成在SCSS源文件相同的文件夹中,因此你的HTML页面可以像手动编写CSS一样引用该位置的CSS文件。
Using the Code
变量
在开发任何网站时,我倾向于最多使用3种颜色来主要决定外观和感觉或用户界面。我经常发现自己追溯一种主色调的各种深浅,例如蓝色、浅蓝色等(或者更准确地说,是它们的HEX值)。
SASS的优点在于,我们有变量,是的,真正的“变量”,所以你可以这样做:
$gray-Dark: #474546;
所以现在,当我需要引用它时,比如说对于a
;
header {
background-color: $gray-Dark;
}
footer {
margin-top: 30px;
padding-top: 5px;
border-top: 1px solid $gray-Dark;
background-color: $gray-Light;
}
这背后的强大之处在于,你现在有了一个更改颜色的参考点,而不是需要翻阅多个CSS或一个大的CSS文件来更改所有相关标签的颜色。对于快速“模型制作”来说,这也是一个巨大的优势。
但是,假设我想让我的页脚稍微亮一些,作为灰色的一种变体。我可以定义一个新的变量,如下所示。
$gray-Light: lighten($gray-Dark, 20%);
footer {
margin-top: 30px;
padding-top: 5px;
border-top: 1px solid $gray-Dark;
background-color: $gray-Light;
}
注意格式:lighten(color, %change)。所以基本上,我已经采用了我正在使用的“深灰色”并使其变亮20%。这真的很方便!还有无数其他函数,你应该去了解一下(如“darken”、“lightness”等)。点击这里。
嵌套
现在,传统上使用CSS,你会这样做来进行“嵌套”;请注意#header
与其h1
的分离,这使得CSS文件臃肿且难以阅读。
#header {
background-color: $gray-Dark;
}
#header h1 {
float: left;
}
使用SASS,“嵌套”更加方便;我们可以直接在目标(类)内部进行“嵌套”。也就是说,“h1
”的父元素是#header
,现在可以将其直接嵌套在内部,从而更容易阅读、跟踪和修改。
#header {
background-color: $gray-Dark;
h1 {
float: left;
}
}
函数
你相信吗,是的,你自己的函数。我无法充分表达这背后的强大之处,但让我们用一个例子来让你有所了解。
#header {
background-color: $gray-Dark;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
h1 {
float: left;
}
}
#nav-left {
padding: 5px 12px;
margin: 10px 0;
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
#footer {
border: solid 1px $gray-Dark
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
现在,正如你所见,border-radius重复了3次。更改其中一个需要我一丝不苟地更改所有三个。但这有点麻烦,更不用说额外的代码、增加了文件大小,并降低了可读性。使用SASS,我可以 Instead 移除这个‘CSS’并为此创建一个单独的函数,我可以在所有3个地方引用它。
在我文件顶部,也就是声明变量的地方;我们添加我们的函数,或者SASS称之为MIXIN
。
@mixin <name> {
// CODE TO REPEAT
}
@mixin rounded-corners {
border-radius: 10px;
-moz-border-radius: 10px;
-webkit-border-radius: 10px;
}
它的实现是这样的:
#header {
background-color: $gray-Dark;
@include rounded-corners
h1 {
float: left;
}
}
#nav-left {
padding: 5px 12px;
margin: 10px 0;
@include rounded-corners
}
#footer {
border: solid 1px $gray-Dark
@include rounded-corners
}
但是,假设#nav-left
的圆角不同——border-radius不是10px
而是8px
。SASS如何帮助我们?
一个“函数”(mixin
)只有在我们能够提供“参数”或“参数”时才是一个真正的函数。所以让我们稍微修改一下我们的MIXIN
以支持自定义半径。
即:
@mixin rounded-corners($radius) {
border-radius: $radius;
-moz-border-radius: $radius;
-webkit-border-radius: $radius;
}
但在我们实现之前,在MIXIN
被使用但没有指定半径的地方,如何设置一个默认值呢?
@mixin rounded-corners($radius: 8px) {
border-radius: $radius;
-moz-border-radius: $radius;
-webkit-border-radius: $radius;
}
漂亮,不是吗?但让我们看看我们的实现,如果你是一个开发者,脑子里应该已经有了想法。
#header {
background-color: $gray-Dark;
@include rounded-corners(10px);
h1 {
float: left;
}
}
#nav-left {
padding: 5px 12px;
margin: 10px 0;
@include rounded-corners(8px);
}
#footer {
border: solid 1px $gray-Dark
@include rounded-corners(10px);
}
但是可编程性不止于此,再次强调,为了不让你信息过载,而是让你了解它的强大之处;SASS还支持条件状态(if
, else if
, else
);以及“For
”循环和“For Each
”。
关注点
你可能还想考虑的另一个可能性,它使网页创作过程更加轻松,并且它自己使用了SASS,是一个叫做COMPASS的 neat 小项目。基本上,这是一套高级的、经过实战检验的函数(mixins),可以进一步改进你的开发周期。另一种思考方式是,它是一个利用SASS使其更强大的Add-On。
因为这被称为“预处理”,你不想一直更新你的CSS来反映你的更改,而COMPASS的优点就在于此,它有一个“监视”功能,可以检测你SASS文件的更改并自动处理它们。
酷,不是吗!
结论
这只是SASS的冰山一角,如果你想了解更多,可以访问以下链接: