---
# System prepended metadata

title: 令人頭痛的 @exted繼承

---

# 令人頭痛的 @exted繼承 



說到scss，一開使看到許多@ $ % ()...等符號就令許多初學者崩潰！！

對...我也是那位一度想放棄的初學者，好幾度想回去當假掰的小編 XD

好了進入正題，爬了很多文終於了解，首先來說明@exted寫法：

基本上@exted 要搭配著 %XXXX，那為什麼有看過沒有寫%的呢？

<font color="#f00">注意：我們先觀察不同寫法，編譯後的CSS差別</font>


:::info
SCSS
有%的寫法
```程式類型=
%text-style{
 color:#333;
 font-size:16px;
 letter-spacing:2px;
}

h1{
 @extend %text-style;
}

h2{
 @extend %text-style;
}
```
:::


:::info
CSS
有%編譯後的CSS
```程式類型=
h2, h1 {
  color: #333;
  font-size: 16px;
  letter-spacing: 2px;
}
```
:::

:::warning
SCSS
再來看看沒有%的寫法
```程式類型=
.text-style{
color:#333;
font-size:16px;
letter-spacing:2px;
}

h1{
@extend .text-style;
}

h2{
@extend .text-style;
}
```
:::

:::warning
CSS
沒有%編譯後的CSS
```程式類型=
.text-style, h2, h1 {
  color: #333;
  font-size: 16px;
  letter-spacing: 2px;
}
```
:::

有沒有發現編譯後的CSS差別呢？

### 使用%宣告： %text-style 不會被編譯出來

### 沒有使用%宣告： .text-style 會被編譯出來

原因在於 【使用%宣告】 是一個佔位符選擇器，意思是不會產生實體的對象，例如標籤、class等

假設今天html裡沒有 .text-style 的class

那麼我們就不必生產一個無意義的 .text-style

改用%.text-style的方式宣告
 

