Sass:一種CSS預處理器語言

logo-b6e1ef6e.svg

http://sass-lang.com/

Sass是一種CSS預處理器語言,通過編程方式生成CSS代碼。因為可編程,所以操控靈活性自由度高,方便實現一些直接編寫CSS代碼較困難的代碼。
同時,因為Sass是生成CSS的語言,所以寫出來的Sass文件是不能直接用的,必須經過編譯器編譯成CSS文件才能使用。

Sass有什么好處?

Sass的主要特性如下:變量、嵌套、導入、混合、繼承、運算、函數。這些特性為編寫CSS加入編程控制的能力。

如何開始使用Sass

直接使用任何文本或代碼編輯器都可以開始編輯Sass代碼,要將Sass文件轉換為CSS文件,則需使用Sass命令行編譯器或桌面集成編譯軟件。
安裝Sass編譯器
Sass編譯器使用Ruby環境,所以本地安裝使用Sass編譯器之前需要有Ruby環境,Ruby安裝另見...
Ruby環境準備完畢后,使用gem安裝Sass:
gem install sass

Sass語法

先分清sass與scss

Sass使用sass和scss這兩種后綴名以區分不同的語法格式:

  • sass與普通CSS的語法格式區別較大,其不使用花括號和分號。
  • scss接近普通CSS的語法格式,使用與CSS相同的花括號和分號。
    具體要使用哪種格式,

在sass格式中,取消花括號,改為使用二個空格縮進嵌套;取消分號,以行分隔。
以下sass代碼:

#div1width:50pxheight:30px

編譯后為如下css代碼:

#div1{
width:50px;
height:50px;
}

選擇器嵌套

#sample.spanfont-size:12pxfont-weight:bold

屬性嵌套
帶有相同前綴的屬性可進行嵌套

#samplefont:size:12pxweight:bold

變量

$red:#f00
h1color:$red

函數

.div1color:darken($red,10%)background:lighten($red,10%)

表達式

pcolor:$red - #101font-size:$fontsize+10px;

混合
重用代碼
使用@mixin關鍵字定義混合代碼,使用@include使用混合代碼
@mixin后面是定義混合的名字

@mixin border-radius($amount:5px)
-moz-border-radius:$amount
-webkit-border-radius:$amount
border-radius:$amount
h1
@include border-radius(2px)
.speaker
@include border-radius

沒有給出參數,會使用設置的默認值

選擇器繼承
使用@extend后面跟要繼承的選擇器

h1
border:4px solid #f00
.speaker
@extend h1
border-width:2px

轉載于:https://www.cnblogs.com/royalxavier/p/5736669.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395441.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395441.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395441.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python學習(五)列表的簡單操作

#!/usr/bin/env python#_*_coding:utf8_*_# 操作列表# for循環nbaStars [yaoming,kobe,manu,23,the klaw]for nbaStar in nbaStars: print(nbaStar)nbaStars [yaoming,kobe,manu,str(23),the klaw] # 這里有 int 對象,沒有title方法的for nbaStar in nbaStars:…

node seneca_使用Node.js和Seneca編寫國際象棋微服務,第3部分

node senecaFinishing up a three-part series on writing a rules engine with Seneca microservices.完成有關使用Seneca微服務編寫規則引擎的三部分系列文章。 Parts 1 & 2 of this series covered:本系列的第1部分和第2部分涉及: The Seneca microservice…

Android開發畫布銷毀,Android DialogFragment 在頁面銷毀下的使用方式

今天看到了一篇文章,講了DialogFragment的封裝方式(Android:我為何要封裝DialogFragment?),想到當初也為頁面銷毀后DialogFragment的回調方式頭疼了好久,看到了po主的思路,與當初自己想的不太一樣,就整理一下.如何在開發中遇到頁面銷毀的情況在android開…

視覺智能產品發布 阿里云這項世界第一的技術現在人人可用

用手機拍下朋友的相片,軟件會自動識別進行分類并將照片發送給朋友。這不是空想,利用視覺智能對手機相冊進行管理、分類和分享正逐步成為現實。在6月10日舉行的云棲大會上海峰會上,阿里云正式發布了“圖像識別”和“人臉識別”兩款視覺智能服務…

ViewPager中Fragment的重復創建、復用問題

在ViewPager中的Fragment的生命周期 隨著頁面的切換 當前的展示頁相鄰的頁面生命周期一直在變化 一開始 剛進入Activity時候,ViewPager默認初始化好前兩個Fragment(消息和任務) 消息 ->任務 05-09 14:47:39.593 31509-31509/tyh.com.tabl…

使用VB.net建立excel文件

Add the following code snippet on top of Form1.vb Imports Excel Microsoft.Office.Interop.Excel Public Class Form1Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.ClickDim appXL As Excel.Application 聲明一個application對象Dim wbX…

沙盤演練工作坊-產品開發_Google認證的Android助理開發人員:考試演練

沙盤演練工作坊-產品開發by Rohan Taneja由Rohan Taneja Google認證的Android助理開發人員:考試演練 (Google Certified Associate Android Developer: Exam Walkthrough) UPDATE (24th July, 2018)更新(2018年7月24日) The certification exam is available agai…

linux hlist,linux內核V2.6.11學習筆記(2)--list和hlist

這兩個數據結構在內核中隨處可見,不得不拿出來單獨講講.這兩個數據結構都是為了方便內核開發者在使用到類似數據結構的時候不必自行開發(雖然不難),因此它們需要做到足夠的"通用性",也就是說,今天可以用它們做一個存放進程的鏈表,明天同樣可以做一個封裝定時器的鏈表…

14-angular.isDefined

判斷括號內的值是否存在。 格式: angular.isDefined(value); value: 被判斷是否存在的值。 返回值: true/false轉載于:https://www.cnblogs.com/ms-grf/p/6978886.html

實施工程師1分鐘即時演講_我是如何在1年內從時裝模特轉變為軟件工程師的

實施工程師1分鐘即時演講In 2015 I knew almost nothing about coding. Today, I’m a software engineer and a teacher at a code school for kids.在2015年,我對編碼幾乎一無所知。 今天,我是一名軟件工程師,還是一所代碼學校的兒童老師。…

MSSQL分組取后每一組的最新一條記錄

數據庫中二張表,用戶表和獎金記錄表,獎金記錄表中一個用戶有多條信息,有一個生效時間,現在要查詢: 獎金生效時間在三天前,每個用戶取最新一條獎金記錄,且用戶末鎖定 以前用的方法是直接寫在C#代…

android模擬器插件,Android模擬器插件找不到android SDK

首先,克隆項目詹金斯一直輸出后:[android] No Android SDK found; lets install it automatically...[android] Going to install required Android SDK components...[android] Installing the platform-tool,tool SDK component(s)...$ /var/lib/jenki…

讀書筆記--模板與泛型編程

了解隱式接口和編譯期多態 編譯期多態和運行期多態 運行期多態就好比是virtual函數再運行的時候才確定該virtual函數該被綁定為哪個函數,運行的時候才確定函數類型。  編譯期多態就好比是泛型編程和模板編程中,在編譯的時候才確定哪個函數該被調用&…

棧和遞歸的關系 144:Binary Tree Preorder Traversal

前序遍歷:根左右 //用棧來實現非遞歸解法/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:vec…

運行級別

ls -l /usr/lib/system/runlevel*target (查看運行級別)Linux系統有7個運行級別(runlevel)運行級別0:系統停機狀態,系統默認運行級別不能設為0,否則不能正常啟動運行級別1:單用戶工作狀態,roo…

微信sdk swift版_使用Swift 4的iOS版Google Maps SDK終極指南

微信sdk swift版by Dejan Atanasov通過Dejan Atanasov 使用Swift 4的iOS版Google Maps SDK終極指南 (Your ultimate guide to the Google Maps SDK on iOS, using Swift 4) Many iOS apps use Google Maps. This is a very common feature, so I have decided to prepare an u…

精確覆蓋DLX算法模板

代碼 struct DLX {int n,id;int L[maxn],R[maxn],U[maxn],D[maxn];int C[maxn],S[maxn],loc[maxn][2];void init(int nn0) //傳列長{nnn;for(int i0;i<n;i) U[i]D[i]i,L[i]i-1,R[i]i1;L[0]n; R[n]0;idn;memset(S,0,sizeof(S));}void AddRow(int x,int col,int A[]) //傳入參…

android 代碼布局設置wrap_content,android ScrollView布局(wrap_content,最大大小)

我最后編寫了自己的類,擴展了ScrollView既然你問……這是代碼.可能不是最干凈但它做我想要的.請注意,它期望在創建視圖時設置layout_weight,并且不應在父LinearLayout中設置weigthSum,否則你會得到有趣的東西(因為這個的權重從原始值變為0,具體取決于大小ScrollView的內容)首先…

ABAP數據類型

數據類型表&#xff1a; 類型縮寫 類型 默認長度 允許長度 初始值 描述 C 文本型 1 Space 字符串數據,如Program D 日期型 8 8 00000000 日期數據,格式為YYYYMMDD F 浮點型 8 8 0 浮點數 I 整型 4 10 0 帶正負符號的整數 N 數值型 1 31 00……

cocos2d-x C++ 原始工程引擎運行機制解析

新建一個工程&#xff0c;相信感興趣的同學都想知道cocos引擎都是如何運行的 想知道是如何運行的&#xff0c;看懂四個文件即可 話不多說&#xff0c;上代碼&#xff1a; 1、首先解釋 AppDelegate.h 1 #ifndef _APP_DELEGATE_H_2 #define _APP_DELEGATE_H_3 4 #include "…