1. 程式人生 > >sass用法總結

sass用法總結

你可以用它開發網頁樣式,但是沒法用它程式設計。也就是說,CSS基本上是設計師的工具,不是程式設計師的工具。在程式設計師眼裡,CSS是一件很麻煩的東西。它沒有變數,也沒有條件語句,只是一行行單純的描述,寫起來相當費事。

很自然地,有人就開始為CSS加入程式設計元素,這被叫做”CSS前處理器”(css preprocessor)。它的基本思想是,用一種專門的程式語言,進行網頁樣式設計,然後再編譯成正常的CSS檔案。

一、什麼是SASS
SASS是一種CSS的開發工具,提供了許多便利的寫法,大大節省了設計者的時間,使得CSS的開發,變得簡單和可維護。
二、安裝和使用
1.安裝
SASS是Ruby語言寫的,但是兩者的語法沒有關係。不懂Ruby,照樣使用。只是必須先安裝Ruby,然後再安裝SASS。
2.使用


SASS檔案就是普通的文字檔案,裡面可以直接使用CSS語法。檔案字尾名是.scss,意思為Sassy CSS。
SASS提供四個編譯風格的選項:

nested:巢狀縮排的css程式碼,它是預設值。
expanded:沒有縮排的、擴充套件的css程式碼。
compact:簡潔格式的css程式碼。
compressed:壓縮後的css程式碼。

生產環境當中,一般使用最後一個選項。
你也可以讓SASS監聽某個檔案或目錄,一旦原始檔有變動,就自動生成編譯後的版本。

三、基本用法
1.變數
SASS允許使用變數,所有變數以$開頭

$blue : #1875e7; 
  div {
   color 
: $blue
;   }

如果變數需要鑲嵌在字串之中,就必須需要寫在#{}之中。

$side : left;
  .rounded {
    border-#{$side}-radius: 5px;
  }

2.計算功能
SASS允許在程式碼中使用算式:

body {
    margin: (14px/2);
    top: 50px + 100px;
    right: $var * 10%;
  }

3.巢狀

div h1 {
    color : red;
  }

屬性也可以巢狀,比如border-color屬性,可以寫成:

 p {
    border: {
      color: red
;     }
  }

在巢狀的程式碼塊內,可以使用&引用父元素。比如a:hover偽類,可以寫成:

a {
    &:hover { color: #ffb3ff; }
  }

註釋
SASS共有兩種註釋風格。
標準的CSS註釋 /* comment */ ,會保留到編譯後的檔案。
單行註釋 // comment,只保留在SASS原始檔中,編譯後被省略。

四、程式碼的重用
1.繼承
SASS允許一個選擇器,繼承另一個選擇器。比如,現有class1,class2要繼承class1,就要使用@extend命令。

.class2 {
    @extend .class1;
    font-size:120%;
  }

2.Mixin
Mixin有點像C語言的巨集(macro),是可以重用的程式碼塊。
使用@mixin命令,定義一個程式碼塊。
使用@include命令,呼叫這個mixin。

@mixin left {
    float: left;
    margin-left: 10px;
  }

div {
    @include left;
  }

mixin的強大之處,在於可以指定引數和預設值。

@mixin left($value: 10px) {
    float: left;
    margin-right: $value;
  }

使用的時候,根據需要加入引數:

div {
    @include left(20px);
  }

下面是一個mixin的例項,用來生成瀏覽器字首。

@mixin rounded($vert, $horz, $radius: 10px) {
    border-#{$vert}-#{$horz}-radius: $radius;
    -moz-border-radius-#{$vert}#{$horz}: $radius;
    -webkit-border-#{$vert}-#{$horz}-radius: $radius;
  }

使用的時候,可以像下面這樣呼叫:

#navbar li { @include rounded(top, left); }
#footer { @include rounded(top, left, 5px); }

3.顏色函式
SASS提供了一些內建的顏色函式,以便生成系列顏色。

lighten(#cc3, 10%) // #d6d65c
  darken(#cc3, 10%) // #a3a329
  grayscale(#cc3) // #808080
  complement(#cc3) // #33c

4.插入檔案
@import命令,用來插入外部檔案。

@import "path/filename.scss";

如果插入的是.css檔案,則等同於css的import命令。

@import "foo.css";

五、高階用法
1.條件語句
@if可以用來判斷:

p {
    @if 1 + 1 == 2 { border: 1px solid; }
    @if 5 < 3 { border: 2px dotted; }
  }

配套的還有@else命令:

@if lightness($color) > 30% {
    background-color: #000;
  } @else {
    background-color: #fff;
  }

2.迴圈語句
SASS支援for迴圈:

@for $i from 1 to 10 {
    .border-#{$i} {
      border: #{$i}px solid blue;
    }
  }

也支援while迴圈:

$i: 6;

  @while $i > 0 {
    .item-#{$i} { width: 2em * $i; }
    $i: $i - 2;
  }

3.自定義函式
SASS允許使用者編寫自己的函式。

@function double($n) {
    @return $n * 2;
  }

  #sidebar {
    width: double(5px);
  }

相關推薦

sass用法總結

你可以用它開發網頁樣式,但是沒法用它程式設計。也就是說,CSS基本上是設計師的工具,不是程式設計師的工具。在程式設計師眼裡,CSS是一件很麻煩的東西。它沒有變數,也沒有條件語句,只是一行行單純的描述,寫起來相當費事。 很自然地,有人就開始為CSS加入程式設計元

git branch用法總結

如果 命名 參數 war blank org 2.6 重命名 scm Git branch git branch 不帶參數:列出本地已經存在的分支,並且在當前分支的前面加“*”號標記,例如: #git branch* master

numpy中一些常用函數的用法總結

num matrix 空白 記錄 維數 補充 結果 創建 array 先簡單記錄一下,後續補充詳細的例子 1. strip()函數 s.strip(rm):s為字符串,rm為要刪除的字符序列 只能刪除開頭或是結尾的字符或者字符串。不能刪除中間的字符或是字符串 當rm為空

數組去重,call、apply、bind之間的區別,this用法總結

步驟 -- 之間 undefined 定義 ply clas turn 需要 一、數組去重,直接寫到Array原型鏈上。 1 //該方法只能去除相同的數字 不會去判斷24和‘24‘是不同的 所有數字和字符串數字是相同是重復的 2 Array.prototype

JavaSE(一) IO類層次關系和各種IO流的用法總結

思想 單位 out 9.png 什麽 輸入流 謝謝 混亂 體系       今天把IO流的這一知點進行一下總結,因為在之前使用io流的時候,就只知道幾個重點常用的IO類,比如FileInputStream,BufferedInputStream(緩沖流)等等,但是不知道它處

netty用法總結

ram sed 解碼 coder fff ade med 長度 bte /**decoder和encoder,如果不需要解析,就使用系統的 * ch.pipeline().addLast(new StringDecoder()); * ch.pipeline().add

delphi CxGrid用法總結(63問)

重復 註釋 ccid nvi while ren 數據顯示 ray 序號 1. 去掉cxGrid中臺頭的Box 解決:在tableview1的optionsview的groupbybox=false; **********************************

Oracle中Merge into用法總結 (轉載)

字符 存在 sin 刪除 ron mic 但是 多個 前段時間 Oracle中Merge into用法總結 (出處:http://www.cnblogs.com/dongsheng/p/4384754.html) 起因:   前段時間,因為涉及到一張表的大數據操作,要同時

Java中static關鍵字用法總結

副本 大括號 跟著 rac clas main 靜態成員變量 abstract 全局變量 1. 靜態方法 通常,在一個類中定義一個方法為static,那就是說,無需本類的對象即可調用此方法 聲明為static的方法有以下幾條限制: · 它們僅能調用其他的sta

c/c++中const用法總結

沒有 pan 分配 值類型 變量初始化 _id 多少 部分 參數 1、修飾常量時:   const int temp1; //temp1為常量,不可變   int const temp2; //temp2為常量,不可變 2、修飾指針時:   主要看const在*的前後,

SVN switch 用法總結

完全 如果 jpg 進入 空間 簡單 src 控制 用法總結 一直知道SVN有個switch命令,但是對它的介紹教程卻很少,大多是生硬的svn幫助文檔裏的文字,從而一直不怎麽會用。今天看了這篇文章,突覺豁然開朗,整理下來以備查閱。 使用SVN,自然是需要與別人合作開發才能體

Java中instanceof關鍵字的用法總結

animal copy false 運算 erl 一個 strong 以及 繼承 instanceof是Java的一個二元操作符,和==,>,<是同一類東東。由於它是由字母組成的,所以也是Java的保留關鍵字。它的作用是測試它左邊的對象是否是它右邊的類的實例,

IrisSkin2.dll用法總結——WinForm窗體換膚總結

c/c++今天使用IrisSkin2.dll來對WinForm窗體換膚,遇到了很多問題。 我是直接用VS2010建的一個工程然後引用該dll文件,結果調試的時候出現了錯誤,錯誤信息如下:錯誤 1 未能找到類型或命名空間名稱“Sunisoft”(是否缺少 using 指令或程序集引用?) 後來看了別人寫的一個軟

C/C++:static用法總結

.sh pre 值類型 定義和使用 靜態 public out pan -1 前言:static是C/C++中一個很重要的關鍵字,最近閱讀了很多博客和資料,遂在此對自己的學習筆記進行簡單的總結並發表在這裏 一、C語言中的static ? 靜態全局變量:在全局變量之前加

Java習慣用法總結

保持 lock 學習 util catch %20 bject 負數 rac 在Java編程中,有些知識 並不能僅通過語言規範或者標準API文檔就能學到的。在本文中,我會盡量收集一些最常用的習慣用法,特別是很難猜到的用法。(Joshua Bloch的《Effective J

Android中Calendar類的用法總結

jsb ews 寫法 需要 key data- minute bar 來講 Calendar是Android開發中需要獲取時間時必不可少的一個工具類,通過這個類可以獲得的時間信息還是很豐富的,下面做一個總結,以後使用的時候就不用總是去翻書或者查資料了。 在獲取時間之前要先獲

Qt學習:QLineEdit的用法總結

window 軟件 編程 計算機 qt 在使用Qt編寫軟件時,QLineEdit這個部件經常會被用到,大部分用在登錄界面的輸入框,所以這個部件非常的重要.常用成員函數: 1.void setClearButtonEnabled(bool); //是否設置一個清空按鈕. 點擊這個清空按鈕後,

Spring常用註解用法總結

ams 依賴 對象 strong 設置 osi puts 渲染 多個 轉自http://www.cnblogs.com/leskang/p/5445698.html 1、@Controller 在SpringMVC 中,控制器Controller 負責處理由Dispatch

assert()函數用法總結

abort blog archive 表達 buffers 緩沖 log ... 出錯 cited from: http://www.cnblogs.com/ggzss/archive/2011/08/18/2145017.html assert宏的原型定義在<a

context.getResources()用法總結

單位 圖片解碼 red 總結 獲取 返回 bitmap 數據 fig context.getResources()用法總結 1、context.getResources().getConfiguration().orientation;//獲取屏幕方向int類型,1:p