重大變更:混合宣告

CSS 正在改變處理巢狀規則與宣告混合的方式,我們希望確保 Sass 的行為與其一致。

目前為止的故事目前為止的故事 永久連結

過去,如果您在 Sass 中混合巢狀規則和宣告,它會將所有宣告拉到規則的開頭,以避免不必要地重複外部選擇器。例如:

Playground

SCSS 語法

.example {
  color: red;

  a {
    font-weight: bold;
  }

  font-weight: normal;
}
Playground

Sass 語法

.example
  color: red

  a
    font-weight: bold


  font-weight: normal

CSS 輸出

.example {
  color: red;
  font-weight: normal;
}

.example a {
  font-weight: bold;
}

原生 CSS 巢狀首次引入時,它的行為方式相同。然而,經過一番考慮後,CSS 工作小組決定讓宣告按照它們在文件中出現的順序套用更有意義,如下所示:

Playground

SCSS 語法

.example {
  color: red;

  a {
    font-weight: bold;
  }

  font-weight: normal;
}


Playground

Sass 語法

.example
  color: red

  a
    font-weight: bold


  font-weight: normal



CSS 輸出

.example {
  color: red;
}

.example a {
  font-weight: bold;
}

.example {
  font-weight: normal;
}

棄用舊方法棄用舊方法 永久連結

相容性
Dart Sass
自 1.77.7 起
LibSass
Ruby Sass

為了通知用戶即將發生的變更,並給予他們時間調整樣式表以確保相容性,在 Sass 中,巢狀規則 *之後* 使用宣告目前已被棄用。在未來的版本中,Dart Sass 將會更改為符合原生 CSS 巢狀產生的順序。

如果您想提前採用新的 CSS 語法,您可以將巢狀宣告包在 & {} 中。

Playground

SCSS 語法

.example {
  color: red;

  a {
    font-weight: bold;
  }

  & {
    font-weight: normal;
  }
}
Playground

Sass 語法

.example
  color: red

  a
    font-weight: bold


  &
    font-weight: normal


CSS 輸出

.example {
  color: red;
}
.example a {
  font-weight: bold;
}
.example {
  font-weight: normal;
}


我可以隱藏警告嗎?我可以隱藏警告嗎? 永久連結

Sass 提供了一套強大的選項,用於管理您看到的棄用警告以及何時看到它們。

簡潔模式和詳細模式簡潔模式和詳細模式 永久連結

預設情況下,Sass 以簡潔模式運行,它只會針對每種類型的棄用警告印出五次,之後就會隱藏其他警告。這有助於確保用戶知道他們需要注意即將發生的重大變更,同時又不會產生過多的控制台訊息。

如果您以詳細模式運行 Sass,它將會印出它遇到的 *每個* 棄用警告。這在追蹤修復棄用問題的剩餘工作時非常有用。您可以使用命令列上的 --verbose 旗標 或 JavaScript API 中的 verbose 選項 來啟用詳細模式。

⚠️ 注意!

JS API 運行時,Sass 不會在編譯之間共享任何資訊,因此預設情況下,它會針對 *每個* 編譯的樣式表印出五個警告。但是,您可以透過編寫(或要求您最喜歡的框架 Sass 外掛程式的作者編寫)一個 自訂的 Logger 來解決此問題,該記錄器每個棄用只印出五個錯誤,並且可以在多個編譯之間共享。

隱藏相依性中的棄用警告隱藏相依性中的棄用警告 永久連結

有時,您的相依性中會有您無能為力的棄用警告。您可以使用命令列上的 --quiet-deps 旗標 或 JavaScript API 中的 quietDeps 選項 來隱藏來自相依性的棄用警告,同時仍然為您的應用程式印出這些警告。

就這個旗標而言,「相依性」是指任何不是從入口點樣式表進行一系列相對載入的樣式表。這表示任何來自載入路徑的內容,以及大多數透過自訂匯入器載入的樣式表。

隱藏特定棄用警告隱藏特定棄用警告 永久連結

如果您知道某個特定的棄用對您來說不是問題,您可以使用命令列上的 --silence-deprecation 旗標 或 JavaScript API 中的 silenceDeprecations 選項 來隱藏該特定棄用的警告。