Scss 入門

入門介紹

前言

SCSS(Sassy CSS,時髦的 CSS)是 SASS 中的一種新式語法,SASS 則是一種將css程式化的程式語言,藉由提供程式語言的特性,例如變數($)、巢狀結構、混合(mixin)、函式(function)與繼承(extend)等等,可以預先對 CSS 進行結構化的工作,最後再編譯為網頁上可使用的 CSS 語法。

內容

Scss的寫法跟css很相似,有css的基礎,學scss會比較好入門

首先寫Scss之前我們需要使用的工具有:

vscode:https://code.visualstudio.com/

vscode extension:
vscode live Sass Compiler Setting:
"liveSassCompile.settings.formats":
[
   {
     "format": "expanded",       //格式為不變
     "extensionName": ".css",   //副檔名為.css
     "savePath": "/style",      //存檔位置/(根目錄)style下
   },
   {
       "format": "compressed",      //格式為壓縮
       "extensionName": ".min.css", //副檔名為.min.css
       "savePath": "/dist/style",   //存檔位置/(根目錄)dist/style下
   }
]

建立一個scss 資料夾

scss轉css 編譯按鈕

vscode live Sass Compiler Setting introduction:

https://github.com/ritwickdey/vscode-live-sass-compiler/blob/master/docs/settings.md

準備好了我們就開始介紹scss

基本架構巢狀(nesting)

scss跟css架構很像差別在於scss可使用巢狀的寫法如下圖

SCSS

CSS

變數/計算

使用$開頭+名稱 如下圖

SCSS

CSS

 

繼承(extend)

繼承用法 如下圖

SCSS

CSS

如果要省略來源的資源可在來源前面加上% 如下圖

SCSS

CSS

function(方法)

跟其他程式語言一樣都可以帶參數進去 如下用法

SCSS

$basefontsize:2;
$baselineheight:1.2;
@function fontsize($sizemultiple:1)
{
   @if $sizemultiple<0
   {
       $sizemultiple:1;
   }
   @return 14px+round($sizemultiple*$basefontsize);
}
@function lineheight($lineheightmultiple:1)
{

    @return $lineheightmultiple*$baselineheight;
}
header
{
    font-size: fontsize(2);
    line-height: lineheight(fontsize(2));
    >h1{

        font-size: fontsize(3);
        line-height: lineheight(fontsize(3));
    }
    >h2{

        font-size: fontsize(4);
        line-height:lineheight(fontsize(4));
    }
}

CSS

header {
  font-size: 18px;
  line-height: 21.6px;
}

header > h1 {
  font-size: 20px;
  line-height: 24px;
}

header > h2 {
  font-size: 22px;
  line-height: 26.4px;
}

mixin(混合)

可使用function和exthend兩種功能 如下

SCSS

$basefontsize:2;
$baselineheight:1.2;
@function fontsize($sizemultiple:1)
{
   @if $sizemultiple<0
   {
       $sizemultiple:1;
   }
   @return 14px+round($sizemultiple*$basefontsize);
}
@function lineheight($lineheightmultiple:1)
{

    @return $lineheightmultiple*$baselineheight;
}
@mixin font($fontsize:1,$lineheight:auto)
{
    $size:fontsize($fontsize);
    $line_height:lineheight($size);
    @if$lineheight==auto or $line_height>$lineheight
    {
        $lineheight:$line_height;
    }
    font-size: $size;
    line-height: $lineheight;


}
header
{
    @include font(2);
    >h1{
        @include font(3);
    }
    >h2{
        @include font(4);
    }
}

CSS

header {
  font-size: 18px;
  line-height: 21.6px;
}

header > h1 {
  font-size: 20px;
  line-height: 24px;
}

header > h2 {
  font-size: 22px;
  line-height: 26.4px;
}

import(匯入)

 

註解(Comment)

分為兩種

一種是 // 只能在scss裡面看到compiler後 css檔案中不會顯示

第二種是 /* */ 能在scss和compiler的css中顯示(小心註解)

 

結語

scss提供我們可以使用程式化的方式來寫css的樣式,透過程式化語言讓我們可以寫成自己的module,提高自己的工作效率。