<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        CSS頁面渲染優化屬性will-change

        來源:懂視網 責編:小采 時間:2020-11-27 18:53:11
        文檔

        CSS頁面渲染優化屬性will-change

        CSS頁面渲染優化屬性will-change:前面的話。當我們通過某些行為(點擊、移動或滾動)觸發頁面進行大面積繪制的時候,瀏覽器往往是沒有準備的,只能被動使用CPU去計算與重繪,由于沒有事先準備,應付渲染夠嗆,于是掉幀卡頓。而CSS屬性will-change為web開發者提供了一種告知瀏覽器該元素會有哪
        推薦度:
        導讀CSS頁面渲染優化屬性will-change:前面的話。當我們通過某些行為(點擊、移動或滾動)觸發頁面進行大面積繪制的時候,瀏覽器往往是沒有準備的,只能被動使用CPU去計算與重繪,由于沒有事先準備,應付渲染夠嗆,于是掉幀卡頓。而CSS屬性will-change為web開發者提供了一種告知瀏覽器該元素會有哪

        前面的話

        ??當我們通過某些行為(點擊、移動或滾動)觸發頁面進行大面積繪制的時候,瀏覽器往往是沒有準備的,只能被動使用CPU去計算與重繪,由于沒有事先準備,應付渲染夠嗆,于是掉幀卡頓。而CSS屬性will-change為web開發者提供了一種告知瀏覽器該元素會有哪些變化的方法,這樣瀏覽器可以在元素屬性真正發生變化之前提前做好對應的優化準備工作。這種優化可以將一部分復雜的計算工作提前準備好,使頁面的反應更為快速靈敏。本文將介紹CSS屬性will-change

        準備知識

        ??GPU是圖形處理器,專門處理和繪制圖形相關的硬件。GPU是專為執行復雜的數學和幾何計算而設計的,使得CPU從圖形處理的任務中解放出來,可以執行其他更多的系統任務

        ??所謂硬件加速,就是在計算機中把計算量非常大的工作分配給專門的硬件來處理,減輕CPU的工作量

        ??CSS的動畫、變形、漸變并不會自動觸發GPU加速,而是使用瀏覽器稍慢的軟件渲染引擎。在transition、transformanimation的世界里,應該卸載進程到GPU以加速速度。只有3D變形會有自己的layer,而2D變形則不會

        【Hack】

        ??使用translateZ()translate3d()方法為元素添加沒有變化的3D變形,騙取瀏覽器觸發硬件加速。但是,代價是這種情況通過向它自己的層疊加元素,占用了RAM和GPU的存儲空間,且無法確定空間釋放時間

        語法

        will-change

        ??功能: 提前通知瀏覽器元素將要做什么動畫,讓瀏覽器提前準備合適的優化設置

        ??值: auto | <animateable-feature>

        ??初始值: auto

        ??應用于: 所有元素

        ??繼承性: 無

        ??兼容性: IE13+、chrome49+、safari9.1+、IOS9.3+、Android52+

        ??auto表示沒有特別指定哪些屬性會變化,瀏覽器需要自己去猜,然后使用瀏覽器經常使用的一些常規方法優化

        ??<animateable-feature>可以是以下值:

        ??scroll-position表示開發者希望在不久后改變滾動條的位置或者使之產生動畫

        ??contents表示開發者希望在不久后改變元素內容中的某些東西,或者使它們產生動畫

        ??<custom-ident>表示開發者希望在不久后改變指定的屬性名或者使之產生動畫。如果屬性名是簡寫,則代表所有與之對應的簡寫或者全寫的屬性

        使用

        【使用hover】

        ??不要像下面這樣直接寫在默認狀態中,因為will-change會一直掛著:

        .will-change {
         will-change: transform;
         transition: transform 0.3s;
        }
        .will-change:hover {
         transform: scale(1.5);
        }

        ??可以讓父元素hover的時候,聲明will-change,這樣,移出的時候就會自動remove,觸發的范圍基本上是有效元素范圍

        .will-change-parent:hover .will-change {
         will-change: transform;
        }
        .will-change {
         transition: transform 0.3s;
        }
        .will-change:hover {
         transform: scale(1.5);
        }

        【使用javascript腳本】

        .sidebar {
         will-change: transform;
        }

        ??以上示例在樣式表中直接添加了will-change屬性,會導致瀏覽器將對應的優化工作一直保存在內存中,這其實是不必要的。下面展示如何使用腳本正確地應用will-change屬性

        var el = document.getElementById('element');
        // 當鼠標移動到該元素上時給該元素設置 will-change 屬性
        el.addEventListener('mouseenter', hintBrowser);
        // 當 CSS 動畫結束后清除 will-change 屬性
        el.addEventListener('animationEnd', removeHint);
        function hintBrowser() {
         // 填寫在CSS動畫中發生改變的CSS屬性名
         this.style.willChange = 'transform, opacity';
        }
        function removeHint() {
         this.style.willChange = 'auto';
        }

        【直接使用】

        ??但是,如果某個應用在按下鍵盤的時候會翻頁,比如相冊或者幻燈片一類,它的頁面很大很復雜,此時在樣式表中寫上will-change是合適的。這會使瀏覽器提前準備好過渡動畫,當鍵盤按下的時候就能即看到靈活輕快的動畫

        .slide {
         will-change: transform;
        }

        注意事項

        ??1、不要將will-change應用到太多元素上:瀏覽器已經盡力嘗試去優化一切可以優化的東西了。有一些更強力的優化,如果與will-change結合在一起的話,有可能會消耗很多機器資源,如果過度使用的話,可能導致頁面響應緩慢或者消耗非常多的資源

        ??2、有節制地使用:通常,當元素恢復到初始狀態時,瀏覽器會丟棄掉之前做的優化工作。但是如果直接在樣式表中顯式聲明了will-change屬性,則表示目標元素可能會經常變化,瀏覽器會將優化工作保存得比之前更久。所以最佳實踐是當元素變化之前和之后通過腳本來切換will-change的值

        ??3、不要過早應用will-change優化:如果頁面在性能方面沒什么問題,則不要添加will-change屬性來榨取一丁點的速度。will-change的設計初衷是作為最后的優化手段,用來嘗試解決現有的性能問題。它不應該被用來預防性能問題。過度使用will-change會導致大量的內存占用,并會導致更復雜的渲染過程,因為瀏覽器會試圖準備可能存在的變化過程。這會導致更嚴重的性能問題

        ??4、給它足夠的工作時間:這個屬性是用來讓頁面開發者告知瀏覽器哪些屬性可能會變化的。然后瀏覽器可以選擇在變化發生前提前去做一些優化工作。所以給瀏覽器一點時間去真正做這些優化工作是非常重要的。使用時需要嘗試去找到一些方法提前一定時間獲知元素可能發生的變化,然后為它加上will-change屬性

        更多CSS頁面渲染優化屬性will-change 相關文章請關注PHP中文網!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        CSS頁面渲染優化屬性will-change

        CSS頁面渲染優化屬性will-change:前面的話。當我們通過某些行為(點擊、移動或滾動)觸發頁面進行大面積繪制的時候,瀏覽器往往是沒有準備的,只能被動使用CPU去計算與重繪,由于沒有事先準備,應付渲染夠嗆,于是掉幀卡頓。而CSS屬性will-change為web開發者提供了一種告知瀏覽器該元素會有哪
        推薦度:
        標簽: 屬性 優化 css
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲午夜精品第一区二区8050| 插B内射18免费视频| 亚洲伊人成无码综合网| 亚洲av无码成人影院一区| 无码视频免费一区二三区| 亚洲AV无码无限在线观看不卡| 免费看污成人午夜网站| 亚洲女人18毛片水真多| 亚洲国产成人精品女人久久久 | a级毛片在线免费看| 久久久久无码专区亚洲av| 国产大片免费天天看| 亚洲宅男天堂在线观看无病毒| 亚洲毛片免费视频| 黄页网站在线看免费| 亚洲中文字幕无码亚洲成A人片 | 免费a在线观看播放| 久久久久亚洲AV无码专区首JN| 最近中文字幕mv免费高清视频8| 亚洲日本在线播放| 天天摸天天操免费播放小视频| 美景之屋4在线未删减免费| 免费人成网站在线观看10分钟| 亚洲中文字幕久久精品蜜桃| 午夜亚洲av永久无码精品| 国产精品九九久久免费视频| 亚洲精品在线观看视频| 成人在线视频免费| 一级毛片在线免费播放| 亚洲尹人九九大色香蕉网站| 成年网站免费视频A在线双飞| 美女扒开屁股让男人桶爽免费| 亚洲午夜福利在线观看| 妻子5免费完整高清电视| 亚洲Av无码国产一区二区| 亚洲国产精品乱码一区二区 | 国产成人yy免费视频| mm1313亚洲国产精品无码试看| 国产偷国产偷亚洲清高动态图| 69av免费视频| 亚洲精品视频在线观看免费|