欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

scss(sass)和less 的相关整理

程序员文章站 2022-03-04 18:53:52
...

1.什么 是scss(sass)/less ?

           Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量、嵌套、运算,混入(Mixin)、继承、颜色处理,函数等),更容易阅读。

Sass的缩排语法,对于写惯css前端的web开发者来说很不直观,也不能将css代码加入到Sass里面,因此sass语法进行了改良,Sass 3就变成了Scss(sassy css)。与原来的语法兼容,只是用{}取代了原来的缩进。所以sass包含scss。scss只是为了更像css 而推行的语法标准。

而 Less也是一种动态样式语言.对CSS赋予了动态语言的特性,如变量,继承,运算, 函数.  Less 既可以在客户端上运行 (支持IE 6+, Webkit, Firefox),也可在服务端运行 (借助 Node.js)。

2.Sass/Scss与Less区别

           1.编译的环境不一样。scss的安装环境需要是Ruby。而less 需要通过less.js来编译less代码输出到浏览器。编译出来的css文件可以直接引入到项目中

            2.变量符不一样 Less是@,而Scss是$,而且变量的作用域也不一样。

Less-作用域
@color: #00c; /* 蓝色 */
#header {
  @color: #c00; /* red */
  border: 1px solid @color; /* 红色边框 */
}

#footer {
  border: 1px solid @color; /* 蓝色边框 */
}

Less-作用域编译后
#header{border:1px solid #cc0000;}
#footer{border:1px solid #0000cc;}

scss-作用域
$color: #00c; /* 蓝色   全局变量*/

#header {

  $color: #c00; /* red  局部变量  全局变量的影子*/
  border: 1px solid $color; /* 红色边框 */
}

#footer {
  border: 1px solid $color; /* 蓝色边框 */
}

Sass-作用域编译后

#header{border:1px solid #c00}
#footer{border:1px solid #c00}

我们可以看出来,less和scss中的变量会随着作用域的变化而不一样。sass的变量作用域有两种,局部变量和全局变量 。

  tips: 和全局变量名字相同的局部变量叫全局变量的影子

            3.输出设置,Less没有输出设置,Sass提供4中输出选项:nested, compact, compressed 和 expanded。

                     

                     nested:嵌套缩进的css代码

                      expanded:展开的多行css代码

                         compact:简洁格式的css代码

                        compressed:压缩后的css代码

4.Sass支持条件语句,可以使用if{}else{},for{}循环等等。而Less不支持。

5. 引用外部CSS文件

scss引用的外部文件命名必须以_开头, 如下例所示:其中_test1.scss、_test2.scss、_test3.scss文件分别设置的h1 h2 h3。文件名如果以下划线_开头的话,Sass会认为该文件是一个引用文件,不会将其编译为css文件.   你不能用sass@import直接导入一个原始的css文件,因为sass会认为你想用css原生的@import。但是,因为sass的语法完全兼容css,所以你可以把原始的css文件改名为.scss后缀,即可直接导入了。

 

总结: less和sass都是css的预编译处理。sass基本上可以称之为是一门编程语言了。Less则相对清晰明了,易于上手,对编译环境要求比较宽松。