【问题标题】:mousemove based scrolling script need to adapt for touchscreen use基于 mousemove 的滚动脚本需要适应触摸屏使用
【发布时间】:2015-06-23 22:45:50
【问题描述】:

我有一个 Javascript,它可以根据鼠标的位置从左到右滚动 UL:可以看到一个演示 HERE(网站仍在建设中)我希望它也可以与触摸屏设备一起使用。触摸和“拖动”手指会以类似的方式滚动 UL,点击列表会“点击”图像。

修改 JS 有多容易/多难:

$(function(){
    $(window).load(function(){
        var $gal   = $("#gallerylist.top"),
            galW   = $gal.outerWidth(true),
            galSW  = $gal[0].scrollWidth,
            wDiff  = (galSW/galW)-1,  /// widths difference ratio
            mPadd  = 200,  // Mousemove Padding
            damp   = 20,  // Mousemove response softness
            mX     = 0,   // Real mouse position
            mX2    = 0,   // Modified mouse position
            posX   = 0,
            mmAA   = galW-(mPadd*2), // The mousemove available area
            mmAAr  = galW/mmAA;    /// get available mousemove fidderence ratio   
        $gal.mousemove(function(e) {
            mX = e.pageX - $(this).parent().offset().left - this.offsetLeft;
            mX2 = Math.min( Math.max(0, mX-mPadd), mmAA ) * mmAAr;
        });
        setInterval(function(){
            posX += (mX2 - posX) / damp; /// zenos paradox equation "catching delay"    
            $gal.scrollLeft(posX*wDiff);
        }, 10);
    });
});

【问题讨论】:

标签: javascript html css mousemove touchscreen


【解决方案1】:

有类似于鼠标事件的触摸事件:

$gal.touchstart(function(e) {});
$gal.touchend(function(e) {});
$gal.touchmove(function(e) {});

通常您不需要为“点击”实现触摸事件...它们通常已经同步。

对于 mousemove 事件,从用户的角度来看,在触摸设备上禁用此功能可能更理想。如果页面需要滚动,这可能会干扰该交互。另一种方法可能是在窗口滚动事件上设置一些动画。

【讨论】:

  • 将 mousemove 事件更改为触摸屏设备的 touchmove 事件不起作用。我想除了简单地更改脚本的那一部分之外,我还需要实现更多?
  • 你不想改变它,你想添加一个具有相同功能的附加事件。可能将逻辑抽象为一个函数,让touchmovemousemove 调用同一个函数
  • 我的意思是让这个脚本在触摸屏上工作,是不是就像把 mousemove 改成 touchmove 一样简单。我知道我会同时拥有这两个事件以使其在两者上都起作用,但现在只是为了测试,我已将其更改为 touchmove 并且它在触摸屏上没有做任何事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 2011-01-04
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 2018-11-01
  • 1970-01-01
相关资源
最近更新 更多