CSS 的content-visibility
屬性:性能提升與可訪問性挑戰
2020 年8 月,CSS 的content-visibility
屬性開始在Chrome 瀏覽器中使用,Una Kravets 和Vladimir Levin 曾撰文介紹過它。為了充分發揮其性能優勢,需要將其與contain-intrinsic-size
屬性結合使用,後者需要對頁面中大塊內容的高度進行預估。這其中最奇怪的部分在於,你需要對這些大塊內容的高度進行一個近似的猜測。
我之前曾提出疑問:僅僅猜測高度?如果猜測錯誤會怎樣?是否會影響性能?如果大屏幕和小屏幕之間的差異很大,是否(或應該)在不同的視口更改此值?
Jake Archibald 和Das Surma 最近製作了一個視頻,對這些問題進行了澄清。在視頻的7 分30 秒左右,你可以看到這有多麼令人困惑。 Jake 使用了一個大型HTML 規範頁面作為演示,並為大塊HTML 內容添加了包裝器,並應用了以下代碼:
section { content-visibility: auto; /* 延遲繪製*/ contain-intrinsic-size: 1px 5000px; /* 內容大小的猜測,寬度無關緊要*/ }
顯然, 5000px
不是元素的高度,而是該元素內容的大小。這很重要,因為它會將父元素的高度增加到這個數值,除非父元素通過自身的高度屬性覆蓋它。其神奇之處在於瀏覽器只會繪製第一個section(視口高度很可能小於5000px),並推遲其餘部分的繪製。這有點像延遲加載,但作用於所有內容,而不僅僅是媒體。它假設下一個section 高度為5000px,但一旦其頂部可見,它就會被實際繪製,並確定正確的高度。因此,如果你的頁面只是大型塊狀內容堆疊在一起,使用一個非常大的數字應該可以正常工作。如果你的網站比這更複雜,那就自求多福吧。
這是一個很好的視頻,你應該看看:視頻鏈接
這又是另一個需要你向瀏覽器提供網站信息以便它能夠提升性能的例子。瀏覽器本身可以找出這些信息,但只有在執行了具有性能成本的操作之後才能做到。因此,你必須提前告訴它,從而避免某些類型的額外工作。對於響應式圖片,如果我們使用srcset
屬性提供圖像並提前告訴瀏覽器它們的大小,包括一個包含CSS 行為信息的sizes
屬性,它就可以提前進行計算,只下載最佳圖像。同樣,對於CSS 中的will-change
屬性,我們可以在提前告訴瀏覽器我們將進行移動操作,以便它能夠進行預優化,否則它無法做到這一點。這是可以理解的,但有點令人厭煩。這就像我們需要一個stuff-you-need-to-know.manifest
文件在瀏覽器執行任何其他操作之前提供給它——但這將是一個額外的請求!
可訪問性問題也很重要。 Steve Faulkner 對將content-visibility: auto
應用於圖像和段落進行了測試:
內容在視覺上是隱藏的,但在JAWS 和NVDA 中,都會宣布隱藏的圖像,但元素的內容不會被宣布。這與圖像和段落元素的內容在瀏覽器輔助功能樹中的表示方式有關:圖像在輔助功能樹中以alt 文本作為輔助功能名稱顯示。段落元素的內容不在輔助功能樹中。
他指出,根據規範,以這種方式隱藏的內容不應提供給屏幕閱讀器。我可以理解這兩種情況,例如像display: none
一樣隱藏所有內容,這意味著沒有任何內容在輔助功能樹中。或者,將所有內容都保留在輔助功能樹中。現在它處於一種中間狀態,你可能會在輔助功能樹中看到一堆孤立的圖像,除了它們的alt 文本之外沒有任何其他上下文。這是一個有趣的例子,說明新技術在推出時可能比你希望看到的更粗糙。
說到alt 文本,我們都知道當它們代表需要向無法看到它們的人描述的重要內容時,它們不應該是空的。 Dave 說它們應該像段落一樣:
我終於建立了最簡單的聯繫:alt 文本就像一個段落。文字圖片。我知道這很基本,但這有助於我理解如何編寫好的alt 文本以及我的代碼的源順序。
我不想在這裡過於負面!為設置具有content-visibility
屬性的長滾動頁面而獲得的性能提升是巨大的,這太棒了。能夠用兩行代碼告訴瀏覽器哪些內容可以不繪製是很好的。
- 我一直說“繪製”,但我不知道這是否真的是正確的術語,或者它是否意味著更具體的含義。規範中提到諸如“允許用戶代理在需要之前潛在地省略大量佈局和渲染工作”(強調我的)之類的內容。
以上是有關內容可見性的更多信息的詳細內容。更多資訊請關注PHP中文網其他相關文章!

文章討論了CSS FlexBox,這是一種佈局方法,用於有效地對齊和分佈響應設計中的空間。它說明了FlexBox用法,將其與CSS網格進行了比較,並詳細瀏覽了瀏覽器支持。

本文討論了使用CSS創建響應網站的技術,包括視口元標籤,靈活的網格,流體媒體,媒體查詢和相對單元。它還涵蓋了使用CSS網格和Flexbox一起使用,並推薦CSS框架

本文討論了CSS盒裝屬性,該屬性控制了元素維度的計算方式。它解釋了諸如Content-Box,Border-Box和Padding-Box之類的值,以及它們對佈局設計和形式對齊的影響。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。