Sass (Syntactically Awesome Stylesheets) 是一种动态样式语言,Sass 语法属于缩排语法,比 css 比多出好些功能 (如变量、嵌套、运算,混入 (Mixin)、继承、颜色处理,函数等),更容易阅读。
Sass 的缩排语法,对于写惯 css 前端的 web 开发者来说很不直观,也不能将 css 代码加入到 Sass 里面,因此 Sass 语法进行了改良,Sass 3 就变成了 Scss (Sassy CSS)。SCSS (Sassy CSS) 是 CSS 语法的扩展。这意味着每一个有效的 CSS 也是一个有效的 SCSS 语句,与原来的语法兼容,只是用 {} 取代了原来的缩进。
Less 也是一种动态样式语言。对 CSS 赋予了动态语言的特性,如变量,继承,运算, 函数. Less 既可以在客户端上运行 (支持 IE 6+, Webkit, Firefox),也可在服务端运行 (借助 Node.js)。
Sass 与 Less 区别
使用:
Less: https://less.bootcss.com/usage/
Sass: https://www.sass.hk/docs/
Sass 有工具库 Compass, 简单说,Sass 和 Compass 的关系类似于像 Javascript 和 jQuery 的关系,Compass 在 Sass 的基础上,封装了一系列有用的模块和模板,补充强化了 Sass 的功能。
Less 有 UI 组件库 Bootstrap,Bootstrap 是 web 前端开发中一个比较有名的前端 UI 组件库,Bootstrap 的样式文件部分源码就是采用 Less 语法编写。
Sass 使用 $,而 Less 使用 @。
// Sass
$lightColor:#baf;
// Less
@lightColor:#baf;
Less 无输出格式,Sass 可以使用特定的输出格式
nested:嵌套缩进的 css 代码
expanded:展开的多行 css 代码
compact:简洁格式的 css 代码
compressed:压缩后的 css 代码
在执行监测 (编译) 命令时,可以指定输出格式为 nested:
sass --watch styles.scss:styles.css --style nested
nested 格式下,输出的 CSS 代码:
div {
padding: 20px;
margin: 20px; }
.one {
background: red; }
.two {
background: yellow; }
nested 是默认格式,可以不指定。
展开格式看起来像开发人员手写的格式。
要将 CSS 输出设置为展开格式,可以使用如下命令:
sass --watch styles.scss:styles.css --style expanded
该格式下,输出的 CSS 代码:
div {
padding: 20px;
margin: 20px;
}
.one {
background: red;
}
.two {
background: yellow;
}
.three {
background: #ff8000;
}
紧凑格式占用的空间要小得多,每个 CSS 选择符定义只占用一行。
要将 CSS 输出设置为紧凑格式,可以使用如下命令:
sass --watch styles.scss:styles.css --style compact
该格式下,输出的 CSS 代码:
div { padding: 20px; margin: 20px; }
.one { background: red; }
.two { background: yellow; }
.three { background: #ff8000; }
压缩格式占用尽可能少的空间,选择符定义不换行,文件最小,一般用于生产版本。
要将 CSS 输出设置为压缩格式,可以使用如下命令:
sass --watch styles.scss:styles.css --style compressed
该格式下,输出的 CSS 代码:
div{padding:20px;margin:20px}.one{background:red}.two{background:ye..........
引入外部 CSS 文件
scss 引用的外部文件命名必须以_开头,如下例所示:
其中_test1.scss 文件名如果以下划线开头的话,Sass 会认为该文件是一个引用文件,不会将其编译为 css 文件。
Sass
/*声明一个Mixin叫作“error”*/
@mixin error($borderWidth:2px){
border:$borderWidth solid #f00;
color: #f00;
}
/*调用error Mixins*/
.generic-error {
@include error();/*直接调用error mixins*/
}
/*声明一个Mixin叫作“error”*/
.error(@borderWidth:2px){
border:@borderWidth solid #f00;
color: #f00;
}
/*调用error Mixins*/
.generic-error {
.error();/*直接调用error mixins*/
}
sass的继承:@extend
.block {
margin: 10px 5px;
padding: 2px;
}
p {
@extend .block;/*继承.block选择器下所有样式*/
border: 1px solid #eee;
}
less的继承:类似于mixins .block
.block {
margin: 10px 5px;
padding: 2px;
}
p {
.block;/*继承.block选择器下所有样式*/
border: 1px solid #eee;
}
Less 和 Sass 在语法上有些共性,比如下面这些:
1、混入 (Mixins)——class 中的 class;
2、参数混入 —— 可以传递参数的 class,就像函数一样;
3、嵌套规则 ——Class 中嵌套 class,从而减少重复的代码;
4、运算 ——CSS 中用上数学;
5、颜色功能 —— 可以编辑颜色;
6、名字空间 (namespace)—— 分组样式,从而可以被调用;
7、作用域 —— 局部修改样式;
8、JavaScript 赋值 —— 在 CSS 中使用 JavaScript 表达式赋值。
1、Sass 在市面上有一些成熟的框架,比如说 Compass,而且有很多框架也在使用 Sass,比如说 Foundation。
2、就国外讨论的热度来说,Sass 绝对优于 LESS。
3、就学习教程来说,Sass 的教程要优于 LESS。在国内 LESS 集中的教程是 LESS 中文官网,而 Sass 的中文教程,慢慢在国内也较为普遍。
4、Sass 也是成熟的 CSS 预处理器之一,而且有一个稳定,强大的团队在维护。
5、同时还有 Scss 对 sass 语法进行了改良,Sass 3 就变成了 Scss (sassy css)。与原来的语法兼容,只是用 {} 取代了原来的缩进。
6、bootstrap(Web 框架)最新推出的版本 4,使用的就是 Sass。
源码附件已经打包好上传到百度云了,大家自行下载即可~
链接: https://pan.baidu.com/s/14G-bpVthImHD4eosZUNSFA?pwd=yu27
提取码: yu27
百度云链接不稳定,随时可能会失效,大家抓紧保存哈。
如果百度云链接失效了的话,请留言告诉我,我看到后会及时更新~
#开源地址
码云地址:
https://gitee.com/ZhongBangKeJi/crmeb_java
Github 地址:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有