比較三個 CSS 預處理器:Sass、LESS 和 Stylus(上)


前沿 :  第一次寫不夠成熟,可能描述有所錯誤,還請大家修改指正,我會對已完成的文章進行修改。

 

一、什么是CSS預處理器

  CSS預處理器定義了一種新的語言,基本的思想是用一種專門的編程語言,開發者只需要使用這種語言進行編碼工作,減少枯燥無味的CSS代碼的編寫過程的同時,它能讓你的CSS具備更加簡潔、適應性更強、可讀性更加、層級關系更加明顯、更易於代碼的維護等諸多好處。

  CSS預處理器種類繁多,本次就以Sass、Less、Stylus進行比較。

二、語法

  在使用CSS預處理器之前最重要的是了解語法,我只寫過stylus,就從網上找了下另外兩種語法的格式,與大家對比分享。

  首先Sass和Less都是用的是標准的CSS語法,因此你可以很方便的把已完成的CSS代碼轉為預處理器識別的代碼,Sass默認使用 .sass擴展名,而Less默認使用.Less擴展名。

一下是兩者的語法

/* style.scss or style.less */
h1 {
  color: #0982C1;
}

你注意到Sass同時也支持老語法,就是不包含花括號和分號的書寫格式。

/* style.sass */
h1
  color: #0982c1

然而Stylus支持的語法就更多樣性,它默認使用.styl的文件擴展名,下面是Stylus語法。

/* style.styl */
h1 {
  color: #0982C1;
}
 
/* omit brackets */
h1
  color: #0982C1;
 
/* omit colons and semi-colons */
h1
  color #0982C1

三、變量

  你可以在CSS預處理中聲明變量,並在整個樣式單中使用,支持任何類型的變量,例如:顏色、數值(是否包含單位)、文本。然后你可以任意的調取和使用該變量。Sass的變量是必須$開始,然后變量名和值要冒號隔開,跟CSS屬性書寫格式一致。

$mainColor: #0982c1;
$siteWidth: 1024px;
$borderStyle: dotted;
 
body {
  color: $publicColor;
  border: 1px $borderStyle $mainColor;
  max-width: $siteWidth;
}

而Less的變量名使用@符號開始:

@mainColor: #0982c1;
@siteWidth: 1024px;
@borderStyle: dotted;
 
body {
  color: @publicColor;
  border: 1px @borderStyle @mainColor;
  max-width: @siteWidth;
}

  Stylus對變量名沒有任何限定,你可以是$開始,也可以是任意字符,而且與變量值之間可以用冒號、空格隔開,需要注意的是 Stylus (0.22.4) 將會編譯 @ 開始的變量,但其對應的值並不會賦予該變量,換句話說,在 Stylus 的變量名不要用 @ 開頭。  

mainColor = #0982c1
siteWidth = 1024px
$borderStyle = dotted
 
body
  color mainColor
  border 1px $borderStyle mainColor
  max-width siteWidth

上面三種不同的CSS寫法,最終將會生成相同結果:

body {
  color: #0982c1;
  border: 1px dotted #0982c1;
  max-width: 1024px;
}

  最容易體現它的好處的是,假設你在CSS中使用同一種顏色數十次,如果你要修改顯色,需要找到並修改十次相同的代碼,而有了CSS預處理器,修改一個地方就夠了。

四、嵌套

  如果你需要在CSS中相同的parent引用多個元素,你需要一遍一遍的去寫parent。例如:

section {
  margin: 10px;
}
section nav {
  height: 25px;
}
section nav a {
  color: #0982C1;
}
section nav a:hover {
  text-decoration: underline;
}

然而如果用CSS預處理器,就可以少些很多單詞,而且父節點關系一目了然。

section {
  margin: 10px;
 
  nav {
    height: 25px;
 
    a {
      color: #0982C1;
 
      &:hover {
        text-decoration: underline;
      }
    }
  }
}

stylus還可省略花括號,書寫更加方便,根據個人喜好還可刪除中間冒號。

section 
  margin: 10px;
  nav 
    height: 25px;
    a 
      color: #0982C1;
      &:hover 
        text-decoration: underline;

最終生成CSS結果是:

section {
  margin: 10px;
}
section nav {
  height: 25px;
}
section nav a {
  color: #0982C1;
}
section nav a:hover {
  text-decoration: underline;
}

目前了解就這些,若有描述不正確地方還請大家指正,后續還會更新。

注:參考  張鑫旭Stylue中文文檔http://www.zhangxinxu.com/jq/stylus/selectors.php

      開源中國社區:https://www.oschina.net/question/12_44255


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM