该网站在普通浏览器上运行良好,例如 Opera、Firefox、Chrome 等。通过拖动鼠标或使用标准水平滚动条在 PC 上滚动。
问题始于移动设备:
我试图让它工作很长一段时间。第一个想法是使用touch-action: pan-x;
有效的默认值,除了包含position: fixed;
在其样式中的元素。他们的行为很奇怪(向右拖动时 - 他们表现良好,但向左拖动时 - 他们躲起来了)。我尝试将position
属性更改为absolute
,然后将其设置为window.scrollLeft
or$(window).scrollLeft()
两者都返回错误值(似乎平移没有scrollLeft
正确更改值,为什么?)所以我认为使用 JQueryscrollLeft()
会更容易使用。
接下来我尝试使用与桌面浏览器相同的代码。我使用($(window).scrollLeft(xPosition)
并且在 PC 上它正在工作,在移动设备上它1385 pixels
在 Opera 的模拟器上停止,在 Firefox 的模拟器上停止在 1826(body
宽度设置为2824.81px
)
我用来滚动的功能:
var updateScrollPos = function (x) { // scroll by x
if (($(window).scrollLeft() + (x + $(window).width()) > maxScroll)) {
$(window).scrollLeft(maxScroll - $(window).width());
}
else {
$(window).scrollLeft($(window).scrollLeft() + x);
}
console.log(x);
console.log($(window).scrollLeft());
}
并且 maxScroll 基于图像宽度:
maxScroll = $('.scrollview img').width();
Opera 调试屏幕中的 maxScroll 和 scrollLeft 值
我只需要知道是否有一个函数可以返回pan-x position
或者为什么我的 updateScrollPos 在移动设备上不能正常工作。
这是我的第一篇文章,如果我错过了任何重要信息,我深表歉意,并提前感谢您!