在ionic 开发中,当我用到ion-scroll这个可以滚动的容器的时候,如果我们想要获取到滚动条已经滚动的距离,在android和ios设备上是不一样的,可以通过下面的方法来获取
在android上,我可以直接给ion-scroll一个id="myscroll",
垂直滚动值:document.getElementById("myscroll").scrollTop;
水平滚动值:document.getElementById("myscroll").scrollLeft;
但是在ios上,这种方法就不管用了,你获取的值一直都是0;
我们可以打开chrome的开发者工具来查看,ios上使用ion-scroll标签下会自动生成一个标签
<div class="scroll" style="transform: translate3d(0px, 0px, 0px) scale(1);"></div>
我们可以通过下面的方法来获取
var nowTransform = $("#myscroll .scroll")[0].style.transform;
var startIndex = nowTransform.indexOf('(')+1;
var endIndex = nowTransform.indexOf(')');
var nowTranslate = nowTransform.substring(startIndex,endIndex);
var translateArr = nowTranslate.split(",");
水平滚动值:translateArr[0];
垂直滚动值:translateArr[1];
综合处理方法为:
var myScrollTop,myScrollLeft;
if($("#myscroll .scroll")[0].style.transform){ //ios
var endIndex = nowTransform.indexOf(')');
var nowTranslate = nowTransform.substring(startIndex,endIndex);
var translateArr = nowTranslate.split(",");
myScrollLeft=translateArr[0];
myScrollTop=translateArr[1];
}else{//android
myScrollTop =document.getElementById("myscroll").scrollTop;
myScrollLeft =document.getElementById("myscroll").scrollLeft;
}