移動端的滾動方式及滾動原理1.body滾動:意思是頁面的高度由內容自動撐大,body自然形成捲軸,一般不做處理預設的都是body滾動
body.jpeg
2.區域性滾動:意思就是我們的滾動在一個固定寬高的div內觸發,將該div設定為overflow:scroll/auto;來形成div內部的滾動,捲軸出現在div內部
scroll.jpeg
3.模擬滾動,典型例子為iscroll,原理有兩種:a.監聽滾動元素的touchmove事件,當事件觸發時修改元素的transform屬性來實現元素的位移,當手指離開時觸發touchend事件,然後採用requestanimationframe來在一個線型函式下不斷的修改元素的transform來實現手指離開時的一段慣性滾動距離;b.監聽滾動元素的touchmove事件,當事件觸發時修改元素的transform屬性來實現元素位移,當手指離開時觸發touchend事件,然後給元素一個css的animation,並設定好duration和function來實現手指離開時的一段慣性距離當使用模擬滾動時,瀏覽器在javascript層面會消耗更多的效能去改變dom元素的位置,在dom複雜層級深的頁面更為高,所以在長列表滾動時還要使用正常滾動好區域性滾動不能亂用,每當用一個區域性滾動時,webview都會在終端生成一個原生的scrollView,可能會帶來更多的手機webview記憶體消耗。
移動端的滾動方式及滾動原理1.body滾動:意思是頁面的高度由內容自動撐大,body自然形成捲軸,一般不做處理預設的都是body滾動
body.jpeg
2.區域性滾動:意思就是我們的滾動在一個固定寬高的div內觸發,將該div設定為overflow:scroll/auto;來形成div內部的滾動,捲軸出現在div內部
scroll.jpeg
3.模擬滾動,典型例子為iscroll,原理有兩種:a.監聽滾動元素的touchmove事件,當事件觸發時修改元素的transform屬性來實現元素的位移,當手指離開時觸發touchend事件,然後採用requestanimationframe來在一個線型函式下不斷的修改元素的transform來實現手指離開時的一段慣性滾動距離;b.監聽滾動元素的touchmove事件,當事件觸發時修改元素的transform屬性來實現元素位移,當手指離開時觸發touchend事件,然後給元素一個css的animation,並設定好duration和function來實現手指離開時的一段慣性距離當使用模擬滾動時,瀏覽器在javascript層面會消耗更多的效能去改變dom元素的位置,在dom複雜層級深的頁面更為高,所以在長列表滾動時還要使用正常滾動好區域性滾動不能亂用,每當用一個區域性滾動時,webview都會在終端生成一個原生的scrollView,可能會帶來更多的手機webview記憶體消耗。