触摸设备上的轮播滑动功能

Posted

技术标签:

【中文标题】触摸设备上的轮播滑动功能【英文标题】:Carousel swipe functionality on touch devices 【发布时间】:2018-08-02 01:31:58 【问题描述】:

我需要在没有任何其他库的情况下使用 JS/jQuery 在触摸设备上实现轮播滑动功能。为此,我编写了如下函数:

$(".carousel-inner").on("touchstart", function(event)
        var xClick = event.originalEvent.touches[0].pageX;
    $(this).one("touchmove", function(event)
        var xMove = event.originalEvent.touches[0].pageX;
        if( Math.floor(xClick - xMove) > 5 )
            $(this).carousel('next');
        
        else if( Math.floor(xClick - xMove) < -5 )
            $(this).carousel('prev');
        
    );
    $(".carousel").on("touchend", function()
            $(this).off("touchmove");
    );
);

这工作正常,但问题是“滑动”不顺畅。下一张图片只是根据滑动的方向出现。如何使幻灯片之间的过渡看起来更流畅?请建议我如何在不使用任何库的情况下实现这一目标。谢谢!

【问题讨论】:

【参考方案1】:

我有点晚了,但是 bootstrap 从 v4.3 开始就有这个功能,data-touch="true",还要确保你设置了data-ride="carousel"

<div id="carouselShowcaseSlider" class="carousel slide" data-touch="true" data-ride="carousel" data-interval="3000">
Bootstrap docs Github thread

【讨论】:

【参考方案2】:

您必须使用 CSS 过渡进行平滑滑动。

【讨论】:

以上是关于触摸设备上的轮播滑动功能的主要内容,如果未能解决你的问题,请参考以下文章

用 js封装以左右滑动的轮播图,调用任意

如何将移动手势(例如触摸和滑动)添加到 React Bootstrap 轮播组件?

用js函数封装一个上下滑动的轮播图,调用任意

swiper中的轮播图换成网页后,在保证可以用鼠标滑动的同时还可以保证网页的css效果?

原生js写简单轮播图方式1-从左向右滑动

控制台日志中的轮播响应设置错误