CRMEB JAVA知識科普——Scss、Less是什么,如何區別?

CRMEB java版新零售社交電商系統,是一款基于Java + Uni-app 開發的新零售社交電商系統,系統代碼全開源無加密,獨立部署、二開方便,適用于企業新零售、批發、分銷、預約、O2O、多店等各種業務需求。
對于很多開發者在了解新零售社交電商系統我們的時候,對Scss、Less是什么,如何區別?下面就跟小編一起了解下。
一. Sass/Scss、Less是什么?
Sass (Syntactically Awesome Stylesheets)是一種動態樣式語言,Sass語法屬于縮排語法,比css比多出好些功能(如變量、嵌套、運算,混入(Mixin)、繼承、顏色處理,函數等),更容易閱讀。
Sass的縮排語法,對于寫慣css前端的web開發者來說很不直觀,也不能將css代碼加入到Sass里面,因此Sass語法進行了改良,Sass 3就變成了Scss(Sassy CSS)。SCSS(Sassy CSS)是CSS語法的擴展。這意味著每一個有效的CSS也是一個有效的SCSS語句,與原來的語法兼容,只是用{}取代了原來的縮進。
Less也是一種動態樣式語言. 對CSS賦予了動態語言的特性,如變量,繼承,運算, 函數. Less 既可以在客戶端上運行 (支持IE 6+, Webkit, Firefox),也可在服務端運行 (借助 Node.js)。
二. Sass與Less區別
使用:
Less: less.bootcss.com/usage
Sass: www.sass.hk/docs
1、Less在JS上運行,Sass在Ruby上使用。
Sass有工具庫Compass, 簡單說,Sass和Compass的關系類似于像Javascript和jQuery的關系,Compass在Sass的基礎上,封裝了一系列有用的模塊和模板,補充強化了Sass的功能。
Less有UI組件庫Bootstrap,Bootstrap是web前端開發中一個比較有名的前端UI組件庫,Bootstrap的樣式文件部分源碼就是采用Less語法編寫。
2、編寫變量的方式不同。
Sass使用$,而Less使用@。
// Sass
$lightColor:#baf;
// Less
@lightColor:#baf;
3、Sass支持條件語句,可以使用if{}else{},for{}循環等等。而Less不支持。
4、輸出格式不一樣
Less無輸出格式,Sass可以使用特定的輸出格式
· nested:嵌套縮進的css代碼
· expanded:展開的多行css代碼
· compact:簡潔格式的css代碼
· compressed:壓縮后的css代碼
:nested
在執行監測(編譯)命令時,可以指定輸出格式為nested:
sass --watch styles.scss:styles.css --style nested
復制
nested格式下,輸出的CSS代碼:
div {
padding: 20px;
margin: 20px; }
.one {
background: red; }
.two {
background: yellow; }
nested是默認格式,可以不指定。
:expanded
展開格式看起來像開發人員手寫的格式。
要將CSS輸出設置為展開格式,可以使用如下命令:
sass --watch styles.scss:styles.css --style expanded
該格式下,輸出的CSS代碼:
div {
padding: 20px;
margin: 20px;
}
.one {
background: red;
}
.two {
background: yellow;
}
.three {
background: #ff8000;
}
:compact
緊湊格式占用的空間要小得多,每個CSS選擇符定義只占用一行。
要將CSS輸出設置為緊湊格式,可以使用如下命令:
sass --watch styles.scss:styles.css --style compact
該格式下,輸出的CSS代碼:
div { padding: 20px; margin: 20px; }
.one { background: red; }
.two { background: yellow; }
.three { background: #ff8000; }
:compressed
壓縮格式占用盡可能少的空間,選擇符定義不換行,文件最小,一般用于生產版本。
要將CSS輸出設置為壓縮格式,可以使用如下命令:
sass --watch styles.scss:styles.css --style compressed
該格式下,輸出的CSS代碼:
div{padding:20px;margin:20px}.one{background:red}.two{background:ye..........
5、引入外部CSS文件方法命名有一點不一樣
引入外部CSS文件
scss引用的外部文件命名必須以_開頭, 如下例所示:
其中_test1.scss文件名如果以下劃線開頭的話,Sass會認為該文件是一個引用文件,不會將其編譯為css文件。
6、混合不同 Mixins
Sass
/*聲明一個Mixin叫作“error”*/
@mixin error($borderWidth:2px){
border:$borderWidth solid #f00;
color: #f00;
}
/*調用error Mixins*/
.generic-error {
@include error();/*直接調用error mixins*/
}
Less
/*聲明一個Mixin叫作“error”*/
.error(@borderWidth:2px){
border:@borderWidth solid #f00;
color: #f00;
}
/*調用error Mixins*/
.generic-error {
.error();/*直接調用error mixins*/
}
7。繼承方法不一樣
sass的繼承:@extend
.block {
margin: 10px 5px;
padding: 2px;
}
p {
@extend .block;/*繼承.block選擇器下所有樣式*/
border: 1px solid #eee;
}
less的繼承:類似于mixins .block
.block {
margin: 10px 5px;
padding: 2px;
}
p {
.block;/*繼承.block選擇器下所有樣式*/
border: 1px solid #eee;
}
Less和Sass在語法上有些共性,比如下面這些:
1、混入(Mixins)——class中的class;
2、參數混入——可以傳遞參數的class,就像函數一樣;
3、嵌套規則——Class中嵌套class,從而減少重復的代碼;
4、運算——CSS中用上數學;
5、顏色功能——可以編輯顏色;
6、名字空間(namespace)——分組樣式,從而可以被調用;
7、作用域——局部修改樣式;
8、JavaScript 賦值——在CSS中使用JavaScript表達式賦值。
1、Sass在市面上有一些成熟的框架,比如說Compass,而且有很多框架也在使用Sass,比如說Foundation。
2、就國外討論的熱度來說,Sass絕對優于LESS。
3、就學習教程來說,Sass的教程要優于LESS。在國內LESS集中的教程是LESS中文官網,而Sass的中文教程,慢慢在國內也較為普遍。
4、Sass也是成熟的CSS預處理器之一,而且有一個穩定,強大的團隊在維護。
5、同時還有Scss對sass語法進行了改良,Sass 3就變成了Scss(sassy css)。與原來的語法兼容,只是用{}取代了原來的縮進。
6、bootstrap(Web框架)最新推出的版本4,使用的就是Sass。
您如果還想了解更多JAVA知識,可以關注CRMEB官網-行業新聞。有更多實用的技術知識為您分享!
