我注意到,在带有列表视图的移动页面上“滚动”的唯一方法是单击并拖动。
对于在桌面上使用移动网站的人,有没有办法允许使用鼠标滚轮进行正常滚动?
这是使用带有 jquery.mousewheel.js 的 kendo mobile 以在 Web 应用程序上使用鼠标滚轮进行移动视图滚动的解决方法。
风景:
<div data-role="view" id="tabstrip-editor" data-init="attachToScroller">
<ul data-role="listview" data-style="inset" data-type="group">
<li>item 1</li>
<li>item 2</li>
</ul></div>
Javascript:
function matrixToArray(matrix) {
return matrix.substr(7, matrix.length - 8).split(', ');
}
function attachToScroller(e) {
var scroller = e.view.scroller;
e.view.scroller.element.find('.km-scroll-container').mousewheel(function (event, delta, deltaX, deltaY) {
event.preventDefault();
var matrix = matrixToArray($(event.currentTarget).css("-webkit-transform"));
var currentScroll = parseInt(matrix[5], 10);
var scrollingamount = currentScroll + deltaY * 15;
if (deltaY > 0) {
if (-currentScroll > 9)
scroller.scrollTo(0, scrollingamount);
else
scroller.scrollTo(0, 0);
}
else {
var maximum = scroller.scrollHeight() - $(scroller.element).height();
if(maximum + currentScroll > 0)
scroller.scrollTo(0, scrollingamount);
else
scroller.scrollTo(0, -maximum);
}
});
}
Fiddle Demo Here (for chrome)
和
Modernizr 的小提琴演示(也适用于其他浏览器)
在视图初始化期间,我们将滚动容器附加到 jquery.mousewheel 事件。当 jquery.mousewheel 事件到达时,我们必须获取滚动容器的 -transform css 属性来了解当前的 Y 变换是什么(kendo 移动滚动器使用 -transform 来定位自身)。之后,我们调用scroller的scrollTo方法根据鼠标滚轮的delta属性向上或向下滚动。