9012的CSS狀態報告分析

2021-03-02 Customer Experience Department

隨著618購物狂歡節的落幕, 9012年也悄然走完了它一半的路程。而對於CSS而言,則迎來了20多年以來第一份屬於自己的狀態報告。作為前端開發人員,對於 JavaScript相關的狀態報告一定不陌生,但對於CSS的狀態報告大家都不是很了解。就好比報告的開篇所言:

在Web開發家族中,JavaScript更似一位憤怒、叛逆的少年,每年都會經歷一個新階段。而CSS卻一直以來更似一位勤奮好學,舉止得體的少年,他總是保持禮貌,從不草率的做出任何決定。

不過回顧CSS近幾年的發展, Flexbox,Grid,CSS-in-JS的到來,可以說CSS也終於開始了屬於它的動蕩青少年時期。

而這有史以來第一份關於CSS狀態的調查報告中我們可以看到CSS的哪些特性使用的最多,哪些工具使用更為廣泛等等。

這份報告囊括了很多內容,其中有三部分內容值得我們去關注:

- CSS哪些特性使用的最多

- CSS哪些技術可以幫助我們提效

- CSS單位和選擇器

通過報告,我們可以知道使用最多的CSS特性主要分為六大類:

- 布局

- 形狀和圖形

- 交互

- 排版

- 動畫和變換

- 其他特性

具體數據可以看下面這張動圖:

注意,深藍色表示使用過的數據,淺藍色表示知道但未使用過!

布局是CSS近年來最大的變化之一。最早出現的一維布局Flexbox,讓我們在Web的布局中可以更輕易的適配於眾多不同的終端,並且得到眾多主流瀏覽器的支持,它哼實現能實現80%,甚至是90%以上的布局需求。

然後出現的就是二維布局CSS Grid。CSS Grid可以說是布局的最多元和最有表現力的布局特性。CSS Grid可以讓我拋棄DOM結構(文檔流的限制),更靈活的實現更豐富和更為靈活的布局。而在不久的將來,CSS的subgrid會讓CSS Grid變得更強大,能幫助我們實現類似表格套表格這樣的布局需求(其實表格布局是非常強大的)。

在布局特性中除了Flexbox,CSS Grid之外,還有多列布局、書寫模式等。

還有一些文本圍繞圖形的排版方式,使用目前的CSS技術實現起來都比較困難,但在不久的未來,CSS Exclusions特性可以很好的解決文本圍繞圖片(當然也可以是其他元素)布局 效果。

而CSS Shapes特性中提供的圖形函數除了可以幫助我們繪製一些圖形之外,還提供了一些布局的實現方案。比如shape-outside、shape-margin和float的結合可以實現一些藝術性的布局效果,如:

另外就是CSS的邏輯屬性。CSS的邏輯屬性的出現,將會改變我們對CSS盒模型的原始理解和認知,它會改變CSS的重要概念,即盒模型

CSS邏輯屬性的介入,我們應該開始停止物理屬性*-top、*-right、*-bottom和*-left來闡述盒模型,而應該改用邏輯屬性*-inline-start、*-inline-end、*-block-start和*-block-end來重新定義盒模型。

進入9102年後,隨著瀏覽器對CSS的mask、filter和混合模式的支持度越來越強,我們可以用幾行CSS代碼就來實現之前需要依賴於圖形編輯軟體來處理的圖形效果。

例如我們可以使用clip-path和CSS Shapes中的圖形函數來繪製不同形狀的圖形,可以使用混合模式、遮罩和濾鏡來處理圖像(圖形的效果),使用object-fit來處理圖像的適配:

CSS的Shapes中shape-outside和CSS Clipping中的clip-path都提供了一些繪製圖形的函數,比如:

-  正方形:inset()

-  圓形:circle()

-  橢圓形:ellipse()

-  多邊形:polygon()

-  url()

CSS的濾鏡和混合模式則可以處理一些圖片效果。

混合模式

filter

說到圖片,這裡額外插個HTML5相關的特性,我們可以藉助下面的方案,讓圖片在Web中使用得到最佳的體驗:

- 使用<img>元素加載圖像,使用該元素最新屬性srcset和size給用戶加載正確的圖像

- 使用<picture>元素給用戶加載正確的圖像

比如<img />:

再來看<picture>:

在Web上時間有很多交互行為(效果)往往都是依賴於編寫大量的JavaScript代碼來實現,雖然交互行為(效果)可以模擬出來,但性能上卻會大大的打折扣。

值得慶幸的是,現在有很多交互行為可以使用純CSS的特性來完成:

上圖提到的overscroll-behavior、overflow-anchor和滑鼠滾動捕捉都是用來優化滾動體驗的。

除了這幾個屬性之外,還有scroll-behavior、pull-to-refresh等屬性也是隸屬於滾動特性中的屬性,都是用來優化用戶體驗的。

雖然Web中的排版是較為複雜而且麻煩的一部分,但CSS一直在致力於改進對排版特性的良好支持。

排版首先涉及到字體,字體的加載,其實是有一定策略的。

最新的font-varialbe屬性可實現一些特殊的文字效果

使用CSS的animation、transition和transform來實現一些Web動效,而且這方面的技術也是相當成熟。在Web中時常能看到這方面的案例和交互效果。

報告中提到的一些其他CSS特性,主要提了CSS的自定義屬性、calc()函數、CSS條件屬性@supports、will-change和display: contents等。

而且這些特性在實際項目中都已在使用,特別是CSS的自定義屬性、calc()、@supports和will-change等。

長期以來,在大家的認知中都覺得CSS非常簡單,沒啥技術含量,但事實也並非容易。個人對於CSS的看法是雖簡單,但不容易。

CSS也發展有20多年了,多年來,CSS開發也有自己的技術生態系統,比如CSS的處理器(Sass、LESS、Stylus和PostCSS等),也有一些方法論(比如BEM,OOCSS等),也有很多優秀的Framework(比如BootStrap)。

隨著React、Vue這樣的框架的誕生,開始有CSS-in-JS的技術(比如Style-component):

CSS的單位和選擇器可以說是CSS中最基礎的部分,但也是非常重要的一部分。在報告中,向大家統計了CSS單位和選擇器的使用情況。

對於CSS選擇器相關的統計,這裡就不截圖了,涉及的較多,分的類也較細。但從統計中可以看出來常用的選擇器有:

-偽元素:::before和::after以

及::placeholder

-組合選擇器:後代選擇器(div span)、子選擇器(div > span)、兄弟選擇器(div + div)和相鄰兄弟選擇器(div ~ div)

-結構選擇器::first-child、:last-

child、:nth-child()、:not()、:nth-of-type()、:nth-last-child()、:last-of-type、:nth-last-of-type、:only-child、:root和:empty

-屬性選擇器::link、:visited、:target

-狀態選擇器:

hover、:focus、:active、:focus-within和:focus-visible

-表單驗證方面的選擇器

::checked、:enabled、:required等

除此之外,還有像:focus-

within、:target、:empty可以優化一些用戶體驗。而且在CSS選擇器Levle4版本中還提供了很多優秀的選擇器供我們使用,只不過報告中只顯出來部分而以。

另外掌握CSS選擇器的使用還必須在使用的時候了解優化選擇器和控制選擇器的權重相關的知識。其中CSS選擇器權重對於很多CSSer來說是最易於搞錯的。用張經典的圖來向大家展示CSS選擇器權重的計算:

相關焦點

  • HTML DIV+CSS 命名規範大全
    siteinfo網站信息#siteinfoLegal法律聲明#siteinfoCredits信譽#joinus加入我們#partner合作夥伴#service服務#regsiter註冊arr/arrow箭頭#guild指南#sitemap網站地圖#list列表#homepage首頁#subpage二級頁面子頁面#tool, #toolbar工具條#drop下拉#dorpmenu下拉菜單#status狀態
  • 9012是什麼梗?都9012了,朕的大清還沒亡!
    相信大家今年在網上經常看到「這都9012了,怎麼還有……」這樣的話。在去年,大家在網上經常看到8012這個詞。那麼,這個系列梗究竟出自哪裡,到底是什麼意思呢?今天,就讓我們一起來看看吧。都9012年了1. 「9012」的含義出處:其實,9012這一系列的梗最早出現在2017年是從7012這個梗延續來的,把年份倒裝一下用來表示年代久遠,一般被網友用來吐槽一些陳詞濫調的梗,還有用來表示某人還不知道某事
  • 都9012年了是什麼梗 抖音評論9012年是指什麼意思
    去年有個梗叫做8012,今年剛開始有個梗叫做9012,來看看都9012年了是什麼梗? 9012年是什麼意思?9012其實就是2019反過來讀的,很多人最近在評論裡面都會看到這個9012,來看看都9012年了是什麼梗 ?
  • 網頁CSS設計樣式基礎知識點 小白教程
    1.css樣式中的選擇器嚴格區分大小寫,屬性和屬性值不區分大小寫,但是按照規範一般「選擇器、屬性和屬性值」採用小寫的方式。2.多個屬性之間必須用英文狀態下的分號隔開,最後一個屬性後的分號可以省略,但是為了方便閱讀和添加新樣式,最好保留,養成良好的書寫習慣!
  • 都9012年了是什麼梗 為何要說成9012年代表什麼意思
    最近在網絡上面有很多9012這樣的表達,這樣的表達其實在前幾年就已經開始流行了,但其實還是有很多的人比較的懵,不知道這個詞語是怎麼來的在什麼時候使用。現在確實有很多的網絡用語是需要明白其中的具體含義的,才能明白具體是怎麼使用的,那麼都9012年了是什麼梗?都9012年了是什麼意思?
  • 前端進階:css必知的幾個底層知識和技巧
    在介紹完問題學習法之後,進入我們今天的主題,接下來我會介紹css的一些底層的知識的現象,藉此來讓大家對css有更深入的理解。一.css尺寸1.首選最小寬度–實現複雜圖形效果在css中,圖片和文字的權重遠大於布局,因此當width:0時表現出來的寬度就是「首選最小寬度」。中文的最小寬度為每個漢字的寬度,西方文字取決於連續的英文字符單元。
  • 【前端-CSS動畫】製作聖誕節彩燈
    css動畫 animationcss動畫 keyframesbox-shadow一、效果二、代碼index.htmlDOCTYPE html><html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <link rel="stylesheet" href="style.css
  • 用CSS畫一個三角形
    經過上面的分析可以知道,底邊是由border-left加上border-right的長度合起來的,而底邊的高是border-bottom,所以如果border-bottom-width是40px,那麼border-left和border-right的寬度都是40px * sqrt(2) / 2 ~= 28px,約等於28px。驗證一下:
  • 49期:利用clip-path製作css動畫
    引最近工作項目中有製作動畫效果的需求,查閱了一些網站之後,在一個名叫species-in-pieces的網站(species-in-pieces.com)看到了以下神奇的動畫效果:用Chrome的開發者工具窺探一番之後,發現這個酷炫的動畫效果基本是純css實現的!其實現核心就是css3中加入的 clip-path 屬性。
  • vue+swiper+animate.css製作全屏滾動H5
    blog.csdn.net/qq_41725450    年底了,接到需求要製作年度帳單,形式就是全屏滾動H5頁面,翻頁時給頁面元素添加動畫,大概效果如下:H5長翻頁動畫效果接下來就來介紹一下我的製作步驟;1.安裝swiper、animate.css
  • 使用CSS技術實現Netflix Logo動畫效果
    本文譯自:Netflix Logo
  • css動畫創建及使用
    keyframes name {}@-webkit-keyframes name {}@-moz-keyframes name {}@-o-keyframes name {}實例:下面創建一個圍繞固定軌跡進行移動的動畫:<style type="text/css
  • 巧用CSS cross-fade(.)實現背景圖像半透明效果
    前段時間有挺火的一個小遊戲,拿兩張圖片疊加在一起,看看複合人物的效果,用css怎麼實現呢?可能大部分人想到的是將兩個img用定位的方式疊加在一起,分別設置透明度,當然這個辦法是可行的,其實css還提供了一個cross-fade()方法,講兩張圖片作為背景圖引入,可以實現相同的效果。
  • 數據分析的四種類型,你能看懂幾個
    講到這兒,有必要給大家推薦一款全能型的數據分析工具-億信ABI,能夠幫助人們迅速入門數據分析並全方位的去體驗數據分析過程中的那些程序。億信ABI是一款融合了數據源適配、ETL數據處理、數據建模、數據分析、數據填報、工作流、門戶、移動應用等核心功能的一站式數據分析工具。
  • CSS現狀和如何學習
    這份報告相對於來說還是比較詳細的:除了CSS狀態發展報告之外,還有每年的Web年鑑對CSS也會有相應的調查統計:另外,還有一些其他的調查報告也會有一些CSS相關的報告,但都沒有CSS狀態發展報告這樣詳細和針對性。
  • HTML普通流以及css中position的介紹
    position是css中常用的屬性,其值有static、absolute、relative和fixed。這裡我只介紹常用的absolute和relative。absolute:元素框從文檔流完全刪除,並相對於其包含塊定位。包含塊可能是文檔中的另一個元素或者是初始包含塊。元素原先在正常文檔流中所佔的空間會關閉,就好像元素原來不存在一樣。
  • 9012年了,華語樂壇還流行唱情歌嗎?
    市場上的動態似乎在預示著,情歌似乎是永不過氣的時尚,9012年了,華語樂壇真的還流行情歌嗎?行業的數據分析或許能說明一二。唱片工業時代和流媒體時代最大的差別在於,數據變得更透明了。雖然許多榜單因粉絲打榜的因素為人詬病,但通過橫向與縱向的對比,我們仍能從各大榜單和抖音短視頻、Youtube等流媒體播放平臺中看出一首歌曲的傳唱度和流行度。
  • 復旦智庫發報告分析境外輿情「傲慢與偏見」
    中國青年報客戶端訊(黃晨 中青報·中青網記者王燁捷)近日,復旦發展研究院公開發布四份《復旦智庫報告》,包括「世界系列」的《共識與分歧:美國各界對華科技政策態勢與評估》《傲慢與偏見:我國新冠肺炎疫情防控的境外輿情分析》和「中國系列」的《獨立寒秋:「後疫情時代」的中國經濟》《應對新冠肺炎疫情的社會治理
  • css文字特效-冰凍文字(帶炫光)
    使用css製作冰凍文字(帶炫光效果)適用場景:通常此類效果在視頻片頭特效出現較多博客上,適用影評內容,
  • 劇本分析報告五大要素
    最典型的例子,就是《一步之遙》,近十個編劇用多塊黑板同時創作,最終把幾部電影的信息量強行壓縮到一部電影裡,增加了普通觀眾的觀影障礙。一個職業劇本醫生,不僅要能讀懂字裡行間的表意,還需要還原作者的創作狀態。哪些地方是他有感而發,一氣呵成的;哪些地方是他被迫無奈,生編硬來的。如果你能一眼識破,讓原作者發出「我當時就是這樣」的感慨,你就建立了初步信任。2.