Sass 3.5 發佈 

Natalie Weizenbaum 發佈於 2017 年 7 月 7 日

我很興奮地宣布,我剛剛發佈了 Sass 3.5 的穩定版本。這個版本著重於與新的 CSS 語法的相容性,並有助於為即將推出的模組系統和與Dart Sass 的相容性奠定 基礎。

3.5 中的大部分主要功能已包含在候選版本中,您可以點擊此處閱讀相關資訊。但自那時 起,還新增了一些其他 變更。

  • Sass 現在支援::slotted() 偽元素,包括擴展其選擇器 參數。

  • var() 函式可以安全地傳遞給 CSS 顏色函式 rgb()rgba()hsl() hsla()

  • 由 Sass 的顏色函式建立的透明顏色現在將寫成 rgba(0, 0, 0, 0) 而不是 transparent,以解決 Internet Explorer 中的一個錯誤。文件中寫成 transparent 的顏色仍將按原樣 輸出。

Dart Sass 相容性Dart Sass 相容性 永久連結

我上個月寫過關於我們在短期內保持 Ruby Sass 與 Dart Sass 相容的計劃。Sass 3.5 開始實施這些計劃,增加了對 Dart Sass 新增的一些小型行為擴展的 支援。

  • @extend 樣式表中出現的選擇器,但其合併失敗,不再是錯誤。擴展錯誤的目的是防止拼寫錯誤,而這種情況下並未 發生。

  • 帶有參數的偽選擇器現在可以接受任何符合 CSS <declaration-value> 語法的參數。這將提供與新選擇器更好的向前 相容性。

  • 包含佔位符選擇器以及非佔位符的偽選擇器(例如 :matches(.foo, %bar))將不再被消除。這與佔位符作為不匹配任何內容的選擇器的定義 一致。

  • 您現在可以更改縮排語法檔案中的縮排,只要它仍然定義了一致的樹狀 結構。

還有一些關於 Ruby Sass 不支援的功能的 棄用。

  • 擴展複合選擇器(例如 @extend .foo.bar)已被棄用。這從未遵循 extend 的既定語義:匹配擴展選擇器的元素的樣式就像它們匹配被擴展的 選擇器。

    當您寫 h1 {@extend .a.b} 時,這*應該*意味著所有 h1 元素的樣式就像它們匹配 .a.b 一樣,也就是說,就像它們具有 class="a b",這意味著它們將分別匹配 .a.b。但我們反而只擴展包含*同時*包含 .a.b 的選擇器,這是 不正確的。

  • 顏色運算已被棄用。逐通道運算與對顏色的直觀理解並不完全一致。Sass 的顏色函式套件是操作顏色動態變化的一種更清晰、更易理解的 方法。

  • 引用組合器 /foo/ 已被棄用,因為它在 CSS 規範中已經有一段時間了,並且很快就會從 Chrome 中 移除。

  • 舊式的 :name value 屬性語法已被棄用。這種語法並不廣泛使用,而且與 CSS 的語法不必要地有所不同。

LibSass 相容性LibSass 相容性永久連結

LibSass,Sass 的 C++ 實作,正穩步邁向與所有這些功能的相容性。雖然尚未完全達成,但我們決定不希望 3.5 版本的發佈受限於 100% 的相容性。LibSass 將在實作這些功能時逐步發佈它們。

接下來是什麼?接下來是什麼?永久連結

在最近的將來,我將休假幾個月,因此不太可能會有大量的開發工作。休假結束後,我將專注於讓 Dart Sass 達到完整的 1.0.0 版本,這意味著需要花費大量時間使其 JavaScript APInode-sass 相容。

至於 Ruby Sass,我將繼續修復錯誤並隨著瀏覽器開始支援 CSS 的新功能而新增支援。一旦 Dart Sass 1.0.0 發佈,我將在 Ruby 和 Dart 上同時新增新功能,直到一年的支援期結束。

但現在,請執行 gem update sass 並享受 3.5!