84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
哪位大神可以提供個行動端下拉分頁的方法
光阴似箭催人老,日月如移越少年。
H5還是app
例如,京東的分頁效果
$PageIndex = 1; var $uzaiProducts = $doc.getElementsByClassName('uzai-products')[0]; // 产品列表 //console.log($uzaiProducts) var _pages = $doc.getElementsByClassName('uzai-pages')[0], _pag = _pages.getElementsByClassName('spa')[0], _allpag = _pages.getElementsByClassName('all-page')[0]; var _filterMask = $doc.getElementsByClassName('uzai-filter-mask')[0]; var startx, starty; //获得角度 var getAngle = function(angx, angy) { return Math.atan2(angy, angx) * 180 / Math.PI; }; //根据起点终点返回方向 1向上 2向下 3向左 4向右 0未滑动 var getDirection = function(startx, starty, endx, endy) { var angx = endx - startx; var angy = endy - starty; var result = 0; //如果滑动距离太短 if (Math.abs(angx) < 2 && Math.abs(angy) < 2) { return result; } var angle = getAngle(angx, angy); if (angle >= -135 && angle <= -45) { result = 1; } else if (angle > 45 && angle < 135) { result = 2; } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) { result = 3; } else if (angle >= -45 && angle <= 45) { result = 4; } return result; }; $uzaiProducts.addEventListener('touchstart', function(e) { startx = e.touches[0].pageX; starty = e.touches[0].pageY; }, false); //手指离开屏幕 $uzaiProducts.addEventListener('touchmove', function(e) { // //if(getStyle(_filterMask,'display') === 'block'){ // e.preventDefault(); //} var endx, endy; endx = e.changedTouches[0].pageX; endy = e.changedTouches[0].pageY; var direction = getDirection(startx, starty, endx, endy); _pages.style.display = 'block'; var $uzaiProduct = $doc.getElementsByClassName('uzai-products')[0], $pLi = $uzaiProduct.getElementsByTagName('li'); //ele.getBoundingClientRect().top > window.innerHeight // 元素在当前屏下面 //ele.getBoundingClientRect().bottom < 0 // 元素在当前屏上面 if (window.innerHeight + document.body.scrollTop >= document.body.scrollHeight) { //console.log('到底了!'); if ($isLoadli) { $PageIndex++; addProduct($PageIndex); //console.log($PageIndex); } } switch (direction) { case 0: // 未滑动 //console.log("未滑动!"); break; case 1: // 向上 //console.log("向上!"); if ($pLi.length > 0) { var _arr = []; var _top, _bottom, _se, _cur, _num; for (var i = 0, len = $pLi.length; i < len; i++) { _top = $pLi[i].getBoundingClientRect().top; //元素顶端到可见区域顶端的距离 _bottom = $pLi[i].getBoundingClientRect().bottom; _se = document.documentElement.clientHeight; //浏览器可见区域高度。 if ((_top <= _se) && (_bottom > 0)) { _cur = Number($pLi[i].getAttribute('data-cur-page')); _arr.push(_cur); _num = Math.max.apply(null, _arr); _pag.innerHTML = _num; } } } //if(getStyle(_filterMask,'display') === 'block'){ // e.preventDefault(); // console.log(11); //}else { // console.log(222); //} break; case 2: // 向下 //console.log("向下!"); if ($pLi.length > 0) { var _arr = []; var _top, _bottom, _se, _cur, _num; for (var i = 0, len = $pLi.length; i < len; i++) { _top = $pLi[i].getBoundingClientRect().top; //元素顶端到可见区域顶端的距离 _bottom = $pLi[i].getBoundingClientRect().bottom; _se = document.documentElement.clientHeight; //浏览器可见区域高度。 if ((_top <= _se) && (_bottom > 0)) { _cur = Number($pLi[i].getAttribute('data-cur-page')); _arr.push(_cur); _num = Math.min.apply(null, _arr); _pag.innerHTML = _num; } } } break; default: } }, false); $uzaiProducts.addEventListener('touchend', function() { setTimeout(function() { _pages.style.display = 'none'; }, 1000); });
可以參考下getBoundingClientRect的用法,主要處理滾動的時候底部分頁頁數的展示,如果不需要,可以忽略!
H5還是app
例如,京東的分頁效果
可以參考下getBoundingClientRect的用法,主要處理滾動的時候底部分頁頁數的展示,如果不需要,可以忽略!