What's the difference between SCSS and Sass?

前端 未结 13 1932
忘掉有多难
忘掉有多难 2020-11-22 14:51

From what I\'ve been reading, Sass is a language that makes CSS more powerful with variable and math support.

What\'s the difference with SCSS? Is it supposed to be

相关标签:
13条回答
  • 2020-11-22 15:04

    From the homepage of the language

    Sass has two syntaxes. The new main syntax (as of Sass 3) is known as “SCSS” (for “Sassy CSS”), and is a superset of CSS3’s syntax. This means that every valid CSS3 stylesheet is valid SCSS as well. SCSS files use the extension .scss.

    The second, older syntax is known as the indented syntax (or just “Sass”). Inspired by Haml’s terseness, it’s intended for people who prefer conciseness over similarity to CSS. Instead of brackets and semicolons, it uses the indentation of lines to specify blocks. Although no longer the primary syntax, the indented syntax will continue to be supported. Files in the indented syntax use the extension .sass.

    SASS is an interpreted language that spits out CSS. The structure of Sass looks like CSS (remotely), but it seems to me that the description is a bit misleading; it's not a replacement for CSS, or an extension. It's an interpreter which spits out CSS in the end, so Sass still has the limitations of normal CSS, but it masks them with simple code.

    0 讨论(0)
  • 2020-11-22 15:05

    I'm one of the developers who helped create Sass.

    The difference is UI. Underneath the textual exterior they are identical. This is why sass and scss files can import each other. Actually, Sass has four syntax parsers: scss, sass, CSS, and less. All of these convert a different syntax into an Abstract Syntax Tree which is further processed into CSS output or even onto one of the other formats via the sass-convert tool.

    Use the syntax you like the best, both are fully supported and you can change between them later if you change your mind.

    0 讨论(0)
  • 2020-11-22 15:13

    Original sass is ruby syntax-like, similar to ruby, jade etc...

    In those syntaxes, we don't use {}, instead we go with white spaces, also no usage of ;...

    In scss syntaxes are more like CSS, but with getting more options like: nesting, declaring, etc, similar to less and other pre-processing CSS ...

    They basically do the same thing, but I put couple of lines of each to see the syntax difference, look at the {}, ;, and spaces:

    SASS:

    $width: 100px
    $color: green
    
    div
      width: $width
      background-color: $color
    

    SCSS:

    $width: 100px;
    $color: green;
    
    div {
      width: $width;
      background-color: $color;
    }
    
    0 讨论(0)
  • 2020-11-22 15:13

    The compact answer:

    SCSS refers to the main syntax supported by the Sass CSS pre-processor.

    • Files ending with .scss represent the standard syntax supported by Sass. SCSS is a superset of CSS.
    • Files ending with .sass represent the "older" syntax supported by Sass originating in the Ruby world.
    0 讨论(0)
  • 2020-11-22 15:14

    Sass was the first one, and the syntax is a bit different. For example, including a mixin:

    Sass: +mixinname()
    Scss: @include mixinname()
    

    Sass ignores curly brackets and semicolons and lay on nesting, which I found more useful.

    0 讨论(0)
  • 2020-11-22 15:16

    Difference between SASS and SCSS article explains the difference in details. Don’t be confused by the SASS and SCSS options, although I also was initially, .scss is Sassy CSS and is the next generation of .sass.

    If that didn’t make sense you can see the difference in code below.

    /* SCSS */
    $blue: #3bbfce;
    $margin: 16px;
    
    .content-navigation {
      border-color: $blue;
      color: darken($blue, 9%);
    }
    
    .border {
      padding: $margin / 2; margin: $margin / 2; border-color: $blue;
    }
    

    In the code above we use ; to separate the declarations. I’ve even added all the declarations for .border onto a single line to illustrate this point further. In contrast, the SASS code below must be on different lines with indentation and there is no use of the ;.

    /* SASS */
    $blue: #3bbfce
    $margin: 16px
    
    .content-navigation
      border-color: $blue
      color: darken($blue, 9%)
    
    .border
      padding: $margin / 2
      margin: $margin / 2
      border-color: $blue
    

    You can see from the CSS below that the SCSS style is a lot more similar to regular CSS than the older SASS approach.

    /* CSS */
    .content-navigation {
      border-color: #3bbfce;
      color: #2b9eab;
    }
    
    .border {
      padding: 8px;
      margin: 8px;
      border-color: #3bbfce;
    }
    

    I think most of the time these days if someone mentions that they are working with Sass they are referring to authoring in .scss rather than the traditional .sass way.

    0 讨论(0)
提交回复
热议问题