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