4

我正在尝试为 fullPage.js 和 fancbox.js 插件保留默认的键滚动功能。所以,我想为这两个脚本启用左右功能。但是,我希望在打开花式框时禁用 fullPage.js 上的键滚动功能(例如,当覆盖打开并且图像被缩放时)。目标是允许用户在 fancybox 打开时在画廊图像之间左右滚动,但不能在叠加层下方的“幻灯片”之间切换。

这是我的代码:

$(document).ready(function() {
$(".fancybox").fancybox({
    openEffect  : 'none',
    closeEffect : 'none',
    keys  : true,
});
$.fn.fullpage({
    verticalCentered: true,
    resize : true,
    anchors:['firstSlide', 'secondSlide'],
    scrollingSpeed: 700,
    easing: 'easeInQuart',
    menu: false,
    navigation: false,
    navigationPosition: 'right',
    navigationTooltips: ['firstSlide', 'secondSlide'],
    slidesNavigation: true,
    slidesNavPosition: 'bottom',
    loopBottom: false,
    loopTop: false,
    loopHorizontal: false,
    autoScrolling: false,
    scrollOverflow: false,
    css3: false,
    fixedElements: '#element1, .element2',
    normalScrollElements: '#element1, .element2',
    keyboardScrolling: true,
    touchSensitivity: 15,
    continuousVertical: false,
    animateAnchor: true,

    //events
    onLeave: function(index, direction){},
    afterLoad: function(anchorLink, index){},
    afterRender: function(){},
    afterSlideLoad: function(anchorLink, index, slideAnchor, slideIndex){},
    onSlideLeave: function(anchorLink, index, slideIndex, direction){}
    });
});
4

3 回答 3

5

只需使用 fancybox 的回调之一onStart,然后调用 fullpage 方法$.fn.fullpage.setKeyboardScrolling(false);来禁用全页键盘功能。

然后再次激活它,使用onClosed相同的方法但相反的值。

$(".fancybox").fancybox({
    openEffect  : 'none',
    closeEffect : 'none',
    keys  : true,

    onStart:  function() {
        $.fn.fullpage.setKeyboardScrolling(false);
    }

    onClose:  function() {
        $.fn.fullpage.setKeyboardScrolling(true);
    }
});
于 2014-03-28T09:51:16.727 回答
2

最终按照 Alvero 的建议使用了 Fancybox 的回调方法。我没有提到我正在使用 Fancybox 2,它具有与原始 Fancybox 不同的回调方法。这里是 Fancybox 2 文档的链接:http: //fancyapps.com/fancybox/#docs。这是我的最终代码:

$(document).ready(function() {
$.fn.fullpage({
    verticalCentered: true,
    resize : true,
    anchors:['firstSlide', 'secondSlide'],
    scrollingSpeed: 700,
    easing: 'easeInQuart',
    menu: false,
    navigation: false,
    navigationPosition: 'right',
    slidesNavigation: true,
    slidesNavPosition: 'side',
    loopBottom: false,
    loopTop: false,
    loopHorizontal: false,
    autoScrolling: false,
    scrollOverflow: false,
    css3: false,
    keyboardScrolling: true,
    touchSensitivity: 15,
    continuousVertical: false,
    animateAnchor: true,
});
$(".fancybox").fancybox({
    openEffect  : 'none',
    closeEffect : 'none',
    keys  : true,
    beforeLoad :  function() {
        $.fn.fullpage.setKeyboardScrolling(false);
    },
    afterClose:  function() {
        $.fn.fullpage.setKeyboardScrolling(true);
    }
});

});

于 2014-03-28T14:33:19.680 回答
2

setKeyboardScrolling 对我不起作用,所以我改用 setAutoScrolling 并且效果很好!

$(document).ready(function() {
$(".fancybox").fancybox({
    maxWidth    : 800,
    maxHeight   : 600,
    fitToView   : false,
    width       : '30%',
    height      : '70%',
    autoSize    : false,
    closeClick  : false,
    openEffect  : 'none',
    closeEffect : 'none',
    helpers : {
    overlay : {
        locked : true
    }
},
beforeLoad :  function() {
    // Disable auto scrolling of page when fancybox is open
  $.fn.fullpage.setAutoScrolling(false);
},
afterClose:  function() {
    // Reenable autoscrolling of page when fancybox is closed
    $.fn.fullpage.setAutoScrolling(true);
}
});

});

于 2016-01-12T21:35:07.107 回答