css 是一種不斷發展的語言。每一次迭代,它都會變得越來越好。因此,了解最新的 CSS 功能非常重要,這樣你才能在項目中使用它們,減少對第三方庫的依賴。
本文將介紹一些即將推出的 CSS 新特性,這些特性將簡化你的開發工作。雖然這些特性尚未在所有瀏覽器中支持,但可以提前使用它們,以適應未來的項目需求。在不支持這些特性的瀏覽器中,它們大多會被忽略。
text-wrap 屬性
text-wrap 屬性用于指定元素中的文本是否應換行。它是 CSS 文本模塊第 4 級規范的一部分。
該屬性可以接受多個值,但最有趣的值是 balance 和 pretty 。
如果將 text-wrap 屬性設置為 balance ,瀏覽器將嘗試以元素的最后一行與第一行一樣長的方式對文本進行換行。如果希望元素中的文本具有一致的外觀,這將非常有用。例如,在博客文章的標題中。
另一方面,如果將 text-wrap 屬性設置為 pretty ,瀏覽器就會嘗試智能地將文本分成塊元素,使最后一行不會出現單字/孤字。
作用域 css
現在,我們可以使用 @scope 規則在特定元素內設置 CSS 作用域。從本質上講,它允許你創建一個只適用于特定元素及其子元素的 CSS 規則。
舉例來說,如果你想在某個特定元素內對 CSS 進行范圍/限制,可以使用類或 ID 選擇器來實現,就像這樣。
@scope (.class-component, #id-component) {
/* CSS rules */
}
下面舉例說明如何使用它:
.all-green p {
color: darkgreen;
}
@scope(.all-pink) {
p {
color: #c94f65;
}
}
上面將確保 .all-pink 元素內的p 元素呈現粉紅色,而 p 元素外的 p 元素呈現綠色。
對 CSS 進行作用域界定有助于避免使用過于具體的選擇器,也有助于避免在 CSS 中使用 !important 。
自動增加文本區域
CSS 規范中即將出現一個名為 form-sizing 的新 CSS 規則,它將允許我們控制 <textarea> 等元素的大小調整行為。
textarea {
form-sizing: normal;
}
將 form-sizing 屬性設置為 normal 后,瀏覽器將在用戶鍵入 <textarea> 元素時自動增加該元素的高度。
查看過渡
CSS 規范中即將出現一個名為 view-transition 的新元標記,它將允許我們在用戶滾動頁面時控制視口的轉換。
例如,如果想在用戶瀏覽新頁面時為視口添加淡入效果,可以這樣做。
<meta name="view-transition" content="same-origin">
在這里, same-origin 值將確保只有當用戶導航到同一原點內的頁面時才會發生轉換。
這使得頁面之間的過渡更加無縫,不那么生硬。更像一個本地應用程序。
light-dark() 函數
light-dark() 是一個新的 CSS 函數,可讓我們為明暗模式指定不同的值
body {
background-color: light-dark(white, black);
}
這將確保 body 元素的背景顏色在淺色模式下為白色,在深色模式下為黑色。
除了用戶的主題偏好外, light-dark() 函數還可用于根據顏色主題屬性在兩個值之間進行切換。
:root {
color-scheme: light dark;
}
:root {
--text-color: light-dark(#333, #ccc);
/* In Light Mode = return 1st value.
In Dark Mode = return 2nd value. */
}
CSS 中的嵌套
最近,Safari 瀏覽器技術預覽版 162 和 Chrome 瀏覽器開發版(在瀏覽器中啟用 "實驗性網絡平臺功能 "標志)中發布了一個名為 CSS 嵌套模塊的模塊。
啟用后,就可以在本地 CSS 中編寫上述類似于 Sass 的代碼。
.parent {
.child {
color: red;
}
#childWithId {
color: red;
}
}