javascript - 使用猫头鹰轮播在触摸设备上滑动时禁用垂直滚动

标签 javascript jquery html css wordpress

我想在移动设备上水平滑动轮播时禁用网页上的垂直滚动。我正在使用 Owl 轮播。

我尝试使用 css overflow: hidden to html, body 但不起作用。 尝试了其他解决方案,但它们不起作用。我试过的代码在下面。

// Tried this but doesn't work
var owl = $j(".owl-carousel");
owl.on('drag.owl.carousel', function(event) {
document.ontouchmove = function (e) {
    e.preventDefault()
}
});
owl.on('dragged.owl.carousel', function(event) {
document.ontouchmove = function (e) {
    return true
}
});

// Tried this but doesn't work
owl.on('drag.owl.carousel', function(event) {
    $('body').css('overflow', 'hidden');
});

owl.on('dragged.owl.carousel', function(event) {
    $('body').css('overflow', 'auto');
});

最佳答案

您是否在初始化轮播的地方尝试过这个?

$j(".owl-carousel").owlCarousel({
    onDragged: function() {
       $j('body').css('overflow', 'auto');
    },
    onDrag: function() {
       $j('body').css('overflow', 'hidden');
    }
});

此外,我建议只向 body/html 标签添加/删除一个类,这会增加溢出,而不是使用 JS 来操纵 CSS 本身。

更新: 根据评论,似乎存在一个已知错误。其他人问了同样的问题并在这里得到了答案: disable scrolling when trigger owl carousel on mobile device

出于数据删除目的,我将复制有人声称在 IOS 上有效的答案。请测试并告诉我们它是否适用于您的应用:

var owl = $('.owl-carousel');
    owl.owlCarousel({
    //  your options
})

// disable scroll
owl.on('drag.owl.carousel', function(event) {
    document.ontouchmove = function (e) {
        e.preventDefault()
    }
})

// enable scroll
owl.on('dragged.owl.carousel', function(event) {
    document.ontouchmove = function (e) {
        return true
    }
})

我仍然建议保留您当前的代码,包括 onDrag 和 onDragged 函数,然后只更新它。将脚本标记内的代码替换为:

var $j = jQuery.noConflict();
$j( document ).ready( function() {
    var owl = $j( ".owl-carousel" ).owlCarousel( {
        stagePadding: 90,
        loop: true,
        lazyLoad: true,
        dots: false,
        margin: 10,
        nav: false,
        onDragged: function() {
            $j( 'body' ).css( 'overflow', 'auto' );
        },
        onDrag: function() {
            $j( 'body' ).css( 'overflow', 'hidden' );
        },
        responsive: {
            0: {
                items: 2
            },
            500: {
                items: 4
            },
            1000: {
                items: 5
            }
        }
    } );

    // disable scroll
    owl.on( 'drag.owl.carousel', function( event ) {
        document.ontouchmove = function( e ) {
            e.preventDefault();
        }
    } );

    // enable scroll
    owl.on( 'dragged.owl.carousel', function( event ) {
        document.ontouchmove = function( e ) {
            return true;
        }
    } );

} );

关于javascript - 使用猫头鹰轮播在触摸设备上滑动时禁用垂直滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57426052/

相关文章:

javascript - 提交前检查 JS 表单

html - 灵活的垂直菜单

html - CSS 混合混合模式 chrome 问题

javascript - https 到 android 上的 http 反向代理应用程序?

javascript - JavaScript 不返回 $(window).innerWidth()

javascript - 如何在每次键入时将在文本框中键入的值传递到 Controller ,而无需使用提交按钮。

javascript - 如何在保留鼠标/元素坐标访问的同时将 mousemove 更改为 setInterval?

php - 电子邮件中没有数据

javascript - 在 d3 堆叠条形图上使用 d3-tip 和 CSS 悬停效果

javascript - 如何将此日期转换为实际日期