以往自己在寫 CSS 時,多少會遇到想要寫某一個效果卻忘記怎麼開始,然後就需要上網找怎麼解決問題。當下雖然問題解決了,不過可能過沒多久,當遇到同樣問題時,又需要再去找解法,這時候 Mixin 就派上用場了。

如何開始用 Mixin

基本用法

Mixin 的用法我覺得有點像變數,只是差在變數只能給一個值,而 Mixin 則是把一個物件定義成一個變數,然後要用的時候再呼叫變數名稱就可以使用裡面的方法,就像下面的 CodePen:

See the Pen <a href='https://codepen.io/bucky0112/pen/NWNowvB'>mixin demo</a> by Bucky Chu (<a href='https://codepen.io/bucky0112'>@bucky0112</a>) on <a href='https://codepen.io'>CodePen</a>.
// 定義一個 @mixin,並給它一個名稱
@mixin hide-text {
    text-indent: 110%;
    white-space: nowrap;
    overflow: hidden;
}

// 要使用時,呼叫 @include 加上 mixin 名稱
.h1 {
    @include hide-text
}

帶入參數的用法

這是比較進階的用法,用法跟 JavaScript 的函式蠻像的,可以帶入複數個參數,非常方便,寫 CSS 變的更像在寫一般程式語言了。

// 下面有重複使用的部份
.head {
  font-size: 25px;
  line-height: 2em;
  color: #ff0999;
  margin: 15px;
}

.main {
  font-size: 25px;
  line-height: 2em;
  color: #ff0999;
  margin: 15px;
}

.footer {
  font-size: 25px;
  line-height: 2em;
  color: #ff0999;
  margin: 15px;
}
// 可以帶入參數來更靈活使用
@mixin p-style($p-size, $p-color) {
  font-size: $p-size;
  line-height: 2em;
  color: $p-color;
  margin: 15px;
}

.head {
  @include p-style(20px, #677962);
}

.main {
  @include p-style(30px, #933962);
}

.footer {
  @include p-style(10px, #946809);
}
See the Pen <a href='https://codepen.io/bucky0112/pen/gOrqooE'>mixin demo2</a> by Bucky Chu (<a href='https://codepen.io/bucky0112'>@bucky0112</a>) on <a href='https://codepen.io'>CodePen</a>.