關於 Sass 的顏色變數如何提出、結構化進而降低維護成本,
網路上主要的兩種想法
1. 依顏色命名變數,在樣式內直接使用顏色名稱變數。
$blue-cornflower: #6195ED;
$blue-san-marino: #3F64A2;
.class-a {
  color: $blue-cornflower;
}
.class-b {
  color: $blue-san-marino;
} 
重點:命名獨特性,可搭配使用 Name that Color。好處:看樣式馬上知道實際用了什麼顏色,變數簡潔不重複。
壞處:調整顏色時,新增或者減少等確認繁複。
其他:顏色獨特性 + 看了馬上知道是什麼顏色要英文夠好...
2. 定好基本顏色,多一層依照功能性命名,最終使用功能性命名的變數。
$blue-cornflower: #6195ED;
$blue-san-marino: #3F64A2;
$color-text: $blue-cornflower;
$color-link: $blue-san-marino;
$color-border: $blue-san-marino;
 
.class-a {
  color: $color-text;
  border-color: $color-border;
}
a {
  color: $color-link;
} 
好處:較有結構,不會牽一髮動全身,動的基本上就是要一起動的。壞處:沒規劃好會更繁複,一次性部分太搞工。
考量實際使用情境
情境一:調整顏色
只需要動顏色變數的檔案,新增不同區塊或功能時才需要動其他。情境二:想知道某一個地方的顏色色碼
直接從網頁上開「工程師工具」,觀察區塊看。
總結以上,當專案規模較大,
較適合的顏色變數命名、結構方式為混合兩者
第一層
網站主要顏色分別規劃三到五個層次,命名以主色、次要色等的方式命名,例如:blue-main、blue-secondary、...。第二層
實際上運用到樣式裡的顏色變數,依功能性 (區塊和用途、行為、顏色等) 命名,例如:color-header-text、color-table-red、...。其他
主要使用第二層的變數,一次性部分則直接使用第一層的變數。另外,依據原始顏色變化的行為或功能 (hover、active 等) 的顏色,使用 Sass 提供的函式 (lighten()、darken()、saturate()、adjust_hue() 等) 以簡潔顏色的部分。
// Blue color area
$blue-main: #6195ED;
$blue-secondary: #3F64A2;
$blue-somebody: #0AA7FA;
// Red color area
$red-main: #A23F47;
$red-secondary: #FA0A1D;
// Default colors of elements, behaviors
$color-text: $blue-main;
$color-link: $blue-secondary;
$color-border: $blue-secondary;
// Functional parts
$color-header-text: $red-main;
$color-header-red: $red-main;
$color-header-blue: $blue-main;
$color-table-red: $red-secondary;
$color-table-blue: $blue-secondary;
* {
  color: $color-text;
  border-color: $color-border;
}
a {
  color: $color-link;
}
.table-a {
  .child-a, .child-c {
    background-color: $color-table-red;
  }
  .child-b {
    background-color: $color-table-blue;
  }
  .table-specific-icon {
    background-color: $blue-somebody;
  }
}
沒有留言:
張貼留言