CSS預編譯器:Sass(入門),更快的前端開發

来源:http://www.cnblogs.com/mibear/archive/2017/05/13/6850301.html
-Advertisement-
Play Games

Sass 擴展了 CSS3,增加了規則、變數、混入、選擇器、繼承等等特性。Sass 生成良好格式化的 CSS 代碼,易於組織和維護。 SASS是對CSS3(層疊樣式表)的語法的一種擴充,它可以使用巢狀、混入、選擇子繼承等功能,可以更有效有彈性的寫出Stylesheet。Sass最後還是會編譯出合法的 ...


Sass 擴展了 CSS3,增加了規則、變數、混入、選擇器、繼承等等特性。Sass 生成良好格式化的 CSS 代碼,易於組織和維護。

SASS是對CSS3(層疊樣式表)的語法的一種擴充,它可以使用巢狀、混入、選擇子繼承等功能,可以更有效有彈性的寫出Stylesheet。Sass最後還是會編譯出合法的CSS讓瀏覽可以使用,也就是說它本身的語法並不太容易讓瀏覽器識別(雖然它和CSS的語法非常的像,幾乎一樣),因為它不是標準的CSS格式,在它的語法內部可以使用動態變數等,所以它更像一種極簡單的動態語言。   sass 入門 api語法
1.[Sass]常見的編譯錯誤
  在編譯 Sass 代碼時常常會碰到一些錯誤,讓編譯失敗。這樣的錯誤有系統造成的也有人為造成的,但大部分都是人為過失引起編譯失敗。   而最為常見的一個錯誤就是字元編譯引起的。在Sass的編譯的過程中,是不是支持“GBK”編碼的。所以在創建 Sass 文件時,就需要將文件編碼設置為“utf-8”。   另外一個錯誤就是路徑中的中文字元引起的。建議在項目中文件命名或者文件目錄命名不要使用中文字元。而至於人為失誤造成的編譯失敗,在編譯過程中都會有具體的說明,大家可以根據編譯器提供的錯誤信息進行對應的修改。  
2.[Sass]不同樣式風格的輸出方法
  - 嵌套輸出方式 nested - 展開輸出方式 expanded - 緊湊輸出方式 compact - 壓縮輸出方式 compressed  
3.[Sass]聲明變數
 

 

 
4.[Sass]普通變數與預設變數
  全局變數

 

 

預設變數  
5.[Sass]變數的調用
  在 Sass 中聲明瞭變數之後,就可以在需要的地方調用變數。調用變數的方法也非常的簡單。   .btn-primary {
  background-color: $btn-primary-bg;
  color: $btn-primary-color;
  border: 1px solid $btn-primary-border; }  
6.[Sass]局部變數和全局變數
  $color:orange !default; 當在局部範圍(選擇器內、函數內、混合巨集內...)聲明一個已經存在於全局範圍內的變數時,局部變數就成為了全局變數的影子。基本上,局部變數只會在局部範圍內覆蓋全局變數。  
7.[Sass]嵌套-選擇器嵌套
  - 選擇器嵌套 - 屬性嵌套 - 偽類嵌套

 

 
8.[Sass]嵌套-屬性嵌套
  .box {
  border: {
  top: 1px solid red;
  bottom: 1px solid green;
  } }  
9.[Sass]嵌套-偽類嵌套
 

 

 

   
10.[Sass]混合巨集-聲明混合巨集
   

 

 

 

 
11.[Sass]混合巨集-調用混合巨集
  匹配了一個關鍵詞“@include”來調用聲明好的混合巨集        混合巨集的參數--傳一個帶值的參數   .box {
  @include border-radius(50%); }        混合巨集的參數--傳多個參數   @mixin center($width,$height){ @include center(500px,300px);  
12.[Sass]擴展/繼承
  在 Sass 中也具有繼承一說,也是繼承類中的樣式代碼塊。在 Sass 中是通過關鍵詞 “@extend”來繼承已存在的類樣式塊,從而實現代碼的繼承。如下所示:

 

 

   
13.[Sass]占位符 %placeholder
  Sass 中的占位符 %placeholder 功能是一個很強大,很實用的一個功能,這也是我非常喜歡的功能。他可以取代以前 CSS 中的基類造成的代碼冗餘的情形。因為 %placeholder 聲明的代碼,如果不被 @extend 調用的話,不會產生任何代碼。來看一個演示:  

 

 
14.[Sass]混合巨集 VS 繼承 VS 占位符
  個人建議:如果你的代碼塊中涉及到變數,建議使用混合巨集來創建相同的代碼塊。 個人建議:如果你的代碼塊不需要專任何變數參數,而且有一個基類已在文件中存在,那麼建議使用 Sass 的繼承。

 

 
15.[Sass]插值#{}
  當你想設置屬性值的時候你可以使用字元串插入進來。   #{}語法並不是隨處可用,你也不能在 mixin 中調用  

 

 
16.[Sass]註釋
  1、類似 CSS 的註釋方式,使用 ”/* ”開頭,結屬使用 ”*/ ” 2、類似 JavaScript 的註釋方式,使用“//”   兩者區別,前者會在編譯出來的 CSS 顯示,後者在編譯出來的 CSS 中不會顯示,  
17.[Sass]數據類型
 

 

 

         [Sass]字元串  

 

 

               [Sass]值列表    

 

 

 
18.[Sass運算]加法-----------------Sass的基本特性-運算----------
  .box {
  width: 20px + 8in; } 編譯的結果 .box {
  width: 788px; }   不同類型的單位時,編譯也會報錯        [Sass運算]減法   .content {
  width: $full-width -  $sidebar-width; }           [Sass運算]乘法   Sass 中的乘法運算和前面介紹的加法與減法運算還略有不同。雖然他也能夠支持多種單位(比如 em ,px , %),但當一個單位同時聲明兩個值時會有問題。  .box {   width:10px * 2px; }錯誤   .box {
  width: 10px * 2; } 正確            [Sass運算]除法   .box {
  width: (100px / 2);  }   “/”不能單獨用        [Sass運算]數字運算   .box {
  width: ((220px + 720px) - 11 * 20 ) / 12 ;  }            [Sass運算]顏色運算   color: #010203 * 2; color: #010203 + #040506;        [Sass運算]字元運算    

 

 

  註意,如果有引號的字元串被添加了一個沒有引號的字元串 (也就是,帶引號的字元串在 + 符號左側), 結果會是一個有引號的字元串。 同樣的,如果一個沒有引號的字元串被添加了一個有引號的字元串 (沒有引號的字元串在 + 符號左側), 結果將是一個沒有引號的字元串。 例如:            
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 無論是jquery還是zepto,都離不開$,這個符號似乎是萬能的,這篇文章通過zepto源碼來探究的就是$實現的原理。 ...
  • 原文:12 Extremely Useful Hacks for JavaScript 作者:Caio Ribeiro Pereira 翻譯:雁驚寒 ...
  • 1.Vuejs組件 這裡註意一點,組件要先註冊再使用,也就是說 如果反過來會報錯,因為反過來代表先使用了組件的,但是組件卻沒註冊。 webpack報錯後,使用webpack --display-error-details可以排錯 2.指令keep-alive 在看demo的時候看到在vue-rout ...
  • 新公司已經呆了一個多月,目前著手一個數據可視化的項目,數據可視化肯定要用到圖形庫如 、 、 、 等,經決定我的這個項目用阿裡旗下螞蟻金服所開發的 圖表庫。 官方地址:https://antv.alipay.com/g2/doc/index.html Github:https://github.com ...
  • 一、jQuery 提供開發者開發插件的幾種模式 1.$.extend(); //這個方法是綁定在$上面的。可以通過$直接調用 2.$.fn.方法名 //這個方法是綁定在Dom對象上面的可以通過$('').方法名();調用 3.$.widget //通過jQuery UI 部件工廠模式創建。 二、插件 ...
  • 關於CSS3的3D立方體動畫 知識點: 1、每個元素有獨立的坐標系 2、坐標系隨當前元素的改變而發生改變 3、立方體由靜態transform參數構成 4、通過給容器添加動畫使立方體運動 效果圖: ...
  • 前面的話 Nodejs的模塊是基於CommonJS規範實現的,可不可以應用在瀏覽器環境中呢? 第二行math.add(2, 3),在第一行require('math')之後運行,因此必須等math.js載入完成。也就是說,如果載入時間很長,整個應用就會停在那裡等。這對伺服器端不是一個問題,因為所有的 ...
  • 文件層級 index.html <!DOCTYPE html> <html ng-app="nickApp"> <head> <meta charset="UTF-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1, ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...