iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
Modern Web

菜鳥30日自學SASS及SCSS系列 第 12

【D-12】Sass/SCSS 基本語法- 函式

  • 分享至 

  • xImage
  •  

函式 Functions

宣告函式可使用 @function 關鍵字,當產生結果時可使用 @return 將其返回給呼叫的對象。

此語法僅可回傳單一數值,也可搭配變數和 Mixin 使用。

例如:

//scss//
@function pow($base, $exponent) {
  $result: 1;
  @for $_ from 1 through $exponent {
    $result: $result * $base;
  }
  @return $result;
}

.sidebar {
  float: left;
  margin-left: pow(4, 3) * 1px;
}

編| 以往參數都必須依照順序傳入以保證對象如預期被接收,在 SCSS 可以直接以關鍵字方式傳入參數值
譯| 即可。雖然說這樣的寫法方便了許多,但卻可能存在可讀性低落的問題,造成沒辦法立即得知參數
後| 是否已傳入,最後可能就會出現錯誤。
 V

//css//
.sidebar {
  float: left;
  margin-left: 64px;
}

可選參數

透過定義一個默認值來使參數成為可選參數,默認值即為參數未傳遞時。

例如:

// scss //
@function invert($color, $amount: 100%) {
  $inverse: change-color($color, $hue: hue($color) + 180);
  @return mix($inverse, $color, $amount);
}

$primary-color: #036;
.header {
  background-color: invert($primary-color, 80%);
}

編|
譯| 當應該被接收的變數就算無法傳遞還是可直接向預設參數取值,來避免處理時發生錯誤。
後|
 V

// css // 
.header {
  background-color: #523314;
}

關鍵字參數

呼叫函式時,除了按參數列表中的位置傳遞參數外,還可以按名稱傳遞參數。

例如:

// scss //
$primary-color: #036;
.banner {
  background-color: $primary-color;
  color: scale-color($primary-color, $lightness: +40%);
}

編|
譯| 因為任何參數都可以透過名稱傳遞,所以在重新命名函式的參數時要小心,千萬不可重複。
後|
 V

// css //
.banner {
  background-color: #036;
  color: #0a85ff;
}

任意參數

將位置參數和關鍵字參數傳遞給函數

// scss //
$widths: 50px, 30px, 100px;
.micro {
  width: min($widths...);
}

編|
譯|
後|
 V

// css //
.micro {
  width: 30px;
}

上一篇
【D-11】Sass/SCSS 基本語法-繼承(2)
下一篇
【D-13】比較:混入 、 繼承、佔位符
系列文
菜鳥30日自學SASS及SCSS30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言