Less】sass和scss区别?

2020-12-13 21:51发布

18条回答
嘿呦嘿呦拔萝卜
2楼 · 2020-12-14 09:31

Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,语法跟css一样(但多了些功能),比css好写,而且更易阅读。Sass语法类似与容Haml,属于缩排语法(makeup),用意就是为了快速写Html和Css。


随便来看看
3楼 · 2020-12-14 09:38

文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名

语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。


皮卡皮卡-李
4楼 · 2020-12-14 10:17
  • Sass,一种缩进语法

  • SCSS,一种 CSS-like 语法


茄子酱
5楼 · 2020-12-14 10:30

sass和scss区别:1、文件扩展名不同,sass是以“.sass”后缀为扩展名,而SCSS是以“.scss”后缀为扩展名。2、语法不同,sass是以严格的缩进式语法规则来书写,而scss的语法与css语法非常相似。

简言之可以理解scss是sass的一个升级版本,完全兼容sass之前的功能,又有了些新增能力。语法形式上有些许不同,最主要的就是sass是靠缩进表示嵌套关系,scss是花括号。

Sass 和 SCSS 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点:

  • 文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名

  • 语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。


敦敦宁
7楼 · 2020-12-14 10:44

当我们说起 Sass ,我们经常指的是两种事物:一种 css 预处理器和一种语言。我们经常这样说,“我们正在使用 Sass”,或者 “这是一个 Sass mixin”。同时,Sass (预处理器)有两种不同的语法:

  • Sass,一种缩进语法

  • SCSS,一种 CSS-like 语法

历史

最开始,Sass 是Haml的一部分,Haml 是一种预处理器,由 Ruby 开发者设计和开发。因为这样,Sass 使用类似 Ruby的语法,没有花括号,没有分号,具有严格的缩进,就像这样:

// Variable
!primary-color= hotpink

// Mixin
=border-radius(!radius)
    -webkit-border-radius= !radius
    -moz-border-radius= !radius
    border-radius= !radius

.my-element
    color= !primary-color
    width= 100%
    overflow= hidden

.my-other-element
    +border-radius(5px)

你可以就看到,这和CSS代码有很大的区别!即使你是一个 Sass(预处理器) 用户,你也会发现这和你正在使用的有很大的差别。变量的标志用 !,而不是$,分配符是=而不是:。非常怪异。

但是在2010年五月之前,Sass 就是这个样子的。2010年5月,官方推出了一个全新的语法,被叫做 SCSS,意思是 Sassy CSS。这个语法带来了对 CSS 友好的语法,试图弥合 Sass 和 CSS 之间的鸿沟。

// Variable
$primary-color: hotpink;

// Mixin
@mixin border-radius($radius) {
    -webkit-border-radius: $radius;
    -moz-border-radius: $radius;
    border-radius: $radius;
}

.my-element {
    color: $primary-color;
    width: 100%;
    overflow: hidden;
}

.my-other-element {
    @include border-radius(5px);
}

SCSS 和 Sass 相比更加贴近 CSS 语法。也就是说,Sass 维护者做了大量的工作,把缩进语法中的!和=换成了 SCSS 中的 $ 和 :。

现在,在开始一个新项目时,你也许疑惑要用哪种语法。让我们来看看两种语法的优劣。

Sass缩进语法的优劣

虽然语法看起来怪异,但是缩进语法有很多有趣的点。首先,它 更短并且更易于书写。没有花括号,没有分号,你完全不需要这些东西。更好的是,你甚至不需要@mixin 或者 @include, 一个字符就足够了:= 和 +。

同时 Sass 通过严格的缩进来强制 clean coding standards。因为一个错误的缩进就会破坏整个.sass文件,这使得整个代码总是clean 和格式良好的。只有一种写 Sass 代码的方式:正确的方式。

但是请注意!缩进在 Sass 中是有意义的。当你缩进了一个元素,这意味这你将它变为了之前元素的子元素。比如:

.element-a
    color: hotpink

    .element-b
        float: left

以上会输出下面的 CSS 代码:

.element-a {
    color: hotpink;
}

.element-a .element-b {
    float: left;
}

将 .element-b 向右一格以为着它变成了 .element-a 的子元素,改变了输出 CSS 代码的结果。所以一定要小心你的代码缩进。

另外,我觉得基于缩进的语法适合于 Ruby/Python 团队,而不适合 PHP/Java 团队。(这是值得商榷的,我也希望听到不同的声音)

SCSS语法的优劣

对于初学者,SCSS 是完全和 CSS 兼容的,这意味着几乎为零的学习曲线。SCSS语法即是:它只是加了一些功能的 CSS。当你和没经验的开发者一起工作时这很重要:他们可以很快开始编码而不需要首先去学习Sass。

此外,SCSS 还是 易于阅读 的,因为它是有语义的,而不是用符号表示。当你读到 @mixin,你就会知道这是一个 mixin 声明;当你看到 @include ,你就是在引用一个 mixin。他并没有用任何缩写,当你大声读出来时所有的都很明了。

还有,现在几乎所有 Sass 的工具,插件和 demo 都是基于 SCSS语法来开发的。随着时间过去,SCSS 会变成大家首选的选择。比如,你现在很难找到一个 Sass 缩进语法的高亮插件,通常都只有 SCSS 的可以用。


小小李兆佳
8楼 · 2020-12-14 11:05

SCSS 语法使用 .scss 文件扩展名。除了极少部分的例外, 它是 CSS 的超集,也就是说 所有有效的 CSS 也同样都是有效的 SCSS 。 由于其与 CSS 的相似性,它是最容易上手的语法, 也是最流行的语法。

三岁奶猫
9楼 · 2020-12-14 11:18

sass语法类似于rubby,它没有括号的用法,没有严格的缩进,没有分号;变量符号是“!”而不是“$”,赋值符号是“=”而不是“:”。

less语法类似于CSS,需要使用大括号,使用分号;变量符号是“$”,赋值符号是“:”。


相关问题推荐

  • 什么是SassLess 2020-12-13 21:49
    回答 7

    简而言之,Sass是一个CSS预处理器,它将特殊功能(如变量,嵌套规则和mixins(有时称为语法糖))添加到常规CSS中。目的是使编码过程更简单,更有效。让我们更详细地探讨一下。什么是CSS预处理器?CSS预处理器是一种脚本语言,它通过允许开发人员用一种语言编...

  • 回答 2

    less是一个预编译的css语言,赋予了写css的逻辑,有类似js的变量,循环,判断,函数等情况,使用起来开发效率高,不足的地方就是浏览器无法直接识别,需要转换为css后使用,有很多可以转换的办法:考拉软件,在线转换,还有开发中最常用的webpack打包...

没有解决我的问题,去提问