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

CSS 新特性 contain,控制頁面的重繪與重排

開發 前端
contain 屬性允許我們指定特定的 DOM 元素和它的子元素,讓它們能夠獨立于整個 DOM 樹結構之外。目的是能夠讓瀏覽器有能力只對部分元素進行重繪、重排,而不必每次都針對整個頁面。

[[396399]]

在介紹新的 CSS 屬性 contain 之前,需要讀者已經知道什么是頁面的重繪與重排。

發現之前已經描述過很多次了,可以看看這個提高 CSS 動畫性能的正確姿勢[1]

OK,下面進入本文正題,

contain 為何?

contain 屬性允許我們指定特定的 DOM 元素和它的子元素,讓它們能夠獨立于整個 DOM 樹結構之外。目的是能夠讓瀏覽器有能力只對部分元素進行重繪、重排,而不必每次都針對整個頁面。

  • The contain property allows an author to indicate that an element and its contents are, as much as possible, independent of the rest of the document tree. This allows the browser to recalculate layout, style, paint, size, or any combination of them for a limited area of the DOM and not the entire page.

contain 語法

看看它的語法:

  1.   /* No layout containment. */ 
  2.   contain: none; 
  3.   /* Turn on containment for layout, style, paint, and size. */ 
  4.   contain: strict; 
  5.   /* Turn on containment for layout, style, and paint. */ 
  6.   contain: content; 
  7.   /* Turn on size containment for an element. */ 
  8.   contain: size
  9.   /* Turn on layout containment for an element. */ 
  10.   contain: layout; 
  11.   /* Turn on style containment for an element. */ 
  12.   contain: style; 
  13.   /* Turn on paint containment for an element. */ 
  14.   contain: paint; 

除去 none,取值還有 6 個,我們一個一個來看看。

contain: size

contain: size: 設定了 contain: size 的元素的渲染不會受到其子元素內容的影響。

  • The value turns on size containment for the element. This ensures that the containing box can be laid out without needing to examine its descendants.

我開始看到這個定義也是一頭霧水,光看定義很難明白到底是什么意思。還需實踐一番:

假設我們有如下簡單結構:

  1. <div class="container"
  2.     
  3. </div> 
  1. .container { 
  2.     width: 300px; 
  3.     padding: 10px; 
  4.     border: 1px solid red; 
  5.  
  6. p { 
  7.     border: 1px solid #333; 
  8.     margin: 5px; 
  9.     font-size: 14px; 

并且,借助 jQuery 實現每次點擊容器添加一個 <p>Coco</p> 結構:

  1. $('.container').on('click', e => { 
  2.     $('.container').append('<p>Coco</p>'
  3. }) 

那么會得到如下結果:

 å›¾ç‰‡

可以看到,容器 .container 的高度是會隨著元素的增加而增加的,這是正常的現象。

此刻,我們給容器 .container 添加一個 contain: size,也就會出現上述說的:設定了 contain: size 的元素的渲染不會受到其子元素內容的影響。

  1. .container { 
  2.     width: 300px; 
  3.     padding: 10px; 
  4.     border: 1px solid red; 
  5. +   contain: size 

再看看會發生什么:

图片

正常而言,父元素的高度會因為子元素的增多而被撐高,而現在,子元素的變化不再影響父元素的樣式布局,這就是 contain: size 的作用。

contain: style

接下來再說說 contain: style、contain: layout 、contain: paint。先看看 contain: style。

截止至本文書寫的過程中,contain: style 暫時被移除了。

  • CSS Containment Module Level 1[2]: Drop the at-risk “style containment” feature from this specification, move it Level 2。

嗯,官方說辭是因為存在某些風險,暫時被移除,可能在規范的第二版會重新定義吧,那這個屬性也暫且放一放。

contain: paint

contain: paint:設定了 contain: paint 的元素即是設定了布局限制,也就是說告知 User Agent,此元素的子元素不會在此元素的邊界之外被展示,因此,如果元素不在屏幕上或以其他方式設定為不可見,則還可以保證其后代不可見不被渲染。

  • This value turns on paint containment for the element. This ensures that the descendants of the containing box don’t display outside its bounds, so if an element is off-screen or otherwise not visible, its descendants are also guaranteed to be not visible.

這個稍微好理解一點,先來看第一個特性:

設定了 contain: paint 的元素的子元素不會在此元素的邊界之外被展示

  • 設定了 contain: paint 的元素的子元素不會在此元素的邊界之外被展示

這個特點有點類似與 overflow: hidden,也就是明確告知用戶代理,子元素的內容不會超出元素的邊界,所以超出部分無需渲染。

簡單示例,假設元素結構如下:

  1. <div class="container"
  2.     <p>Coco</p> 
  3. </div> 
  1. .container { 
  2.     contain: paint; 
  3.     border: 1px solid red; 
  4.  
  5. p{ 
  6.     left: -100px; 

我們來看看,設定了 contain: paint 與沒設定時會發生什么:

 å›¾ç‰‡

CodePen Demo -- contain: paint Demo[3]

設定了 contain: paint 的元素在屏幕之外時不會渲染繪制

通過使用 contain: paint, 如果元素處于屏幕外,那么用戶代理就會忽略渲染這些元素,從而能更快的渲染其它內容。

contain: layout

contain: layout:設定了 contain: layout 的元素即是設定了布局限制,也就是說告知 User Agent,此元素內部的樣式變化不會引起元素外部的樣式變化,反之亦然。

  • This value turns on layout containment for the element. This ensures that the containing box is totally opaque for layout purposes; nothing outside can affect its internal layout, and vice versa.

啟用 contain: layout 可以潛在地將每一幀需要渲染的元素數量減少到少數,而不是重新渲染整個文檔,從而為瀏覽器節省了大量不必要的工作,并顯著提高了性能。

使用 contain:layout,開發人員可以指定對該元素任何后代的任何更改都不會影響任何外部元素的布局,反之亦然。

因此,瀏覽器僅計算內部元素的位置(如果對其進行了修改),而其余DOM保持不變。因此,這意味著幀渲染管道中的布局過程將加快。

存在的問題

描述很美好,但是在實際 Demo 測試的過程中(截止至2021/04/27,Chrome 90.0.4430.85),僅僅單獨使用 contain:layout 并沒有驗證得到上述那么美好的結果。

設定了 contain: layout 的指定元素,改元素的任何后代的任何更改還是會影響任何外部元素的布局,點擊紅框會增加一條<p>Coco<p>元素插入到 container 中:

簡單的代碼如下:

  1. <div class="container"
  2.     <p>Coco</p> 
  3.     ... 
  4. </div> 
  5. <div class="g-test"></div> 
  1. html, 
  2. body { 
  3.     width: 100%; 
  4.     height: 100%; 
  5.     display: flex; 
  6.     justify-content: center; 
  7.     align-items: center; 
  8.     flex-direction: column
  9.     gap: 10px; 
  10.  
  11. .container { 
  12.     width: 150px; 
  13.     padding: 10px; 
  14.     contain: layout; 
  15.     border: 1px solid red; 
  16.  
  17. .g-test { 
  18.     width: 150px; 
  19.     height: 150px; 
  20.     border: 1px solid green; 

图片

 

CodePen Demo -- contain: layout Demo[4]

Can i Use -- CSS Contain

截止至 2021-04-27,Can i Use 上的 CSS Contain 兼容性,已經可以開始使用起來:

參考文獻

  • CSS Containment Module Level 1[5]
  • CSS containment[6]
  • CSS Containment in Chrome 52[7]

最后

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

更多精彩 CSS 技術文章匯總在我的 Github -- iCSS[8] ,持續更新,歡迎點個 star 訂閱收藏。

如果還有什么疑問或者建議,可以多多交流,原創文章,文筆有限,才疏學淺,文中若有不正之處,萬望告知。

參考資料

[1]提高 CSS 動畫性能的正確姿勢:

https://github.com/chokcoco/iCSS/issues/11

[2]CSS Containment Module Level 1:

https://www.w3.org/TR/css-contain-1/

[3]CodePen Demo -- contain: paint Demo:

https://codepen.io/Chokcoco/pen/KKwmgmN

[4]CodePen Demo -- contain: layout Demo:

https://codepen.io/Chokcoco/pen/rNjRELL

[5]CSS Containment Module Level 1:

https://www.w3.org/TR/css-contain-1/

[6]CSS containment:

https://justmarkup.com/articles/2016-04-05-css-containment/

[7]CSS Containment in Chrome 52:

https://developers.google.com/web/updates/2016/06/css-containment

[8]Github -- iCSS:

https://github.com/chokcoco/iCSS

 

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

2013-08-27 14:23:18

瀏覽器重繪

2015-08-11 09:46:26

JavaScriptDOM編程重排

2018-11-14 19:30:57

前端Javascript性能優化

2013-11-20 14:09:37

重繪重排瀏覽器

2022-03-16 09:02:46

渲染路徑瀏覽器重排和重繪

2021-03-04 20:13:47

Windows 10Windows操作系統

2011-04-25 10:11:57

高性能web開發

2023-12-11 09:02:27

CSS前端CSS 新特性

2015-07-06 09:46:21

AeroGearAndroid推送

2011-08-04 17:36:24

iPhone 重繪 繪圖

2011-08-30 09:07:30

HTML 5

2024-09-25 16:31:02

2020-04-21 14:00:25

HTMLCSSJS

2010-01-05 09:26:13

.NET 4.0

2011-08-16 19:02:23

iPhone開發繪圖

2010-06-23 15:29:52

Eclipse 3.6Java

2025-05-19 08:15:00

ChromeCSS輪播特效

2011-11-18 13:25:48

HTML 5

2023-04-14 16:45:21

CSS前端CSS3

2013-11-20 14:25:45

瀏覽器重繪
點贊
收藏

51CTO技術棧公眾號

国产精品一区二区久久久| 日韩av综合网站| 亚洲福利av| 999av视频| 国产亚洲网站| 最新日韩中文字幕| 欧美日韩人妻精品一区在线| 欧美黑人疯狂性受xxxxx野外| 国产精品色眯眯| 国产高清精品一区二区三区| 欧美超碰在线观看| 欧美韩日精品| 中国人与牲禽动交精品| 日批免费观看视频| 成人久久网站| 调教+趴+乳夹+国产+精品| 色中文字幕在线观看| 亚洲日本在线播放| 精品一区二区三区在线视频| 98精品在线视频| 四虎永久免费在线| 欧美自拍偷拍| 亚洲美女性视频| avtt中文字幕| 成人国产激情| 一本色道a无线码一区v| 奇米影视亚洲色图| 成人日日夜夜| 国产精品久久综合| 免费毛片一区二区三区久久久| va婷婷在线免费观看| 美女www一区二区| 欧洲亚洲女同hd| 日韩精品成人在线| 亚洲视频狠狠| 欧美日韩国产91| 亚洲AV成人无码精电影在线| 国产欧美日韩免费观看| 日韩av综合网站| 艳妇乳肉亭妇荡乳av| av成人资源| 日韩免费看网站| 欧美性猛交xxxx乱大交91| av成人免费看| 在线观看日韩毛片| 欧美日韩怡红院| 3d性欧美动漫精品xxxx软件| 欧美视频中文在线看| 日本www在线播放| 国产无遮挡裸体视频在线观看| 亚洲一区二区偷拍精品| 久久久无码中文字幕久...| 免费看美女视频在线网站 | 久久久久久久久久久久久久久| 欧美在线关看| 亚洲码在线观看| 亚洲做受高潮无遮挡| 偷拍一区二区| 亚洲色无码播放| 中国女人特级毛片| 久久一区二区三区喷水| 久久精品国产一区二区电影| 最新av电影网站| 一本一本久久a久久综合精品| 日韩一区二区三区在线播放| 中国一级片在线观看| 五月激情综合| 欧美激情精品久久久| 国产一级二级三级视频| 一本久道久久综合婷婷鲸鱼| 日本久久91av| 一级片在线免费观看视频| 韩国毛片一区二区三区| 国产精品乱码| 狠狠v欧美ⅴ日韩v亚洲v大胸| 国产清纯在线一区二区www| 亚洲 欧洲 日韩| 亚洲91av| 色乱码一区二区三区88| 色播五月综合网| 一区二区视频| 国产丝袜一区视频在线观看| 亚洲欧美va天堂人熟伦| 欧美1区3d| 69国产精品成人在线播放| 国产精品第5页| 麻豆精品国产传媒mv男同| 亚洲综合精品伊人久久| 青青草在线免费观看| 综合久久综合久久| 亚洲欧洲日产国码无码久久99 | 欧美日韩网址| 日本一区二区三区四区视频| 亚洲国产无线乱码在线观看| 国产盗摄女厕一区二区三区| 久久久久久久免费| 国产激情在线| 91精品91久久久中77777| 久久久久久久久久毛片| 免费视频亚洲| 欧美人与物videos| 69视频免费看| www.av亚洲| 亚洲一区二区在| 国内精彩免费自拍视频在线观看网址| 在线观看成人小视频| 性猛交╳xxx乱大交| 精品日本12videosex| 欧美精品国产精品日韩精品| 中文字幕福利视频| www成人在线观看| 欧美日韩dvd| 久久免费资源| 亚洲欧美日韩精品久久奇米色影视| 538任你躁在线精品视频网站| 首页国产欧美日韩丝袜| 国产精品一区视频网站| 黄色的网站在线观看| 在线观看一区日韩| 懂色av粉嫩av蜜乳av| 欧美精品日韩| 成人女保姆的销魂服务| 国产女主播在线直播| 亚洲第一狼人社区| 欧美xxxxxbbbbb| 日韩国产一区二区| 日本aⅴ大伊香蕉精品视频| 丰满岳乱妇国产精品一区| 国产精品久久久久久亚洲毛片| 无码人妻h动漫| 成人福利一区| 欧美精品18videos性欧| 国产免费的av| 日韩理论片网站| 亚洲天堂2018av| 波多野结衣在线播放一区| 欧美性一区二区三区| 熟妇人妻av无码一区二区三区| 亚洲免费观看高清完整| 三级av免费看| 五月天久久久| 成人免费午夜电影| 精品视频在线一区二区| 欧美日韩成人综合在线一区二区| 在线观看免费小视频| 日韩av午夜在线观看| 日韩国产欧美精品| 在线看欧美视频| 国产亚洲精品久久久久久牛牛| 69视频免费看| 国产精品久久久久久久久免费丝袜| wwwwxxxx日韩| 999国产精品永久免费视频app| 国产精品亚洲欧美导航| 日韩免费啪啪| 欧美一区二区精品| 中文字幕影音先锋| 国产成人综合在线观看| 精品免费久久久久久久| 粉嫩一区二区三区四区公司1| 欧美激情a∨在线视频播放| 亚洲精品无码专区| 欧美日韩美女在线观看| 毛片网站免费观看| 麻豆精品新av中文字幕| 老汉色影院首页| www.国产精品一区| 青青草99啪国产免费| av一区在线观看| 日韩午夜激情免费电影| 久久久久久久久久久网| av网站免费线看精品| 少妇高清精品毛片在线视频| 日本高清免费电影一区| 亚洲综合小说区| 热色播在线视频| 一本色道久久综合亚洲精品小说 | 免费中文字幕视频| 91在线视频在线| 午夜国产一区二区三区| 永久91嫩草亚洲精品人人| 国产精品一级久久久| 少妇一区视频| 欧美精品手机在线| 欧美18xxxxx| 日韩西西人体444www| 在线免费黄色av| 亚洲视频综合在线| 疯狂揉花蒂控制高潮h| 看国产成人h片视频| 蜜桃传媒一区二区三区| 色天天综合网| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 国产三区在线成人av| 成人在线短视频| 久久大逼视频| 国产女教师bbwbbwbbw| 国产精品视频一区二区三区四蜜臂| 国产在线精品一区免费香蕉| 深夜在线视频| 久久福利网址导航| 国产美女性感在线观看懂色av| 日韩精品综合一本久道在线视频| 蜜臀精品一区二区三区| 一区二区三区在线播放| 日本污视频网站| av在线播放一区二区三区| 国内国产精品天干天干| 亚洲免费中文| 青青在线视频免费观看| 青青一区二区三区| 国产综合欧美在线看| 国产精品视频一区二区三区| 欧美资源在线观看| 好看的中文字幕在线播放| 色妞一区二区三区| 久草在现在线| 亚洲精品福利在线| 精品久久久无码中文字幕| 欧美中文字幕一区| 亚洲黄色免费观看| 亚洲成va人在线观看| 午夜免费激情视频| 亚洲欧美综合网| 成年人视频软件| 久久久精品免费免费| 久久久久久久久免费看无码 | 欧美三级午夜理伦三级中视频| 中文字幕一区二区三区精品 | 久久人人爽人人爽人人av| 婷婷成人基地| 一区二区不卡在线视频 午夜欧美不卡'| 最新国产精品视频| 久久影院理伦片| 欧美a级网站| 国外成人在线视频网站| 亚洲日本va| 97操在线视频| 亚洲三级av| 91在线直播亚洲| 国产精品xnxxcom| 成人在线精品视频| 亚洲精品伊人| 95av在线视频| 综合激情五月婷婷| 国产精品区一区二区三在线播放 | 久久人体大尺度| 日本亚洲欧洲色| 日韩精品三区| 国产精品电影网站| 欧美亚洲综合视频| 亚洲一区二区久久久久久| 国产95亚洲| 国产v亚洲v天堂无码| 高清精品视频| 老牛影视免费一区二区| 国产99精品| 性欧美.com| 五月天综合网站| 国产精品自拍合集| 妖精视频成人观看www| 欧美a在线视频| 久久综合婷婷| 91高清国产视频| 国产盗摄精品一区二区三区在线| 五月天丁香社区| 91免费在线视频观看| 中文字幕免费视频| 亚洲人成精品久久久久久| 国产亚洲精品久久777777| 精品久久久久久亚洲精品| 伊人中文字幕在线观看| 欧美日韩免费观看一区三区| 国产99久久九九精品无码免费| 亚洲精品在线三区| 免费人成在线观看网站| 日韩视频精品在线| 91九色国产在线播放| 国产成人综合精品| 久久99成人| 明星裸体视频一区二区| 99热国内精品| 男人日女人下面视频| 蜜臀99久久精品久久久久久软件| 亚洲911精品成人18网站| 久久久精品综合| 国产va在线播放| 一本色道**综合亚洲精品蜜桃冫| 99国产精品一区二区三区| 日韩国产精品视频| www免费在线观看| 国产成人亚洲综合91精品| 国产日韩欧美中文在线| 麻豆亚洲一区| 欧美精品18| 国产又猛又黄的视频| 成人性生交大片免费看视频在线| 人妻少妇无码精品视频区| 亚洲综合视频网| 国产精品欧美综合| 亚洲福利小视频| 免费观看成人高潮| 欧美综合国产精品久久丁香| 成人污版视频| 日韩aⅴ视频一区二区三区| 影音国产精品| 天天操精品视频| 中文字幕免费观看一区| 日韩精品无码一区二区| 91精品国产入口| 91美女视频在线| 欧美一区二区三区免费观看| 久久伊人影院| 一本色道婷婷久久欧美| 久久av一区| 国产精品久久不卡| 亚洲国产一区视频| 国产麻豆91视频| 在线看欧美日韩| 国产精品高清乱码在线观看| 久久精品二区| 亚洲精品1区| 精品久久久久久无码人妻| ●精品国产综合乱码久久久久| 欧美亚洲另类小说| 亚洲欧美日韩精品久久| 九九精品调教| 99精彩视频| 亚洲区综合中文字幕日日| 国产色视频在线播放| 国产午夜精品美女毛片视频| 黄色一级视频免费看| 亚洲视屏在线播放| 手机看片久久| 色噜噜一区二区| 日日噜噜夜夜狠狠视频欧美人| 超碰97在线资源站| 精品久久久在线观看| 无码国产色欲xxxx视频 | 日韩中文在线播放| 日韩wuma| 六月丁香婷婷色狠狠久久| 91ts人妖另类精品系列| 欧美色图片你懂的| 视频免费一区| 成人久久18免费网站图片| 亚洲成人一区| 无码人妻久久一区二区三区蜜桃| 亚洲精品国产一区二区精华液| 国产av无码专区亚洲av| 欧美日韩高清在线观看| 国产精品对白| 久久久999视频| 久久午夜国产精品| 亚洲精品无码久久久久| 在线看日韩欧美| 国产日本亚洲| 日本a在线免费观看| 26uuu国产在线精品一区二区| 中文字幕高清在线免费播放| 国产亚洲欧美日韩美女| 日日夜夜亚洲| 777久久精品一区二区三区无码| 成av人片一区二区| 日本a级c片免费看三区| 中文字幕亚洲字幕| 日韩精品中文字幕吗一区二区| 欧美在线一区视频| 久久精品亚洲一区二区三区浴池| 影音先锋国产在线| 欧美成人性生活| 欧美成a人免费观看久久| 欧美 日韩精品| 国产精品久久久久久久浪潮网站| 国产毛片毛片毛片毛片| 午夜免费日韩视频| 日韩专区精品| 国产人妖在线观看| 色伊人久久综合中文字幕| 免费在线观看黄色| 精品产品国产在线不卡| 麻豆91在线看| 日韩 欧美 精品| 三级精品视频久久久久| 豆花视频一区二区| 中文av一区二区三区| 亚洲v精品v日韩v欧美v专区| 北条麻妃在线| 成人欧美一区二区| 日韩 欧美一区二区三区| 青青青在线视频| 一本色道久久综合亚洲精品小说| 天堂精品在线视频| 午夜宅男在线视频| 同产精品九九九| 免费高清完整在线观看| 免费看成人午夜电影| 国产激情一区二区三区桃花岛亚洲| 亚洲国产成人无码av在线| 久久综合免费视频|