移動端ドロップダウンリフレッシュヘッド実現原理及びコード実現
3244 ワード
ドロップダウン・リフレッシュの実装原理
ドロップダウン・リフレッシュを実現するには、主に3つのステップに分けられます.原生touchstartイベントを傍受し、その初期位置の値、e.touches[0]を記録する.pageY; オリジナルtouchmoveイベントを傍受し、現在のスライドの位置値と初期位置値の差を記録し計算し、ある臨界値より大きい場合、ドロップダウン・リフレッシュ・ヘッダを表示し、ページのoverflow属性をfalseに設定する. は、オリジナルtouchendイベントをリスニングし、このとき要素スライドが最大値になったらリフレッシュ操作を行い、操作終了後、ページのoverflow属性をautoに設定する.
コード実装
HTMLコード
JSコード実装
注意bodyのoverflowプロパティ設定.
貴重な時間を費やして本を読んでくれてありがとう.もしこの本があなたに少し助けたり啓発したりしたら、あなたの称賛とStarをけちけちしないでください.あなたのは私の前進の最大の原動力に違いありません.https://github.com/YvetteLau/...
ドロップダウン・リフレッシュを実現するには、主に3つのステップに分けられます.
コード実装
HTMLコード
- 000
- 111
- 222
- 333
- 444
- 555
- 666
- 777
- 888
- 999
JSコード実装
window.onload = function () {
let container = document.querySelector('#refreshContainer');
let refreshText = document.querySelector('.refreshText');
let parent = document.querySelector('.parent');
let startY = 0; // Y
let endY = 0; // Y
let flag = false; //
parent.addEventListener('touchstart', function (e) {
startY = e.touches[0].pageY;
});
parent.addEventListener('touchmove', function (e) {
if (isTop() && (e.touches[0].pageY - startY) > 50) {
flag = true;
document.body.style.overflow='hidden';
refreshText.style.height = "80px";
parent.style.transform = "translateY(80px)";
parent.style.transition = "all ease 0.5s";
refreshText.innerHTML = " ...";
}
});
//
parent.addEventListener('touchend', function (e) {
if (isTop() && flag) {
refreshText.innerHTML = " ...";
// , ,
setTimeout(function () {
parent.style.transform = "translateY(0)";
document.body.style.overflow = 'auto';
}, 2000);
}
});
//scrollTop
function isTop() {
let t = document.documentElement.scrollTop || document.body.scrollTop;
return t === 0 ? true : false;
}
}
注意bodyのoverflowプロパティ設定.
貴重な時間を費やして本を読んでくれてありがとう.もしこの本があなたに少し助けたり啓発したりしたら、あなたの称賛とStarをけちけちしないでください.あなたのは私の前進の最大の原動力に違いありません.https://github.com/YvetteLau/...