首頁 web前端 css教學 有關內容可見性的更多信息

有關內容可見性的更多信息

Apr 01, 2025 am 04:50 AM

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屬性的長滾動頁面而獲得的性能提升是巨大的,這太棒了。能夠用兩行代碼告訴瀏覽器哪些內容可以繪製是很好的。

  1. 我一直說“繪製”,但我不知道這是否真的是正確的術語,或者它是否意味著更具體的含義。規範中提到諸如“允許用戶代理在需要之前潛在地省略大量佈局和渲染工作”(強調我的)之類的內容。

More on content-visibility

以上是有關內容可見性的更多信息的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

VUE 3 VUE 3 Apr 02, 2025 pm 06:32 PM

它的出局!恭喜Vue團隊完成了完成,我知道這是一項巨大的努力,而且很長時間。所有新文檔也是如此。

在CI/CD上有點 在CI/CD上有點 Apr 02, 2025 pm 06:21 PM

我說的“網站”比“移動應用程序”更合適,但我喜歡Max Lynch的框架:

您可以從瀏覽器獲得有效的CSS屬性值嗎? 您可以從瀏覽器獲得有效的CSS屬性值嗎? Apr 02, 2025 pm 06:17 PM

我有人寫了這個非常合法的問題。 Lea只是在博客上介紹瞭如何從瀏覽器中獲得有效的CSS屬性。那樣的是這樣。

在WordPress塊編輯器中使用Markdown和本地化 在WordPress塊編輯器中使用Markdown和本地化 Apr 02, 2025 am 04:27 AM

如果我們需要直接在WordPress編輯器中向用戶顯示文檔,那麼最佳方法是什麼?

帶有粘性定位的堆疊卡和一點點的雜物 帶有粘性定位的堆疊卡和一點點的雜物 Apr 03, 2025 am 10:30 AM

前幾天,我發現了科里·金尼文(Corey Ginnivan)網站上的這一點,當您滾動時,彼此之間的卡片堆放集。

比較瀏覽器的響應式設計 比較瀏覽器的響應式設計 Apr 02, 2025 pm 06:25 PM

這些桌面應用程序中有許多目標是同時在不同的維度上顯示您的網站。因此,例如,您可以寫作

如何將CSS網格用於粘頭和頁腳 如何將CSS網格用於粘頭和頁腳 Apr 02, 2025 pm 06:29 PM

CSS網格是一系列屬性的集合,旨在使佈局比以往任何時候都容易。像任何東西一樣,那裡有一點學習曲線,但是網格是

Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

See all articles