SASS 中的 @extend 指令是什麼?


SASS 允許開發人員編寫更易讀的程式碼並以更好的方式操作它。它包含多個指令,例如 @media、@content、@include、@mixin、@extend 等,提供了一些功能,以便開發人員可以編寫比普通 CSS 更好的程式碼。

在本教程中,我們將學習 SASS 中的 @指令。@extend 指令允許開發人員擴充套件 CSS 程式碼。但是,mixin 也擴充套件了 CSS 程式碼並避免重複。@extend 指令也允許我們避免程式碼的重複。

例如,如果您有一個應用程式字型的通用 CSS,並且需要在每個地方使用不同的字型大小,您可以擴充套件字型樣式並新增自定義字型大小。這樣,您就不需要編寫重複的程式碼。

此外,開發人員可以使用 @extend 指令在 CSS 中實現繼承,我們將在示例中學習。

語法

使用者可以按照以下語法在 SASS 中使用 @extend 指令。

selector {
   /* CSS code */
}
Another_CSS_selector {
   @extend selector;
   /* CSS code */
}

在以上語法中,我們可以在 'selector' 的宣告塊中編寫通用 CSS。之後,我們可以在 'Another_CSS_Selector' 內部擴充套件選擇器並新增其自己的程式碼。

示例 1(@extend 指令的基本用法)

在下面的示例中,我們為具有 'card' 類名的 HTML 元素定義了一些樣式。之後,我們為 'small_card' 和 'large_Card' 元素定義了 CSS。我們在兩個選擇器中都使用了 @extend 指令來擴充套件 'card' 選擇器的 CSS。此外,我們在 'small_card' 和 'large_card' 選擇器中包含了一些其他 CSS,例如寬度、高度等。

.card {
   background-color: aliceblue;
   color: green;
   border: 2px solid pink;
   border-radius: 1.4rem;
}
.small_card {
   @extend .card;
   width: 100px;
   height: 100px;
   margin: 5px;
   padding: 5px;
}
.large_card {
   @extend .card;
   width: 500px;
   height: 500px;
   margin: 10px;
   padding: 10px;
}

輸出

在下面的輸出中,我們可以觀察到 'card' 選擇器的樣式應用於 'small_card' 和 'large_card' 選擇器。額外的 CSS 也分別應用於這兩個選擇器。

.card,
.small_card,
.large_card {
   background-color: aliceblue;
   color: green;
   border: 2px solid pink;
   border-radius: 1.4rem;
}
.small_card {
   width: 100px;
   height: 100px;
   margin: 5px;
   padding: 5px;
}
.large_card {
   width: 500px;
   height: 500px;
   margin: 10px;
   padding: 10px;
}

示例 2(使用 @extend 指令建立繼承鏈)

在下面的示例中,我們演示瞭如何使用 @extend 指令建立繼承鏈。在這裡,我們在 '.first' 選擇器中添加了一些 CSS。之後,我們在 '.second' 選擇器內部擴充套件了 '.first' 選擇器並添加了一些額外的 CSS。

接下來,我們在 '.third' 選擇器內部擴充套件了 '.second' 選擇器,並在 '.fourth' 選擇器內部擴充套件了 '.third' 選擇器。因此,在這裡我們使用不同的 CSS 選擇器建立了繼承鏈。

.first {
   width: 100px;
   height: auto;
}
.second {
   @extend .first;
   color: blue;
}
.third {
   @extend .second;
   background-color: pink;
   border: 2px dotted red;
}
.fourth {
   @extend .third;
   margin: 10px;
   padding: 1rem;
}

輸出

下面的輸出顯示了當我們使用 @extend 指令建立繼承鏈時,CSS 程式碼如何應用於不同的 CSS 選擇器。

.first,
.second,
.third,
.fourth {
   width: 100px;
   height: auto;
}
.second,
.third,
.fourth {
   color: blue;
}
.third,
.fourth {
   background-color: pink;
   border: 2px dotted red;
}
.fourth {
   margin: 10px;
   padding: 1rem;
}

示例 3(使用 @extend 指令實現多重繼承)

在本示例中,我們演示瞭如何使用 @extend 指令實現多重繼承。多重繼承的意思是單個選擇器擴充套件了多個選擇器。

在這裡,我們定義了 '.container' 和 '.main' CSS 選擇器並添加了一些 CSS。之後,在 '.element' CSS 選擇器內部,我們擴充套件了 '.container' 和 '.main' 選擇器。

.container {
   width: 500px;
   height: 500px;
   background-color: beige;
}
.main{
   color: pink;
   float: left;
   max-width: 600px;
   max-height: 700px;
   overflow: auto;
}
.element {
   @extend .main;
   @extend .container;
   padding: 2%;
}

輸出

.container,
.element {
   width: 500px;
   height: 500px;
   background-color: beige;
}
.main,
.element {
   color: pink;
   float: left;
   max-width: 600px;
   max-height: 700px;
   overflow: auto;
}
.element {
   padding: 2%;
}

示例 4(在 @media 指令內部使用 @extend 指令)

在下面的示例中,我們在 @media 指令內部使用了 @extend 指令。但是,只要我們在 @media 指令的選擇器內部擴充套件在 @media 指令外部定義的 CSS 選擇器,SASS 編譯器就會報錯。

在這裡,我們在 @media 指令內部使用 '.button' CSS 選擇器擴充套件了 '.small_button' CSS 選擇器。使用者可以觀察到,這裡兩個選擇器都在 @media 指令內部。

@media small_screen {
   .button {
      width: 50%;
      clear: both;
      font-size: 1.3rem;
   }
   .small_button {
      @extend .button;
      @extend .main;
      height: 25%;
   }
}

輸出

@media small_screen {
   .button,
   .small_button {
      width: 50%;
      clear: both;
      font-size: 1.3rem;
   }
   .small_button {
      height: 25%;
   }
}

示例 5(佔位符選擇器)

顧名思義,我們可以在選擇器名稱前新增 (%) 符號來建立佔位符選擇器。當我們編譯 SASS 程式碼時,佔位符選擇器不會出現在輸出程式碼中,但其樣式將在擴充套件它的位置新增。

例如,我們在這裡定義了 '%container' 佔位符選擇器。之後,我們在 'small_container' 和 'medium_container' 內部擴充套件了 container 選擇器。

在輸出中,我們可以觀察到它不包含 'container' 選擇器,但 'small_container' 和 'large_container' 包含 'container' 佔位符程式碼。

%container {
   color: red;
   background-color: green;
   padding: 3%;
   margin: 0 auto;
}
.small_container {
   @extend %container;
   width: 100px;
   height: 100px;
}
.medium_container {
   @extend %container;
   width: 300px;
   height: 300px;
}

輸出

.small_container,
.medium_container {
   color: red;
   background-color: green;
   padding: 3%;
   margin: 0 auto;
}
.small_container {
   width: 100px;
   height: 100px;
}
.medium_container {
   width: 300px;
   height: 300px;
}

在本教程中,使用者學習瞭如何使用 @extend 指令。基本上,我們可以使用它來擴充套件樣式表並避免程式碼重複。此外,我們還可以使用 @extend 指令在 CSS 中建立繼承鏈。

更新於: 2023年4月27日

110 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告