婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > CSS 新特性 contain控制頁面的重繪與重排問題

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

熱門標簽:農村住宅地圖標注 跟電銷機器人做同事 鄭州電銷外呼系統違法嗎 中紳電銷智能機器人 ai電銷機器人連接網關 漳州人工外呼系統排名 濟南辦理400電話 鶴壁手機自動外呼系統怎么安裝 威海營銷外呼系統招商

在介紹新的 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 pmited area of the DOM and not the entire page.contain 語法

看看它的語法:

{ 
  /* No layout containment. */ 
  contain: none; 
  /* Turn on containment for layout, style, paint, and size. */ 
  contain: strict; 
  /* Turn on containment for layout, style, and paint. */ 
  contain: content; 
  /* Turn on size containment for an element. */ 
  contain: size; 
  /* Turn on layout containment for an element. */ 
  contain: layout; 
  /* Turn on style containment for an element. */ 
  contain: style; 
  /* Turn on paint containment for an element. */ 
  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.

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

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

<div class="container"> 
    
</div> 
.container { 
    width: 300px; 
    padding: 10px; 
    border: 1px solid red; 
} 
 
p { 
    border: 1px solid #333; 
    margin: 5px; 
    font-size: 14px; 
} 

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

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

 

那么會得到如下結果:

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

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

.container { 
    width: 300px; 
    padding: 10px; 
    border: 1px solid red; 
+   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,也就是明確告知用戶代理,子元素的內容不會超出元素的邊界,所以超出部分無需渲染。

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

<div class="container"> 
    <p>Coco</p> 
</div>
.container { 
    contain: paint; 
    border: 1px solid red; 
} 
 
p{ 
    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 中:

簡單的代碼如下:

<div class="container"> 
    <p>Coco</p> 
    ... 
</div> 
<div class="g-test"></div> 
html, 
body { 
    width: 100%; 
    height: 100%; 
    display: flex; 
    justify-content: center; 
    align-items: center; 
    flex-direction: column; 
    gap: 10px; 
} 
 
.container { 
    width: 150px; 
    padding: 10px; 
    contain: layout; 
    border: 1px solid red; 
} 
 
.g-test { 
    width: 150px; 
    height: 150px; 
    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]

參考資料

[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

到此這篇關于CSS 新特性 contain控制頁面的重繪與重排的文章就介紹到這了,更多相關CSS 控制頁面的重繪與重排內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持腳本之家!

標簽:營口 紅河 咸陽 萍鄉 文山 甘南 蘇州 惠州

巨人網絡通訊聲明:本文標題《CSS 新特性 contain控制頁面的重繪與重排問題》,本文關鍵詞  CSS,新特性,新,特性,contain,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《CSS 新特性 contain控制頁面的重繪與重排問題》相關的同類信息!
  • 本頁收集關于CSS 新特性 contain控制頁面的重繪與重排問題的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    视频一区二区中文字幕| 大白屁股一区二区视频| 日本韩国一区二区三区| 久久国产尿小便嘘嘘尿| 亚洲免费观看高清完整版在线观看| 在线电影欧美成精品| 成人性生交大片免费 | 久久久久久9999| 欧美三电影在线| 99久久99久久久精品齐齐| 久久精品久久综合| 亚洲一二三区视频在线观看| 国产精品美女视频| 久久久久一区二区三区四区| 欧美www视频| 欧美精品乱码久久久久久| 日本丶国产丶欧美色综合| 亚洲一区二区视频在线观看| 欧美日韩一区二区在线观看| 国产一区二区在线观看免费| 亚洲一区二区三区四区在线免费观看| 欧美日韩一区二区三区视频| 看电视剧不卡顿的网站| 青娱乐精品视频在线| 国产欧美1区2区3区| 欧美电影影音先锋| 日本道精品一区二区三区| 精品亚洲成a人| 精品国产乱码久久久久久1区2区| 欧美精品一区二区三区四区 | 亚洲一区二区综合| 一级女性全黄久久生活片免费| 亚洲国产精品t66y| 国产一区二区美女诱惑| 久久成人久久爱| 加勒比av一区二区| 国产在线国偷精品产拍免费yy| 国产乱子伦视频一区二区三区| 精品综合久久久久久8888| 欧美综合亚洲图片综合区| 欧美日韩国产一区| 91精品欧美综合在线观看最新| 欧美三级视频在线| 欧美一区二区国产| 色香蕉成人二区免费| 国产丝袜美腿一区二区三区| 欧美刺激午夜性久久久久久久| 欧美一级片免费看| 欧美一区二区三区视频在线观看| 久久精品国产秦先生| 精品一区二区在线视频| 国产精品自在在线| 色婷婷国产精品综合在线观看| 欧美日韩aaa| 国产亚洲美州欧州综合国| 亚洲欧洲日韩一区二区三区| 亚洲品质自拍视频网站| 蜜桃视频一区二区三区在线观看| 国产精品一二三区| 91亚洲精品久久久蜜桃网站| 欧美电影在线免费观看| 国产欧美日韩三级| 亚洲第一久久影院| 国产麻豆视频一区| 色94色欧美sute亚洲线路一ni| 4438x亚洲最大成人网| 国产网红主播福利一区二区| 亚洲综合色在线| 国产精品1区2区| 欧美精品v国产精品v日韩精品| 国产精品日韩成人| 另类小说综合欧美亚洲| 91天堂素人约啪| 欧美电影免费观看高清完整版在线观看 | 91一区二区三区在线观看| 欧美精三区欧美精三区| 国产精品第一页第二页第三页| 一区二区激情视频| 国产成a人亚洲| 欧美片网站yy| 国产精品国产三级国产aⅴ中文| 日本午夜精品一区二区三区电影| 99视频精品全部免费在线| 日韩欧美三级在线| 亚洲一级电影视频| 丁香桃色午夜亚洲一区二区三区| 99在线精品观看| 国产精品乱码妇女bbbb| 91在线你懂得| 色综合久久综合网欧美综合网| 欧美精品一二三四| 亚洲综合一区二区| 91精品欧美一区二区三区综合在| 久久色中文字幕| 在线播放/欧美激情| 欧美韩国日本一区| 欧美电影影音先锋| 夜夜嗨av一区二区三区四季av| 国产麻豆精品95视频| 一区二区三区资源| 9191国产精品| www.性欧美| 国产精品色在线观看| www.欧美精品一二区| 一区二区三区在线播放| 欧美美女网站色| 成人av片在线观看| 三级成人在线视频| 欧美一区二区三区四区五区 | 亚洲麻豆国产自偷在线| 成人国产精品免费观看动漫| 欧美韩国日本综合| 成人看片黄a免费看在线| 亚洲黄色在线视频| 欧美日韩高清在线播放| 调教+趴+乳夹+国产+精品| 欧美理论片在线| 久久99精品久久久久| 亚洲激情男女视频| 国产免费成人在线视频| 91视频国产资源| 国产精品1024| 国产精品毛片久久久久久久| 日韩一区二区在线观看| 91久久精品日日躁夜夜躁欧美| 久久精品国产一区二区三区免费看 | 精品三级在线观看| 欧美日韩一区二区三区在线| 国产成人免费视频精品含羞草妖精| 一区二区不卡在线视频 午夜欧美不卡在| 色综合 综合色| 91麻豆国产精品久久| 色系网站成人免费| 国产人成亚洲第一网站在线播放| 99精品欧美一区二区三区综合在线| 亚洲二区视频在线| 中文字幕一区二区视频| 中文字幕精品在线不卡| 久久久精品黄色| 国产亚洲1区2区3区| 欧美精品一区二区蜜臀亚洲| 欧美一区二区三区四区高清| 日韩欧美一区二区在线视频| 精品1区2区3区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 久久99久久99精品免视看婷婷| 国产精品网站一区| 粉嫩久久99精品久久久久久夜| 日本中文字幕不卡| 亚洲一区在线观看视频| 午夜精品影院在线观看| 国产综合成人久久大片91| 成人av电影在线观看| 欧美综合久久久| 精品卡一卡二卡三卡四在线| 精品区一区二区| 亚洲男同1069视频| 三级在线观看一区二区| 免费在线观看成人| 麻豆精品视频在线| 国产精品系列在线播放| 在线观看亚洲精品视频| 欧美高清www午色夜在线视频| 91福利精品视频| 亚洲国产精品高清| 青青草视频一区| 成人午夜在线免费| 日韩一卡二卡三卡| 亚洲视频电影在线| 国产剧情一区二区| 欧美大片在线观看| 天天综合日日夜夜精品| 日本免费在线视频不卡一不卡二| 久久99精品国产麻豆婷婷| 蜜臀av一区二区在线观看| 97超碰欧美中文字幕| 国产精品日产欧美久久久久| 成人一区二区三区视频| xvideos.蜜桃一区二区| 国产一区二区三区黄视频| 欧美日韩亚洲综合一区二区三区| 欧美一区二区三区精品| 极品销魂美女一区二区三区| 精品蜜桃在线看| 国产麻豆午夜三级精品| 精品sm捆绑视频| 国内精品在线播放| 日韩欧美综合一区| 成人精品国产一区二区4080| 中文字幕欧美激情一区| 国产69精品久久久久毛片| 中文av一区二区| 欧美巨大另类极品videosbest| 亚洲线精品一区二区三区| 欧美白人最猛性xxxxx69交| 午夜成人免费视频| 国产精品日韩成人| 日韩精品一区二区三区swag| 日韩国产在线一| 久久久久久麻豆|