首頁  >  文章  >  web前端  >  JS+HTML5手機開發之滾動與慣性緩動實現方法分析

JS+HTML5手機開發之滾動與慣性緩動實現方法分析

高洛峰
高洛峰原創
2017-02-17 17:14:051711瀏覽

本文實例講述了JS+HTML5手機開發之滾動和慣性緩動實現方法。分享給大家參考,具體如下:

1. 捲動以下是三種實現方式:

1) 利用原生的css屬性overflow: scroll p id= parent style = overflow:scroll; pid='content'內容區域/p /p Notice: 在android 有bug, 滾動完後會回退到最頂端的內容區域,解決辦法是使用後兩種方式實現

2)js 編程實現思路:對比手指在屏幕上移動前後位置變化改變內容元素content

1. 滾動

以下是三種實現方式:

1) 利用原生的css屬性overflow: scroll

<p id="parent" style="overflow:scroll;>
  <p id=&#39;content&#39;>内容区域</p>
</p>

:

Notice:

後會回退到最頂端的內容區域,解決方法是使用後兩種方式實現

2)js 編程實現

思路:對比手指在屏幕上移動前後位置變化改變內容元素content的位置

第一步:設定parent的overflow為hidden, 設定content的position為relative, top為0;

第二步:監聽touch事件

var parent = document.getElementById(&#39;parent&#39;);
parent.addEventListener(&#39;touchstart&#39;, function(e) {
  // do touchstart
});
parent.addEventListener(&#39;touchmove&#39;, function(e) {
  // do touchmove
});
parent.addEventListener(&#39;touchend&#39;, function(e) {
  // do touchend
});

第三步:實現滾動程式碼

第四步:優化

上邊代碼在手機上運行效果相對PC上要卡很多

優化部分請參閱:

3) 使用iScroll4框架

/**
 * 这里只实现垂直滚动
 */
var parent = document.getElementById(&#39;parent&#39;);
var content = document.getElementById(&#39;content&#39;)
var startY = 0; // 初始位置
var lastY = 0; // 上一次位置
parent.addEventListener(&#39;touchstart&#39;, function(e) {
  lastY = startY = e.touches[0].pageY;
});
parent.addEventListener(&#39;touchmove&#39;, function(e) {
  var nowY = e.touches[0].pageY;
  var moveY = nowY - lastY;
  var contentTop = content.style.top.replace(&#39;px&#39;, &#39;&#39;);
  // 设置top值移动content
  content.style.top = (parseInt(contentTop) + moveY) + &#39;px&#39;;
  lastY = nowY;
});
parent.addEventListener(&#39;touchend&#39;, function(e) {
  // do touchend
  var nowY = e.touches[0].pageY;
  var moveY = nowY - lastY;
  var contentTop = content.style.top.replace(&#39;px&#39;, &#39;&#39;);
  // 设置top值移动content
  content.style.top = (parseInt(contentTop) + moveY) + &#39;px&#39;;
  lastY = nowY;
});

框架

框架官網

框架官php.cn/

2.慣性緩動

思路:取手指最後一段時間在屏幕上劃動的平均速度v,讓v按一個遞減函數變化,直到不能移動或v

var scroll = new iScroll(&#39;parent&#39;, {
hScrollbar: false,
vScrollbar: true,
checkDOMChanges : true
});

希望本文所述對大家jQuery程式設計有幫助。

更多JS+HTML5手機開發之滾動和慣性緩動實現方法分析相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn