撰寫文章時,我經常會意外地深入一些與主題略微相關的有趣話題。最終,我不得不忍痛刪除或存檔數小時的研究和寫作成果,因為我知道大多數讀者點擊文章時,都對內容有所預期,而我的那些與CSS無關的隨筆顯然不符合預期。
這種情況在我撰寫週一關於At-rules的文章時就發生了。我原本只是專注於幾種測試瀏覽器對CSS At-rules支持的方法。在此過程中,我開始意識到,哇,我們現在有這麼多新的At-rules——我想知道今年有多少是新增加的。這就是我完成手頭文章後掉入的兔子洞。
結果證明我的直覺是對的:2024年新增的At-rules數量超過了過去十年CSS的總和。
這一切都始於我自問:為什麼@supports
At-rule有了selector()
包裝函數,卻還在等待at-rule()
版本?我無法確定確切的原因,但我確信檢查At-rules的支持性需求並不迫切,因為,嗯,那時At-rules並不多——直到最近,我們才迎來了At-rules的井噴式增長。
大約在1998年CSS 2推薦發佈時,@import
和@page
是唯一進入CSS規範的At-rules。這種情況一直持續到2011年CSS 2.1推薦引入了@media
。當然,還有一些其他的At-rules,例如@font-face
、@namespace
和@keyframes
等等,它們已經在各自的模塊中首次亮相。這時,CSS放棄了語義版本控制,規範並沒有呈現整體情況,而是按功能組織的各個模塊。
題外話:最新的已接受的共識認為我們處於“CSS 3”階段,但這已經是十年前的事了,一些人甚至說我們應該進入CSS 5階段。無論我們處於哪個階段,這都無關緊要,儘管這是一個正在討論的話題。擁有一個命名的版本真的有用嗎?
@supports
At-rule於2011年在CSS條件規則模塊第3級中發布——第1級和第2級並不正式存在,但指的是最初的CSS 1和2推薦。直到2015年,大多數瀏覽器才真正支持它,那時,現有的At-rules已經得到了廣泛的支持。 @supports
只針對新的屬性和值,旨在測試瀏覽器對CSS功能的支持,然後再嘗試應用樣式。
截至今天,CSS中共有18個At-rules至少受到一個主要瀏覽器的支持。如果我們查看每個At-rule最初在CSSWG工作草案中定義的年份,我們可以看到它們都以相當穩定的速度發布:
但是,如果我們檢查每年每個瀏覽器支持的At-rules數量,我們會發現瀏覽器活動存在巨大差異:
如果我們只關注主要瀏覽器發布每個At-rule的最後一年,我們會注意到2024年至今已經帶來了驚人的七個At-rules!
我喜歡這樣的思維實驗。你正在研究的東西會導致對同一主題的研究;超出範圍,但與主題相關。它可能不是你每天都會添加書籤和參考的東西,但它是很好的談資。至少,它證實了CSS發展迅速的感覺,就像自CSS 3首次發布以來從未見過的真正快速發展一樣。
它也為我們擁有和不擁有的CSS功能提供了背景。最初沒有at-rule()
函數,因為那時At-rules很少。現在,我們新增加的At-rules數量超過了過去十年,因此,就在上週Chrome團隊將該函數的狀態從“新建”更新為“已分配”也就不足為奇了。
最後一點:我之所以會考慮At-rules,是因為我們已經更新了CSS Almanac,擴展它以包含更多CSS功能,包括At-rules。我正在努力完善它,你也可以通過成為客座撰稿人來提供幫助。
以上是2024年:CSS在過去十年的總和還要多的詳細內容。更多資訊請關注PHP中文網其他相關文章!