JavaScript库在到达库结束/开始时关闭(而不是循环)

JavaScript库在到达库结束/开始时关闭(而不是循环),javascript,photoswipe,Javascript,Photoswipe,请参见标题。我希望实现以下目标: if(gestureType === 'swipe') { var totalShiftDist = _currPoint.x - _startPoint.x, isFastLastFlick = _releaseAnimData.lastFlickDist.x < 10; // if container is shifted for more than MI

请参见标题。我希望实现以下目标:

        if(gestureType === 'swipe') {
            var totalShiftDist = _currPoint.x - _startPoint.x,
                isFastLastFlick = _releaseAnimData.lastFlickDist.x < 10;

            // if container is shifted for more than MIN_SWIPE_DISTANCE,
            // and last flick gesture was in right direction
            if(totalShiftDist > MIN_SWIPE_DISTANCE &&
                (isFastLastFlick || _releaseAnimData.lastFlickOffset.x > 20) ) {
                // go to prev item
                if ( (_currentItemIndex + 1) === 1) {
                    self.close();
                } else {
                    itemsDiff = -1;
                }
            } else if(totalShiftDist < -MIN_SWIPE_DISTANCE &&
                (isFastLastFlick || _releaseAnimData.lastFlickOffset.x < -20) ) {
                // go to next item
                if ( (_currentItemIndex + 1) === _getNumItems() ) {
                    self.close();
                } else {
                    itemsDiff = 1;
                }
            }
        }
1.在手机上:在Photosweep中,当检测到要查看下一张图像的滑动时(当已经查看上一张图像时),关闭Photosweep。

2.在手机上:与上述相同,但在查看第一张图像时。当已经查看第一张图像并滑动以显示检测到上一张图像时,请关闭Photosweep。

3.在桌面上:使用下面的代码,当查看第一张图像时,左箭头Photosweep UI按钮被隐藏(因为没有以前的图像可显示),键盘的左箭头键被禁用。
这里的目标是在查看第一张图像时按下键盘上的左箭头键,而不是什么都不做(或循环到最后一张图像),Photosweep gallery会自动关闭


下面是一个JSFIDLE,显示代码的当前状态:



也许一种方法可以是重新启用循环,并在其位置注入代码以关闭库,而不是循环库

loop: false


我正在使用以下代码:

  • 查看第一个图像或最后一个图像时隐藏不需要的箭头
  • 查看第一张图像或最后一张图像时,禁用键盘上的左右箭头键

好的,您可以这样做,但是您必须编辑核心photosweep.js文件。删除以前尝试执行此操作的代码,例如使按键不执行任何操作,并保持“循环”选项处于打开状态,以使其正常工作

第一部分:在该文件的第1076行找到此代码:

    next: function() {
        self.goTo( _currentItemIndex + 1);
    },
    prev: function() {
        self.goTo( _currentItemIndex - 1);
    },
当用户通过单击或按键将幻灯片更改为“上一张”或“下一张”时,这将决定操作。所以我们可以在这里插入一个简单的语句,检查它是第一张幻灯片,然后向左移动,还是最后一张幻灯片,然后向右移动。然后启动关闭功能

因此,将前面提到的代码更改为:

    next: function() {
        if ( (_currentItemIndex + 1) === _getNumItems() ) {
            self.close();
        } else {
            self.goTo( _currentItemIndex + 1);
        }
    },
    prev: function() {
        if ( (_currentItemIndex + 1) === 1) {
            self.close();
        } else {
            self.goTo( _currentItemIndex - 1);
        }
    },
第二部分:我们还需要更改滑动手势的机制,因此请在第2306行找到此代码:

        if(gestureType === 'swipe') {
            var totalShiftDist = _currPoint.x - _startPoint.x,
                isFastLastFlick = _releaseAnimData.lastFlickDist.x < 10;

            // if container is shifted for more than MIN_SWIPE_DISTANCE, 
            // and last flick gesture was in right direction
            if(totalShiftDist > MIN_SWIPE_DISTANCE && 
                (isFastLastFlick || _releaseAnimData.lastFlickOffset.x > 20) ) {
                // go to prev item
                itemsDiff = -1;
            } else if(totalShiftDist < -MIN_SWIPE_DISTANCE && 
                (isFastLastFlick || _releaseAnimData.lastFlickOffset.x < -20) ) {
                // go to next item
                itemsDiff = 1;
            }
        }
if(gestureType=='swipe'){
var totalShiftDist=\u currPoint.x-\u startPoint.x,
isFastLastFlick=\u releaseAnimData.lastFlickDist.x<10;
//如果容器移动超过最小滑动距离,
//最后一个轻弹手势的方向是正确的
如果(TotalShiftList>最小滑动距离&&
(isFastLastFlick | | | u releaseAnimData.lastFlickOffset.x>20)){
//转到上一项
itemsDiff=-1;
}否则如果(TotalShiftList<-最小滑动距离&&
(isFastLastFlick | | | u releaseAnimData.lastFlickOffset.x<-20)){
//转到下一项
itemsDiff=1;
}
}
我们将做一些类似于第一部分中的函数。将代码更改为以下内容:

        if(gestureType === 'swipe') {
            var totalShiftDist = _currPoint.x - _startPoint.x,
                isFastLastFlick = _releaseAnimData.lastFlickDist.x < 10;

            // if container is shifted for more than MIN_SWIPE_DISTANCE,
            // and last flick gesture was in right direction
            if(totalShiftDist > MIN_SWIPE_DISTANCE &&
                (isFastLastFlick || _releaseAnimData.lastFlickOffset.x > 20) ) {
                // go to prev item
                if ( (_currentItemIndex + 1) === 1) {
                    self.close();
                } else {
                    itemsDiff = -1;
                }
            } else if(totalShiftDist < -MIN_SWIPE_DISTANCE &&
                (isFastLastFlick || _releaseAnimData.lastFlickOffset.x < -20) ) {
                // go to next item
                if ( (_currentItemIndex + 1) === _getNumItems() ) {
                    self.close();
                } else {
                    itemsDiff = 1;
                }
            }
        }
if(gestureType=='swipe'){
var totalShiftDist=\u currPoint.x-\u startPoint.x,
isFastLastFlick=\u releaseAnimData.lastFlickDist.x<10;
//如果容器移动超过最小滑动距离,
//最后一个轻弹手势的方向是正确的
如果(totalShiftDist>最小滑动距离&&
(isFastLastFlick | | | u releaseAnimData.lastFlickOffset.x>20)){
//转到上一项
如果(_currentItemIndex+1)==1){
self.close();
}否则{
itemsDiff=-1;
}
}否则如果(totalShiftDist<-最小滑动距离&&
(isFastLastFlick | | | u releaseAnimData.lastFlickOffset.x<-20)){
//转到下一项
如果((\u currentItemIndex+1)==\u getNumItems()){
self.close();
}否则{
itemsDiff=1;
}
}
}
我已经在我的网站上进行了测试,它工作正常


享受:)

Photosweep看起来不再维护。最近的提交和推文已经有一年多的历史了。我只是想让它在我的网站上运行,但是你可以从我的帖子中猜到,我不知道该做什么改变。你知道如何处理这个问题吗?从用户体验的角度来看,我认为用户可能会觉得这很烦人(Photosweep关闭),尤其是当此人(例如)在图像2上,并且正在向后滑动以查看图像12时。。只是一个想法。。它可以用角上的x手动关闭,是吗?在预期的使用情况下,我更希望它关闭。其想法是创建几个单独的Photosweep图库,每个图库只包含3-4幅图像。因此,我们的目标是在每个画廊之间快速切换,并对其中的内容进行采样。你会不会有一个想法,如何接近它,使画廊将关闭不间断的循环?