1. 程式人生 > 其它 >#2742. 「JOI Open 2016」銷售基因鏈

#2742. 「JOI Open 2016」銷售基因鏈

Sass

Sass (Syntactically Awesome Stylesheets)是一種動態樣式語言,Sass語法屬於縮排語法,比css比多出好些功能(變數(variables)、巢狀(nested rules)、 混合(mixins)、 函式(functions)等功能),更容易閱讀。

Sass的縮排語法,對於寫慣css前端的web開發者來說很不直觀,也不能將css程式碼加入到Sass裡面,因此Sass語法進行了改良,Sass 3就變成了Scss(Sassy CSS)。SCSS(Sassy CSS)是CSS語法的擴充套件。這意味著每一個有效的CSS也是一個有效的SCSS語句,與原來的語法相容,只是用{}取代了原來的縮排。

Sass是在服務端處理的,以前是Ruby,現在是Dart-Sass或Node-Sass。

Less也是一種動態樣式語言. 對CSS賦予了動態語言的特性,如變數,繼承,運算, 函式. Less 既可以在客戶端上執行 (支援IE 6+, Webkit, Firefox),也可在服務端執行 (藉助 Node.js)。

安裝sass

node.js中使用如下命令安裝sass。

npm install -g sass

變數

SCSS

$myColor: red;   //全域性作用域

h1 {
  $myColor: green;   //只在 h1 裡頭有用,區域性作用域,要想宣告為全域性作用域 可以使用!global
  color: $myColor;
}

p {
  color: $myColor;
}

編譯後的CSS

h1 {
  color: green;
}

p {
  color: red;
}

巢狀規則與屬性

scss

nav {
  ul {
    margin: 0;
    padding: 0;
    list-style: none;
  }

  li { display: inline-block; }

  a {
    display: block;
    padding: 6px 12px;
    text-decoration: none;
  }
}

編譯後的css

nav ul {
  margin: 0;
  padding: 0;
  list-style: none;
}
nav li {
  display: inline-block;
}
nav a {
  display: block;
  padding: 6px 12px;
  text-decoration: none;
}

多個巢狀

.alert, .warning {
  ul, p {
    margin-right: 0;
    margin-left: 0;
    padding-bottom: 0;
  }
}

編譯後的css

.alert ul, .alert p, .warning ul, .warning p {
  margin-right: 0;
  margin-left: 0;
  padding-bottom: 0;
}

巢狀屬性

font: {
  family: Helvetica, sans-serif;
  size: 18px;
  weight: bold;
}

text: {
  align: center;
  transform: lowercase;
  overflow: hidden;
}

編譯後的css

font-family: Helvetica, sans-serif;
font-size: 18px;
font-weight: bold;

text-align: center;
text-transform: lowercase;
text-overflow: hidden;

@import

Sass匯入檔案類似 CSS,Sass 支援 @import 指令。
@import 指令可以讓我們匯入其他檔案等內容。
CSS @import 指令在每次呼叫時,都會建立一個額外的 HTTP 請求。但,Sass @import 指令將檔案包含在 CSS 中,不需要額外的 HTTP 請求。
Sass @import 指令語法如下:

@import filename;    //不帶字尾

Sass Partials

不希望將一個 Sass 的程式碼檔案編譯到一個 CSS 檔案,可以在檔名的開頭新增一個下劃線。這將告訴 Sass 不要將其編譯到 CSS 檔案。
但是,在匯入語句中我們不需要新增下劃線。
_colors.scss

//_colors.scss  以_開頭
$myPink: #EE82EE;
$myBlue: #4169E1;
$myGreen: #8FBC8F;

使用_color.scss

@import "colors";   //引入時不需要帶_

body {
  font-family: Helvetica, sans-serif;
  font-size: 18px;
  color: $myBlue;
}

混入@mixin @include

@mixin 指令定義一個可以在整個樣式表中重複使用的樣式。
@include 指令可以將混入(mixin)引入到文件中。
定義混入

@mixin important-text {
  color: red;
  font-size: 25px;
  font-weight: bold;
  border: 1px solid blue;
}

使用混入

.danger {
  @include important-text;
  background-color: green;
}

編譯後css

.danger {
  color: red;
  font-size: 25px;
  font-weight: bold;
  border: 1px solid blue;
  background-color: green;
}

混入中包含混入

混入中也可以包含混入

@mixin special-text {
  @include important-text;
  @include link;
  @include special-border;
}

向混入傳遞變數

/* 混入接收兩個引數 */
@mixin bordered($color, $width) {
  border: $width solid $color;
}

.myArticle {
  @include bordered(blue, 1px);  // 呼叫混入,並傳遞兩個引數
}

.myNotes {
  @include bordered(red, 2px); // 呼叫混入,並傳遞兩個引數
}

編譯後的css

.myArticle {
  border: 1px solid blue;
}

.myNotes {
  border: 2px solid red;
}

繼承@extend

@extend 指令告訴 Sass 一個選擇器的樣式從另一選擇器繼承。
如果一個樣式與另外一個樣式幾乎相同,只有少量的區別,則使用 @extend 就顯得很有用。

.button-basic  {
  border: none;
  padding: 15px 30px;
  text-align: center;
  font-size: 16px;
  cursor: pointer;
}

.button-report  {
  @extend .button-basic;
  background-color: red;
}

.button-submit  {
  @extend .button-basic;
  background-color: green;
  color: white;
}

編譯後的css

.button-basic, .button-report, .button-submit {
  border: none;
  padding: 15px 30px;
  text-align: center;
  font-size: 16px;
  cursor: pointer;
}

.button-report  {
  background-color: red;
}

.button-submit  {
  background-color: green;
  color: white;
}
如果這篇文章對你有用,麻煩關注一下本人微信公眾號,關注送福利哦~

不定期安利各種外掛,程式設計技巧,程式設計思想,歡迎交流~