Sass基礎(chǔ)

在前端開發(fā)中,類似Less,Sass這樣的預(yù)處理器,變得越來越常見,由于CSS發(fā)展的制約,使得CSS開發(fā)時(shí),當(dāng)代碼量越來越大,項(xiàng)目變得難以管理和維護(hù)。
Sass可以讓你使用一些在CSS中沒有的特性,比如變量,nesting,mixins,繼承和其他好的特性,讓你編寫CSS變得更加方便。

所以,學(xué)習(xí)并使用一款CSS預(yù)處理器也漸漸變成一個(gè)前端工程師必不可少的技能。在多個(gè)預(yù)處理器中,我選擇了Sass。

一些基礎(chǔ)

Sass有兩種語法,使用哪一種取決于個(gè)人愛好,只是兩種格式需要對(duì)應(yīng)不同的后綴。

  1. SCSS,本教程使用這個(gè)語法。這是一個(gè)CSS語法的擴(kuò)展,這意味著,在CSS中可以使用的功能,在SCSS中都是同樣的功能。同時(shí),SCSS支持所有CSS hacks和特定瀏覽器語法。詳細(xì)情況在 這里
  2. SASS,這是比較老的語法,使用縮進(jìn)代替了大括號(hào),使得寫起來更加快捷,看起來也更清爽

開始使用

當(dāng)安裝好Sass之后,你可以使用命令 sass --watch app/stylesheets_dirctory

使用變量

你可以使用$來定義變量

$font-stack: Helvetica, sans-serif;

body {
  font: 100% $font-stack;
}

經(jīng)過Sass編譯之后,輸出的文件是這樣的:

body {
  font: 100% Helvetica, sans-serif;
}

這樣的的話,你就可以在整個(gè)項(xiàng)目中共享一些同樣的變量,而不必每次重新定義,當(dāng)需要做更改的時(shí)候,只有改變變量的值,在重新編譯之后,使用這個(gè)變量的地方就自動(dòng)更新為新的值了。

嵌套(Nesting)

在HTML里面,各個(gè)元素是可以嵌套的,而在CSS里,目前還不可以原生支持這樣的功能,Sass就能幫我們實(shí)現(xiàn)。

nav {
  font-size: 1.5em;
  li {
    display: inline-block;
  }
}

經(jīng)過編譯后:

nav {
  font-size: 1.5em;
}
nav li {
  display: inline-block;
}

Import

Sass提供了Import的功能,你可以把Sass寫到多個(gè)文件,然后自由組合他們,然后編譯的時(shí)候,他們會(huì)自動(dòng)合并到單個(gè)文件里。

// _reset.scss

html,
body,
ul,
ol {
   margin: 0;
  padding: 0;
}
// base.scss

@import 'reset';

body {
  font: 100% Helvetica, sans-serif;
  background-color: #efefef;
}

在編譯之后:

html, body, ul, ol {
  margin: 0;
  padding: 0;
}

body {
  font: 100% Helvetica, sans-serif;
  background-color: #efefef;
}

Mixins

當(dāng)前的瀏覽器,有的特性可能需要你寫不同的前綴,比如 -webkit -moz -ms,Mixins提供了一個(gè)快捷的方法使你從寫這些煩人的前綴中解放出來。你可以提供多個(gè)value值來定制自己的Mixin

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

.box { @include border-radius(10px); }

在編譯過后:

.box {
  -webkit-border-radius: 10px;
  -moz-border-radius: 10px;
  -ms-border-radius: 10px;
  border-radius: 10px;
}

擴(kuò)展和繼承

這可能是SASS里最有用的一個(gè)功能,它讓你的CSS擁有了繼承的能力,使用@extend這個(gè)關(guān)鍵字繼承一個(gè)CSS集合,解決了很多不必要的重復(fù)。直接看官方的例子吧:

.message {
  border: 1px solid #ccc;
  padding: 10px;
  color: #333;
}

.success {
  @extend .message;
  border-color: green;
}

.error {
  @extend .message;
  border-color: red;
}

.warning {
  @extend .message;
  border-color: yellow;
}

在編譯之后:

.message, .success, .error, .warning {
  border: 1px solid #cccccc;
  padding: 10px;
  color: #333;
}

.success {
  border-color: green;
}

.error {
  border-color: red;
}

.warning {
  border-color: yellow;
}

運(yùn)算符

Sass擁有數(shù)學(xué)計(jì)算的功能,例如+, -, *, /, %

.container { width: 100%; }


article[role="main"] {
  float: left;
  width: 600px / 960px * 100%;
}

aside[role="complementary"] {
  float: right;
  width: 300px / 960px * 100%;
}

在編譯之后:

.container {
  width: 100%;
}

article[role="main"] {
  float: left;
  width: 62.5%;
}

aside[role="complementary"] {
  float: right;
  width: 31.25%;
}

作者注:這篇文章大部分內(nèi)容來自官方入門指南,需要更多內(nèi)容可以直接看官方文檔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、SCSS 是 Sass 的新語法格式,從外形上來判斷他和 CSS 長(zhǎng)得幾乎是一模一樣,代碼都包裹在一對(duì)大括號(hào)里...
    夜幕小草閱讀 1,808評(píng)論 2 10
  • 一、相關(guān)網(wǎng)站地址 Sass官網(wǎng):http://sass-lang.com/;Sass中文網(wǎng):https://www...
    夏晶晶綠閱讀 986評(píng)論 0 0
  • 本文簡(jiǎn)單的介紹SASS預(yù)處理語言,更多的應(yīng)用請(qǐng)參考官方文檔 一、什么是SASS 二、為什么使用SASS 三、安裝S...
    CharlesDarwin閱讀 544評(píng)論 0 0
  • 江南好,風(fēng)景舊曾諳。 日出江花紅勝火, 春來江...
    姑蘇妮子閱讀 893評(píng)論 4 6
  • 很快
    浣花溪上見卿卿閱讀 183評(píng)論 0 0

友情鏈接更多精彩內(nèi)容