less和sass有什麼區別?
1.背景介紹
前處理器:
CSS前處理器是一種語言,用來為CSS增加一些程式設計的的特性,無需考慮瀏覽器的相容性問題,例如你可以在CSS中使用變數、簡單的程式邏輯、函式等等在程式語言中的一些基本技巧,可以讓你的CSS更見簡潔,適應性更強,程式碼更直觀等諸多好處。
我們最常用的前處理器有scss和less。
2.知識剖析
sass背景
Sass誕生於2007年,最早也是最成熟的一款CSS前處理器語言。
現在的Sass已經有了兩套語法規則:一個依舊是用縮排作為分隔符來區分程式碼塊的;另一套規則和CSS一樣採用了大括號({})作為分隔符。後一種語法規則又名SCSS,在Sass3之後的版本都支援這種語法規則。目前我們所稱的sass一般指語法更為嚴格和友好的scss。
less背景
2009年開源的一個專案,受Sass的影響較大,使用CSS的語法,在很多流行的框架和工具中已經能經常看到LESS的身影了(例如Twitter的Bootstrap框架就使用了LESS)。
當時SASS和現在的scss不同,採用了縮排作為分隔符來區分程式碼塊,而不是CSS中廣為使用的大括號({})。為了讓CSS現有的使用者使用起來更加方便,Alexis開發了LESS並提供了類似CSS的書寫功能。
3.常見問題
scss和less有什麼不同
我們知道scss和less相似,它們都可以使用變數、常量、巢狀、混入、繼承等功能,可以更有效有彈性的寫出CSS,下面我們看看它們之間的差異。
4.解決方案
A安裝
Sass:
sass基於Ruby語言開發而成,
因此安裝sass前需要安裝Ruby。
Less:
less直接link引入“.less”檔案,再引入less.js檔案即可。
B變數
sass是以$開頭定義的變數,如:
$mainColor: #963;
less是以@開頭定義的變數,如:
@mainColor: #963;
C作用域
sass沒有區域性變數,滿足就近原則。
less中{}內定義的變數為區域性變數。
作用域和其他程式語言中的作用域非常的相同,
他首先會查詢區域性定義的變數,如果沒有找到,
會像冒泡一樣,一級一級往下查詢,直到根為止,
D混合(Mixins)
Sass的混合:
sass樣式中宣告Mixins時需要使用“@mixin”命令,
在選擇器呼叫定義好的Mixins需要使用“@include”。
/*宣告一個Mixin叫作“abc”*/
@mixin abc($bg-c:red){
width: 100px;
height:100px;
background-color: $bg-c;
}
/*呼叫abc Mixins*/
.a{
@include abc();
}
.b{
/*將引數$bg-c的值重定義為blue*/
@include abc(blue);
}
less的混合:
在less中,混合是指將定義好的“ClassA”中引入另一個已經定義的“Class”,就像在當前的“Class”中增加一個屬性一樣。
/*宣告一個Mixin叫作“abc”*/
.abc($bg-c:red){
width: 100px;
height:100px;
background-color: $bg-c;
}
/*呼叫abc Mixins*/
.a{
.abc();
}
.b{
/*將引數$bg-c的值重定義為blue*/
.abc(blue);
}
兩者編譯出的值相同:
.a{
width: 100px;
height:100px;
background-color: red;
}
.b{
width: 100px;
height: 100px;
background-color: blue;
}
E巢狀
兩則寫法相同:
section {
margin:10px;
nav {
height:25px;
a {
color:#0982c1;
&:hover {
text-decoration:underline;
}
}
}
}
F繼承
/*sass的繼承:@extend*/
.block {
margin: 10px 5px;
padding: 2px;
}
p {
@extend .block;/*繼承.block選擇器下所有樣式*/
border: 1px solid #eee;
}
ul,ol {
@extend .block; /*繼承.block選擇器下所有樣式*/
color: #333;
text-transform: uppercase;
}
/*less的繼承:類似於mixins*/
.block {
margin: 10px 5px;
padding: 2px;
}
p {
.block;/*繼承.block選擇器下所有樣式*/
border: 1px solid #eee;
}
ul,ol {
.block; /*繼承.block選擇器下所有樣式*/
color: #333;
text-transform: uppercase;
}
編譯後:
//sass
.block,p,ul,ol {
margin: 10px 5px;
padding:2px;
}
p {
border: 1px solid #eee
}
ul,ol {
color:#333;
text-transform:uppercase;
}
//less
.block {
margin: 10px 5px;
padding:2px;
}
p {
margin: 10px 5px;
padding:2px;
border: 1px solid #eee
}
ul,ol {
margin: 10px 5px;
padding:2px;
color:#333;
text-transform:uppercase;
}
G高階語言
sass對條件語句和迴圈語句的處理要比less語言強大。具有真正的語言處理能力。
6.擴充套件思考
A還有什麼好的前處理器語言?
stylus,2010年產生於Node.js社群,可同時使用縮排和括號寫法,寫法非常靈活,擴充套件性與scss相當,高於less,但由於規定過少,可能容易讓人混亂。
B我該如何選擇css前處理器?
1,Sass誕生是最早也是最成熟的CSS前處理器,有Ruby社群和Compass支援;Stylus早期服務於Node JS專案,在該社群得到一定支持者;LESS出現於2009年,支持者遠超於Ruby和Node JS社群;
2,sass和stylus擴充套件性更強,sass廣泛使用於國外,less在國內受眾最多。stylus是後起之秀。
3,Sass和LESS語法較為嚴謹、嚴密,而Stylus語法相對散漫,其中LESS學習起來更快一些,因為他更像CSS的標準;
4,sass和LESS相互影響較大,其中Sass受LESS影響,已經進化到了全面相容CSS的SCSS;
5,Sass和LESS都有第三方工具提供轉譯,特別是Sass和Compass是絕配;
7.參考文獻
相關推薦
less和sass有什麼區別?
1.背景介紹 前處理器: CSS前處理器是一種語言,用來為CSS增加一些程式設計的的特性,無需考慮瀏覽器的相容性問題,例如你可以在CSS中使用變數、簡單的程式邏輯、函式等等在程式語言中的一些基本技巧,可以讓你的CSS更見簡潔,適應性更強,程式碼更直觀等諸多好處。 我
less和sass的區別
本文來自thoughtworks Jing Ren ,感謝Jing Ren的翻譯(中文版,英文原文)。本人覺得很慚愧,有點竊取的行為,所以我必須再次宣告來自我們可愛的Jing Ren,並再次感謝她的不辭辛苦。 如果你還在為web前段css設計,維護,開發困擾的,我覺得你可以嘗試下LESS或者Sas
關於less和sass的區別
其實less和sass的語法非常地相似。他們不同的是他們的實現方式不一樣。less是基於javascript,是在客戶端進行編譯解析的;sass是在伺服器端就進行編譯的。很多人因為less會影響客戶端
less和sass的使用區別
首先我們來說一下Less。 【Less中的變數】 1.宣告變數使用 @變數名:變數值; 2.使用變數 @變數名 less中的變數型別: ①數字類 1 10px ②字串:無引號字串 red 和有引號字串"gdak" ③顏色類 red #000000 rgb() ④值列表型別
電商設計師是做什麽的?和美工有區別嗎?
mar com 設計 瀏覽器 blog 差異 不同 針對 watermark 說到電商設計師,很多人都把它和美工混為一談。而且大多數人聽到電商設計的第一反應就是淘寶美工,小編想說,這個誤會大了~其實,兩者是有區別的。 那麽,什麽是電商設計?電商設計師是做什麽的?和美工有什麽
向指定 URL 傳送POST方法的請求(狀態碼200和其他有區別)
public static String sendPost(String url, String param) { OutputStreamWriter out = null; BufferedReader in = null; String result = ""; t
SQL和NOSQL有區別嗎?
在大資料高速發展的今天,資料量在不斷的增加,傳統的資料庫可能不能滿足人們的需求了,這個時候新霸哥注意到了NOSQL出現了可以解決這個問題。我們知道sql資料庫可以儲存資料和處理資料,但是NOSQL最大的一個優勢就是在大資料這方面,能夠深度處理大資料,分析資料,從大量的資料中
Bootstrap CSS 編碼規範之Less 和 Sass 中的巢狀
Less 和 Sass 中的巢狀避免不必要的巢狀。這是因為雖然你可以使用巢狀,但是並不意味著應該使用巢狀。只有在必須將樣式限制在父元素內(也就是後代選擇器),並且存在多個需要巢狀的元素的時候,才使用巢狀。// Without nesting.table > thead
python中繼承和派生有區別嗎?
繼承是面向物件程式語言中的一個重要機制,通過繼承可以在一個一般的類的基礎上建立新的類,被繼承的類稱為基類,在基類的基礎上建立的新類成為派生類。 類的繼承和派生其實是一回事,子類繼承了父類,父類派生了子
for迴圈中第三個條件i++和++i有區別嗎?
看了jdk1.8原始碼裡面寫了個for迴圈,但是我看到第三個條件竟然是++i,這個和我們平時寫的for迴圈不一樣啊。我們用的時候都是i++,不是++i,難道有什麼高明的地方?好奇之下,就做了簡單的測試
Sass、LESS 和 Stylus區別總結
CSS 前處理器技術已經非常的成熟了,而且也湧現出了越來越多的 CSS 的前處理器框架。本文便總結下 Sass、Less CSS、Stylus這三個前處理器的區別和各自的基本語法。 1.什麼是 CSS 前處理器 CSS 前處理器是一種語言用來為 CSS 增加一些程式設計的的
scss和sass,less區別?
scss和sass,less區別 1.編譯環境不一樣。Sass的安裝需要Ruby環境,是在服務端處理的,而Less是需要引入less.js來處理Less程式碼輸出css到瀏覽器,也可以在開發環節使用Less,然後編譯成css檔案,直接放到專案中。 2
xftp和xshell有什麽區別
.sh bsp 進行 等等 startup 協議 傳輸文件 一個 strong XshellXshell是一個用於MS Windows平臺的強大的SSH,TELNET,和RLOGIN終端仿真軟件。它使得用戶能輕松和安全地從Windows PC上訪問Unix/Linux主機。
inux系統用戶名和全名有什麽區別
說明 創建用戶 請問 b- == linux系統安裝 linux系統 ext pan 問:linux系統安裝完畢,進入系統,創建用戶的時候,要填入用戶名和全名,請問用戶名和全名有什麽區別,登錄的時候,是用戶名還是全名? ===========================
int和Integer有什麽區別?
機制 microsoft val family jdk1 經歷 ont .com () 可參考:http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html 從Java 5開始引入了自動裝箱/拆
同是辦公軟件,wps和office有什麽區別?
文檔 最好的 般的 .com 小青年 spa tar 個人電腦 功能 今天完美小編為大家帶來的是wps和office有什麽區別教程,那麽到底有什麽區別呢?相信很多朋友都模棱兩可,說不出所以然,看看下面的教程,相信你會選擇更適合你的那一款軟件。一起來看看吧! 1、兩者特
View的getMeasuredWidth和getWidth有什麽區別?
strong style super 討論 rri 寬度 out 情況 override getMeasuredWidth 為view的測量寬度。 getWidth為view的最終寬度。 (這裏只討論寬度,高度也是一樣的道理) 那麽它們之間有什麽區別呢? 測量寬度是在v
【轉】Visual C++ 和 C++ 有什麽區別?
業界 流行 編譯器 gtk+ 語言 開發 多種實現 廠商 計算 有位同學問我“Visual C++和C++有什麽區別?”,這的確是初學者會感到困惑的問題,比較常見。除此之外,還有“先學C++好,還是先學Visual C++好?”,都屬於同樣的概念不明的問題,就比
abstract class和interface有什麽區別?
運算符 color erl 沒有 抽象類 final trac 中繼 nal 聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的
HSF和Dubbo有什麽區別
rec string meta unit client 描述 模型 最新 這一 一、 以下摘錄自企業級分布式應用服務EDAS官網段落 RPC服務 提供對Dubbo和HSF兩個RPC框架的支持。阿裏巴巴第一代RPC框架Dubbo是國內第一款成熟的商用級RPC框架,已於20