国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端小記4——高性能mobile web開發

番茄西紅柿 / 1642人閱讀

摘要:高性能動畫與端場景需要相比,移動端需要考慮的因素也相對復雜,重點考慮流量功耗與流暢度。而在移動端,我們選擇性能更優瀏覽器原生實現方案動畫。然而,動畫在移動多終端設備場景下,相比會面對更多的性能問題,主要體現在動畫的卡頓與閃爍。

1.高性能CSS3動畫

與PC端場景需要相比,移動web端需要考慮的因素也相對復雜,重點考慮:流量、功耗與流暢度。在pc端上考慮更多的是流暢度,而mobile web中需要考慮網絡流量的使用和耗電情況。

關于流暢度,在前端動畫中主要有兩種:JS動畫與CSS3動畫。

 JS動畫是通過JS動態改寫樣式實現動畫能力的一種方案,在PC端兼容低端瀏覽器中不失為一種推薦方案。 而在移動端,我們選擇性能更優瀏覽器原生實現方案:CSS3動畫。然而,CSS3動畫在移動多終端設備場景下,相比PC會面對更多的性能問題,主要體現在動畫的卡頓與閃爍。

提升CSS3動畫:

(1)盡量利用硬件能力,如使用3D變形來開啟GPU加速

-webkit-transform: translate3d(0,0,0);

-moz-transform: translate3d(0,0,0);

-ms-transform: translate3d(0,0,0);

transform: translate3d(0,0,0);

(2)動畫過程閃爍

通常發生在動畫開始,嘗試使用hack

-webkit-backface-visibility: hidden;

-moz-backface-visibility:hidden;

-ms-backface-visibility:hidden;

backface-visibility:hidden;

 

-webkit-perspective: 1000;

-moz-perspective: 1000;

-ms-perspective: 1000;

perspective: 1000;

 

(3)translate3d

一個元素通過translate3d右移500px的動畫流暢度高于使用left

#ball-2 {
  transition: left .5s ease;
  left: 0;
}
#ball-2.slidein {
  left: 500px;
}

#ball-1 {
  transition: -webkit-transform .5s ease;
  -webkit-transform: translate3d(0, 0, 0);
}
#ball-1.slidein {
  -webkit-transform: translate3d(500px, 0, 0);
}

注:3D變形會消耗更多的內存與功耗,應確實有性能問題時才去使用它,兼在權衡。

(4)盡量少用box-shadows與gradients

box-shadowsgradients往往都是頁面的性能殺手,尤其是在一個元素同時都使用了它們,所以擁抱扁平化設計吧。

(5)盡量讓動畫不在文檔流中,以減少重排

position: fixed;

position:absolute;

(6)優化DOM layout性能

實例代碼:

// 觸發兩次 layout
var newWidth = aDiv.offsetWidth + 10;   // Read
aDiv.style.width = newWidth + px;     // Write
var newHeight = aDiv.offsetHeight + 10; // Read
aDiv.style.height = newHeight + px;   // Write

// 只觸發一次 layout
var newWidth = aDiv.offsetWidth + 10;   // Read
var newHeight = aDiv.offsetHeight + 10; // Read
aDiv.style.width = newWidth + px;     // Write
aDiv.style.height = newHeight + px;   // Write

從結果分析應與執行隊列有關,這是瀏覽器的優化策略。所有可觸發layout的操作都會被暫時放入 layout-queue 中,等到必須更新的時候,再計算整個隊列中所有操作影響的結果,如此就可只進行一次的layout,從而提升性能。

 

2.CSS動畫屬性性能

CSS動畫屬性會觸發整個頁面的重排relayout、重繪repaint、重組recomposite

Paint通常是其中最花費性能的,盡可能避免使用觸發paint的CSS動畫屬性,這也是為什么我們推薦在CSS動畫中使用webkit-transform: translateX(3em)的方案代替使用left: 3em,因為left會額外觸發layout與paint,而webkit-transform只觸發整個頁面composite

 

推薦一個超小手勢庫AlloyFinger原理:https://github.com/AlloyTeam/AlloyCrop/blob/master/asset/alloyfinger.md

裁剪解決方案:https://github.com/AlloyTeam/AlloyCrop

 

小程序、小游戲以及web通用canvas渲染引擎:https://github.com/dntzhang/cax

 

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/1998.html

相關文章

  • FEDay 參會小記

    摘要:介紹微信風格的,與客戶端體驗一致,這個自己去微信上看吧,略。微信調試一件套,網頁授權模擬集成代理遠程調試。這些在微信開發者中心有介紹,略。年微信開發經驗的人,終于又成為了零年開發經驗的人,重新走上了踩坑之路。 showImg(https://segmentfault.com/img/bVtEd1);活動地址:http://fequan.com/2016/ 注意:英文不好,小記也帶有自己...

    xcc3641 評論0 收藏0
  • bilibili直播: Vue.js Podcast(小記錄)~~~

    摘要:我聽不太懂了內存管理日后需要解決不應該合并小的請求升級成本可能會有多頁面構建工程歡迎社區人士來搞尤大說盡量少用會有副作用值得借鑒的啊勾股建議全局現階段停留在底層,不能完全解決,還是需要框架 主持人:陰明 virtual dom 然后balabala(走神了- -) 尤小右 服務端渲染:流式渲染v-model用在自定義組件業務邏輯的組建需要可服用的 需要注意父子組件的解耦(不推薦雙向綁定...

    浠ラ箍 評論0 收藏0
  • 【翻譯】Web渲染概述

    摘要:由我所在的團隊共同翻譯完成,并發布在前端技術公眾號方凳雅集上,轉載于此。在移動端,客戶端渲染很難獲得并保持一個較快的渲染速度。使用技術進行服務端渲染的主要問題在于它會對可交互時間有明顯的負面影響,盡管它縮短了首次繪制時間 本文簡單介紹了web應用各種渲染方案,其中包括客戶端渲染、服務器端渲染等各種渲染方案。文章翻譯自:https://developers.google.com...。由...

    RobinQu 評論0 收藏0
  • 【翻譯】Web渲染概述

    摘要:由我所在的團隊共同翻譯完成,并發布在前端技術公眾號方凳雅集上,轉載于此。在移動端,客戶端渲染很難獲得并保持一個較快的渲染速度。使用技術進行服務端渲染的主要問題在于它會對可交互時間有明顯的負面影響,盡管它縮短了首次繪制時間 本文簡單介紹了web應用各種渲染方案,其中包括客戶端渲染、服務器端渲染等各種渲染方案。文章翻譯自:https://developers.google.com...。由...

    NervosNetwork 評論0 收藏0
  • nodejs之express小記

    摘要:如果說用一句話來概括那就是它開啟了服務器端語言。系列的文章并不會從一開始長篇概論的講的歷史,安裝,以及其他很瑣碎的事情。只會專門介紹關于或者準確來講是關于的敏捷開發。性能不對已有的特性進行二次抽象,我們只是在它之上擴展了應用所需的基本功能。 如果說用一句話來概括Node那就是:它開啟了JavaScript服務器端語言。 Node系列的文章并不會從一開始長篇概論的講Node的歷史,安裝,...

    awokezhou 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<