精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 Content-Visibility 優化渲染性能

開發 前端
content-visibility:屬性控制一個元素是否渲染其內容,它允許用戶代理(瀏覽器)潛在地省略大量布局和渲染工作,直到需要它為止。

最近在業務中實際使用 content-visibility 進了一些渲染性能的優化。

這是一個比較新且有強大功能的屬性。本文將帶領大家深入理解一番。

何為content-visibility?

content-visibility:屬性控制一個元素是否渲染其內容,它允許用戶代理(瀏覽器)潛在地省略大量布局和渲染工作,直到需要它為止。

MDN 原文:The content-visibility CSS property controls whether or not an element renders its contents at all, along with forcing a strong set of containments, allowing user agents to potentially omit large swathes of layout and rendering work until it becomes needed. Basically it enables the user agent to skip an element's rendering work (including layout and painting) until it is needed — which makes the initial page load much faster.

它有幾個常見的取值。

/* Keyword values */
content-visibility: visible;
content-visibility: hidden;
content-visibility: auto;

分別解釋一下:

  • content-visibility: visible?:默認值,沒有任何效果,相當于沒有添加content-visibility,元素的渲染與往常一致。
  • content-visibility: hidden?:與display: none 類似,用戶代理將跳過其內容的渲染。(這里需要注意的是,跳過的是內容的渲染)
  • content-visibility: auto:如果該元素不在屏幕上,并且與用戶無關,則不會渲染其后代元素。

contain-intrinsic-size

當然,除 content-visibility? 之外,還有一個與之配套的屬性 -- contain-intrinsic-size。

contain-intrinsic-size?:控制由 content-visibility 指定的元素的自然大小。

上面兩個屬性光看定義和介紹會有點繞。

我們首先來看看 content-visibility 如何具體使用。

content-visibility: visible 是默認值,添加后沒有任何效果,我們就直接跳過。

利用 ?content-visibility: hidden 優化展示切換性

首先來看看 content-visibility: hidden?,它通常會拿來和 display: none 做比較,但是其實它們之間還是有很大的不同的。

首先,假設我們有兩個 DIV 包裹框:

<div class="g-wrap">
<div>1111</div>
<div class="hidden">2222</div>
</div>

設置兩個 div 為 200x200 的黑色塊:

.g-wrap > div {
width: 200px;
height: 200px;
background: #000;
}

效果如下:

圖片

OK,沒有問題,接下來,我們給其中的 .hidden? 設置 content-visibility: hidden,看看會發生什么:

.hidden {
content-visibility: hidden;
}

效果如下:

圖片

注意,仔細看效果,這里添加了 content-visibility: hidden 之后,消失的只是添加了該元素的 div 的子元素消失不見,而父元素本身及其樣式,還是存在頁面上的。

如果我們去掉設置了 content-visibility: hidden? 的元素本身的 width、height、padding、margin 等屬性,則元素看上去就如同設置了 display: none 一般,在頁面上消失不見了。

那么,content-visibility: hidden 的作用是什么呢?

設置了 content-visibility: hidden? 的元素,其元素的子元素將被隱藏,但是,它的渲染狀態將會被緩存。所以,當 content-visibility: hidden 被移除時,用戶代理無需重頭開始渲染它和它的子元素。

因此,如果我們將這個屬性應用在一些一開始需要被隱藏,但是其后在頁面的某一時刻需要被渲染,或者是一些需要被頻繁切換顯示、隱藏狀態的元素上,其渲染效率將會有一個非常大的提升。

利用 content-visibility: auto 實現懶加載或虛擬列表

OK,接下來是 content-visibility? 的核心用法,利用 auto 屬性值。

content-visibility: auto 的作用是,如果該元素不在屏幕上,并且與用戶無關,則不會渲染其后代元素。是不是與 LazyLoad 非常類似?

我們來看這樣一個 DEMO ,了解其作用:

假設,我們存在這樣一個 HTML 結構,含有大量的文本內容:

<div class="g-wrap">
<div class="paragraph">...</div>
// ... 包含了 Nparagraph
<div class="paragraph">...</div>
</div>

每個 .paragraph 的內容如下:

圖片

因此,整個的頁面看起來就是這樣的:

圖片

由于,我們沒有對頁面內容進行任何處理,因此,所有的 .paragraph 在頁面刷新的一瞬間,都會進行渲染,看到的效果就如上所示。

當然,現代瀏覽器愈加趨于智能,基于這種場景,其實我們非常希望對于仍未看到,仍舊未滾動到的區域,可以延遲加載,只有到我們需要展示、滾動到該處時,頁面內容才進行渲染。

基于這種場景,content-visibility: auto 就應運而生了,它允許瀏覽器對于設置了該屬性的元素進行判斷,如果該元素當前不處于視口內,則不渲染該元素。

我們基于上述的代碼,只需要最小化,添加這樣一段代碼:

.paragraph {
content-visibility: auto;
}

再看看效果,仔細觀察右側的滾動條:

圖片

這里我使用了 ::-webkit-scrollbar 相關樣式,讓滾動條更明顯。

可能你還沒意識到發生了什么,我們對比下添加了 content-visibility: auto? 和沒有添加 content-visibility: auto 的兩種效果下文本的整體高度:

圖片

有著非常明顯的差異,這是因為,設置了 content-visibility: auto 的元素,在非可視區域內,目前并沒有被渲染,因此,右側內容的高度其實是比正常狀態下少了一大截的。

好,我們實際開始進行滾動,看看會發生什么:

圖片

由于下方的元素在滾動的過程中,出現在視口范圍內才被渲染,因此,滾動條出現了明顯的飄忽不定的抖動現象。(當然這也是使用了 content-visibility: auto 的一個小問題之一),不過明顯可以看出,這與我們通常使用 JavaScript 實現的懶加載或者延遲加載非常類似。

當然,與懶加載不同的是,在向下滾動的過程中,上方消失的已經被渲染過且消失在視口的元素,也會因為消失在視口中,重新被隱藏。因此,即便頁面滾動到最下方,整體的滾動條高度還是沒有什么變化的。

 content-visibility是否能夠優化渲染性能?

那么,content-visibility 是否能夠優化渲染性能呢?

在 Youtube -- Slashing layout cost with content-visibility[1] 中,給了一個非常好的例子。

這里我簡單復現一下。

對于一個存在巨量 HTML 內容的頁面,譬如類似于這個頁面 -- HTML - Living Standard[2]

圖片

可以感受到,往下翻,根本翻不到盡頭。(這里我在本地模擬了該頁面,復制了該頁面的所有 DOM,并非實際在該網站進行測試)

如果不對這個頁面做任何處理,看看首次渲染需要花費的時間:

圖片

可以看到,DOMContentLoaded 的時間的 3s+?,而花費在 Rendering 上的就有整整 2900ms!

而如果給這個頁面的每個段落,添加上 content-visibility: auto,再看看整體的耗時:

圖片

可以看到,DOMContentLoaded 的時間驟降至了 500ms+?,而花費在 Rendering 上的,直接優化到了 61ms!

2900ms --> 61ms,可謂是驚人級別的優化了。因此,content-visibility: auto 對于長文本、長列表功能的優化是顯而易見的。

利用 contain-intrinsic-size 解決滾動條抖動問題

當然,content-visibility 也存在一些小問題。

從上面的例子,也能看到,在利用 content-visibility: auto 處理長文本、長列表的時候。在滾動頁面的過程中,滾動條一直在抖動,這不是一個很好的體驗。

當然,這也是許多虛擬列表都會存在的一些問題。

好在,規范制定者也發現了這個問題。這里我們可以使用另外一個 CSS 屬性,也就是文章一開頭提到的另外一個屬性 -- contain-intrinsic-size,來解決這個問題。

contain-intrinsic-size?:控制由 content-visibility 指定的元素的自然大小。

什么意思呢?

還是上面的例子

<div class="g-wrap">
<div class="paragraph">...</div>
// ... 包含了 Nparagraph
<div class="paragraph">...</div>
</div>

如果我們不使用 contain-intrinsic-size?,只對視口之外的元素使用 content-visibility: auto,那么視口外的元素高度通常就為 0。

當然,如果直接給父元素設置固定的 height,也是會有高度的。

那么實際的滾動效果,滾動條就是抖動的:

圖片

所以,我們可以同時利用上 contain-intrinsic-size?,如果能準確知道設置了 content-visibility: auto 的元素在渲染狀態下的高度,就填寫對應的高度。如果如法準確知道高度,也可以填寫一個大概的值:

.paragraph {
content-visibility: auto;
contain-intrinsic-size: 320px;
}

如此之后,瀏覽器會給未被實際渲染的視口之外的 .paragraph 元素一個高度,避免出現滾動條抖動的現象:

圖片

你可以自己親自嘗試感受一下:CodePen Demo -- content-visibility: auto Demo[3]

 content-visibility的一些其他問題

首先,看看 content-visibility 的兼容性(2022-06-03):

圖片

目前還是比較慘淡的,并且我沒有實際在業務中使用它,需要再等待一段時間。當然,由于該屬性屬于漸進增強一類的功能,即便失效,也完全不影響頁面本身的展示。

同時,也有一些同學表示,利用 content-visibility: auto 只能解決部分場景,在海量 DOM 的場景下的實際效果,還有待進一步的實測。真正運用的時候,多做對比,再做取舍。

當然,現代瀏覽器已經越來越智能,類似 content-visibility 功能的屬性也越來越多,我們在性能優化的路上有了更多選擇,總歸是一件好事。

最后

本文到此結束,希望對你有幫助 :)

參考資料

[1]Youtube -- Slashing layout cost with content-visibility: https://www.youtube.com/watch?v=FFA-v-CIxJQ&t=869s。

[2]HTML - Living Standard: https://html.spec.whatwg.org/。

[3]CodePen Demo -- content-visibility: auto Demo: https://codepen.io/Chokcoco/pen/rNJvPEX。

責任編輯:姜華 來源: iCSS前端趣聞
相關推薦

2022-06-10 07:33:26

CSS前端LazyLoad

2025-09-03 08:13:39

2022-12-12 09:01:13

2023-11-18 19:46:07

GPU架構

2023-04-10 11:18:38

前端性能優化

2015-09-16 13:54:30

Android性能優化渲染

2017-10-09 13:39:26

瀏覽器渲染服務器

2017-04-25 16:20:10

頁面優化滾動優化

2018-06-27 08:21:31

前端Web渲染

2020-05-27 09:41:10

前端性能邊緣計算

2017-12-14 14:32:30

.Net內存代碼

2023-12-18 09:08:40

IstioSidecar代理服務

2011-05-11 17:26:17

Minify

2022-02-16 08:11:52

組件渲染前端

2017-01-19 15:27:24

Android性能優化Lint

2013-07-10 10:24:10

2016-08-12 10:23:28

javascriptChrome前端

2019-01-14 08:06:37

JavaScript

2023-08-24 16:54:05

2025-06-03 00:00:06

性能優化性能指標響應時間
點贊
收藏

51CTO技術棧公眾號

日本电影欧美片| 午夜精品在线播放| 亚洲国产老妈| 日韩成人激情视频| 午夜精品中文字幕| www.51av欧美视频| 亚洲国产精品国自产拍av| 91在线观看免费| 天堂资源在线播放| 欧美午夜精彩| 精品91自产拍在线观看一区| 久久人妻精品白浆国产| 中文字幕资源网在线观看| 91小视频在线免费看| 成人在线精品视频| 精品人妻无码一区二区性色| 91精品天堂福利在线观看| 日韩激情在线视频| 最好看的中文字幕| 亚洲四虎影院| 天天色天天操综合| 男女h黄动漫啪啪无遮挡软件| 天天摸天天碰天天爽天天弄| 久久精品久久综合| 日本人成精品视频在线| 久久午夜无码鲁丝片| 成人精品影视| 日韩精品在线视频观看| 国产伦理在线观看| 99综合99| 欧美日韩国产区一| 可以免费在线看黄的网站| 丁香花视频在线观看| 中文字幕在线不卡| 亚洲二区三区四区| 青梅竹马是消防员在线| 成人av免费观看| av蓝导航精品导航| 国产成年妇视频| 久久国产精品99久久人人澡| 国产精品第一第二| 精产国品一区二区| 爽好多水快深点欧美视频| 97精品一区二区视频在线观看| 欧美性猛交xxxx乱大交少妇| 精品国产乱码久久久| 国产网站欧美日韩免费精品在线观看 | 欧美日韩伦理| 亚洲偷欧美偷国内偷| av网站有哪些| 卡通动漫国产精品| 日韩电影视频免费| 亚洲av无码国产精品久久| 秋霞影视一区二区三区| 日韩三级精品电影久久久| 永久免费看片在线观看| 日韩影片在线观看| 日韩精品一区二区三区在线| 男人添女人荫蒂国产| 777久久精品| 亚洲国产古装精品网站| 中国xxxx性xxxx产国| 奇米777国产一区国产二区| 亚洲精品久久久久国产| 精品夜夜澡人妻无码av| 国产一区二区三区电影在线观看 | 高清一区二区中文字幕| 日韩视频在线一区二区| yjizz视频| 免费成人网www| 主播福利视频一区| 欧美成人精品欧美一| 亚洲日本视频| 国产精品第一第二| 国产xxxx孕妇| 99r精品视频| 亚洲激情一区二区| 欧美另类tv| 色综合欧美在线视频区| 亚洲欧美视频二区| 中文字幕日韩高清在线| 精品香蕉一区二区三区| 91香蕉视频网| 亚洲黄色影院| 国产精品成人播放| 国内毛片毛片毛片毛片| 91视频.com| 中文字幕在线观看一区二区三区| 久草在线资源站资源站| 91福利资源站| 91人妻一区二区三区| 天堂资源在线亚洲| 最近2019年中文视频免费在线观看| 劲爆欧美第一页| 亚洲一区不卡| 亚洲japanese制服美女| 欧美少妇另类| 亚洲欧美另类图片小说| www黄色日本| 国产精品日本一区二区不卡视频| 国产偷国产偷亚洲清高网站| 黑鬼狂亚洲人videos| 丝袜美腿亚洲一区二区图片| 成人欧美一区二区三区视频xxx | 蜜臀久久99精品久久久| 欧美国产激情二区三区 | 涩涩涩视频在线观看| 欧美狂野另类xxxxoooo| 欧美一区二区免费在线观看| 99热在线成人| 国产精品国产三级国产aⅴ9色| 亚洲av无码乱码国产精品| 国产欧美va欧美不卡在线| 久久综合久久网| 麻豆精品在线| 中文字幕日韩在线观看| 成人免费视频国产免费| 成人爱爱电影网址| 九一免费在线观看| 欧美成人黄色| 伊人精品在线观看| 黄色片网站在线免费观看| 国产成人综合网站| 男女h黄动漫啪啪无遮挡软件| 3d性欧美动漫精品xxxx软件| 日韩大陆欧美高清视频区| 久久久一二三区| 国产乱色国产精品免费视频| 亚洲欧洲一区二区在线观看| 日本欧美一区| 亚洲天堂av在线播放| 69国产精品视频免费观看| 91色综合久久久久婷婷| 激情五月宗合网| 欧美1区二区| 91国产视频在线播放| 欧美性猛交 xxxx| 亚洲尤物视频在线| 欧美一级大片免费看| 欧美日韩蜜桃| 99国产超薄丝袜足j在线观看| 50度灰在线| 日韩欧美一区中文| 久久视频免费看| av男人天堂一区| 国产午夜福利100集发布| 久久香蕉精品香蕉| 68精品久久久久久欧美| 你懂的视频在线| 日本道免费精品一区二区三区| 午夜理伦三级做爰电影| 视频一区中文字幕国产| 日本高清久久一区二区三区| 日本少妇一区| 按摩亚洲人久久| 91成品人影院| 亚洲精品久久7777| 亚洲欧美高清在线| 免费一级欧美片在线播放| 人禽交欧美网站免费| 欧美天堂在线| 久久不射电影网| 亚洲国产精品suv| 亚洲高清视频的网址| 欧美成人午夜精品免费| 免费在线观看成人| 热久久最新网址| 精品综合久久88少妇激情| 日韩av电影中文字幕| 97在线观看免费观看高清 | 欧美精品日本| 久久久久九九九| 久久精品国产福利| 欧美激情xxxx| 可以免费看污视频的网站在线| 欧美日韩国产三级| 国产无码精品在线播放| 国产女人18毛片水真多成人如厕 | 美女黄色丝袜一区| 三级视频在线看| 欧美日韩午夜在线视频| 国产亚洲精品女人久久久久久| 97aⅴ精品视频一二三区| 激情视频免费网站| 在线亚洲自拍| 中文字幕色一区二区| 欧美午夜寂寞| 亚洲free性xxxx护士hd| 26uuu亚洲电影| 欧美精品日韩三级| 极品白浆推特女神在线观看 | www亚洲色图| 国产风韵犹存在线视精品| 亚洲熟女乱色一区二区三区| 国产精品成人一区二区不卡| 极品校花啪啪激情久久| www一区二区三区| 日本国产欧美一区二区三区| 1769免费视频在线观看| 永久免费看mv网站入口亚洲| 欧美一级做性受免费大片免费| 欧美日韩黄色影视| 精品成人av一区二区在线播放| 国产精品不卡在线| 亚洲永久精品ww.7491进入| 国产成人av电影在线观看| 亚洲36d大奶网| 欧美亚洲免费| 欧美性生活一区| 你懂的在线观看网站| 麻豆精品国产91久久久久久| 欧美精品99久久| 国产精品theporn| 亚洲一区二区在线免费观看| 亚洲第一二三区| 国产成人免费观看| 免费精品一区| 国产欧美精品一区二区三区介绍 | 99精品全国免费观看视频软件| 久久波多野结衣| jazzjazz国产精品麻豆| 亚洲一区二区自拍| 91麻豆精品一二三区在线| 国产精品美女久久久久久免费| 日产福利视频在线观看| 国模吧一区二区三区| 人妖欧美1区| 欧美成人三级视频网站| caoporn免费在线| 深夜成人在线观看| av在线之家电影网站| 亚洲欧美一区二区三区四区 | 欧美精品videos| 永久免费网站在线| 欧美精品免费播放| 欧美bbbxxxxx| 欧美精品久久久久久久久| 69成人在线| 欧美国产乱视频| 污片视频在线免费观看| 欧美日韩第一视频| 黄色美女视频在线观看| 久久久久久久久久久久久久久久久久av | 99热精品一区二区| 熟妇高潮精品一区二区三区| 99久久er热在这里只有精品66| 91超薄肉色丝袜交足高跟凉鞋| 国产成人免费在线视频| 四虎永久免费观看| 成人av午夜电影| 青青草视频成人| 26uuu国产日韩综合| av黄色在线免费观看| 日本一区二区成人| 波多野结衣在线网址| 亚洲综合精品自拍| 亚洲视频免费播放| 日韩欧美亚洲一二三区| 在线视频精品免费| 欧美精选一区二区| 亚洲乱色熟女一区二区三区| 亚洲国产欧美自拍| 国产高清视频在线播放| 久久久精品久久久久| 成人福利影视| 国产激情视频一区| 国产va免费精品观看精品| 99一区二区| 九九综合在线| 中文一区一区三区免费| 国产精品分类| 日韩久久一级片| 精品亚洲porn| 无码成人精品区在线观看| 久久精品欧美日韩| 亚洲av鲁丝一区二区三区| 婷婷夜色潮精品综合在线| 国产精品第六页| 欧美一区日本一区韩国一区| 五月婷婷激情在线| 日韩中文字幕国产精品| 国产精品高颜值在线观看| 国产精品嫩草影院久久久| japanese色系久久精品| 亚洲v欧美v另类v综合v日韩v| 中文字幕一区二区三三| 欧美日韩亚洲一二三| 国产一区二区三区高清播放| 久久无码人妻精品一区二区三区| 国产精品色噜噜| 特一级黄色大片| 欧美福利视频导航| 欧洲伦理片一区 二区 三区| 久久最新资源网| 成人在线视频播放| 国产亚洲欧美另类一区二区三区| 日韩精品免费一区二区三区| 男女视频网站在线观看| 国产自产高清不卡| 欧美狂猛xxxxx乱大交3| 亚洲一区中文日韩| 国产又黄又猛又爽| 亚洲人成电影网站色…| 菠萝蜜视频在线观看www入口| 国产一区在线播放| 中国av一区| 国产无限制自拍| 国产毛片精品视频| 99久久久无码国产精品不卡| 日韩欧美国产骚| 丰满肥臀噗嗤啊x99av| www.精品av.com| 亚洲爱爱视频| 玛丽玛丽电影原版免费观看1977 | 香蕉乱码成人久久天堂爱免费| 亚洲一二区视频| 亚洲人成毛片在线播放| 黄色在线免费观看网站| 成人欧美一区二区| 欧美日本亚洲韩国国产| 国产aⅴ爽av久久久久| 国产精品午夜电影| 69xxxx国产| 亚洲欧美国内爽妇网| 欧美大胆性生话| 老司机精品福利在线观看| 日韩午夜高潮| 三级视频网站在线观看| 午夜精品久久久久久久蜜桃app| 精品人妻伦一二三区久久| 久久精品久久久久| 亚洲免费看片| 天天做天天爱天天高潮| 久99久精品视频免费观看| 欧日韩不卡视频| 欧美日韩国产乱码电影| 日本在线观看免费| 成人h猎奇视频网站| 亚洲欧美在线专区| 精产国品一二三区| 亚洲在线免费播放| 欧美一级视频免费| 欧美一级电影在线| 色综合中文网| 中文字幕亚洲乱码| 一色桃子久久精品亚洲| 国产又粗又猛又爽又黄的| 欧美成人精品影院| 国产精品色呦| 久久美女福利视频| 国产亲近乱来精品视频| 在线免费看av片| 免费97视频在线精品国自产拍| 日韩精品一区二区三区中文在线 | 亚洲国产欧美一区二区丝袜黑人 | 国产精品视频福利| 一区三区视频| 亚洲第一页av| 欧美三级日韩在线| 18videosex性欧美麻豆| 国产日韩一区欧美| 久久综合婷婷| 熟女av一区二区| 精品成人一区二区| 一级毛片久久久| 天天综合中文字幕| 国产999精品久久| 欧美一区免费看| 久久久999成人| 精品亚洲自拍| 簧片在线免费看| 玉足女爽爽91| 欧美91精品久久久久国产性生爱| 国产精品一区二区三区成人| 欧美1级日本1级| a毛片毛片av永久免费| 777亚洲妇女| 极品视频在线| 一区二区三区四区| 99久久国产综合精品色伊| 亚洲天堂777| 国模精品视频一区二区| 久久精品不卡| 日韩aaaaa| 欧美日韩高清影院| 亚洲v.com| 日本大胆人体视频| 国产精品人成在线观看免费| 亚洲成a人片77777精品| 国产精品美女免费看| 在线 亚洲欧美在线综合一区| 夜夜春很很躁夜夜躁| 亚洲国产精品久久久久久| 国产亚洲欧美日韩精品一区二区三区| 日韩一二区视频| 中文字幕第一区| 天天综合天天色| 亚洲最大福利网| 日本午夜精品视频在线观看| www.国产成人|