在做一个阅读公众号内嵌的h5页面时接到的需求是实现小说的分页、翻页,页面不能出现滚动条。上网看了些,资料不是很多呀,自己写个呗~
先是根据文章的长短计算总页数:
//分页 function pagesCell(){ allpages = Math.ceil(parseInt($("#artical").prop("scrollHeight"))/parseInt($("#artical").prop("offsetHeight"))); //计算总页数 } function showPages(){ $('.pages').html(i+'/'+allpages); }
再检测左右滑动
$('#artical').on('touchstart', function (e) {
$tb = $(this);
var startX = e.originalEvent.changedTouches[0].clientX,
pullDeltaX = 0;
$tb.on('touchmove', function (e) {
var x = e.originalEvent.changedTouches[0].clientX;
pullDeltaX = x - startX;
if (!pullDeltaX){
return;
}
e.preventDefault();
});
$tb.on('touchend', function (e) {
$tb.off('touchmove touchend');
e.stopPropagation();
if (pullDeltaX > 30 && allpages > 1 && i>1){
i--;
showpart(i);
//左滑,往前翻所执行的代码
}
else if (pullDeltaX < -30){
if(i == allpages){
alert('最后一页');
}else if(i < allpages){
i++;
showpart(i);
}
//右滑,往后翻所执行的代码
}
})
});
最后实现翻页
function showpart(x){ var height = (x-1)*parseInt($("#artical").prop("offsetHeight")); if(parseInt(height/lineHeight) >= 0.5){ $("#artical").prop("scrollTop",(parseInt(height/lineHeight))*lineHeight); }else{ $("#artical").prop("scrollTop",(parseInt(height/lineHeight)-1)*lineHeight); } showPages();
}
这样就实现了基本的需求,美中不足的是没有实现app上翻页的动画效果,继续努力努力~