【问题标题】:Slick slider effect光滑的滑块效果
【发布时间】:2018-06-09 14:51:59
【问题描述】:

我正在使用 Slick Slider jquery 插件。 http://kenwheeler.github.io/slick/

我正在尝试创建这种效果:https://www.gillesetboissier.com/index.php?preload=1

为此。我正在尝试将当前幻灯片保持在原位以将 translate3d 设置为 0px。但是这个滑块被挡住了。

function slick_init() {
    $('.splash-slider').slick({
        slidesToShow: 1,
        slidesToScroll: 1,
        arrows: false,
        vertical: true,
        verticalSwiping: true
    });

    $('.splash-slider').on('beforeChange', function(event, currentSlide) {
        currentSlide.css('transform', 'translate3d(0px, 0px, 0px)');
    });
}

请问这个方法有什么问题?

【问题讨论】:

    标签: jquery slick.js


    【解决方案1】:

    问题是您试图将元素 css 从传递给 Slick beforeChange 事件的参数转换,事实上,currentSlide 参数(在您的实现中)是对 slick 实例的引用。您尝试使用的那个(对当前幻灯片的引用——第三个参数——)是当前幻灯片的索引,而不是对幻灯片本身的引用。

    beforeChange 事件需要 3 个参数:

    • slick:对 Slick 实例的引用
    • currentSlide:当前幻灯片,在幻灯片动画之前
    • nextSlide:幻灯片动画后的下一张活动幻灯片

    要通过索引获取幻灯片,您可以使用以下 sn-p:

    slider.find('[data-slick-index="'+slideIndex+'"]');
    

    其中slider 是 Slick 滑块的实例,slideIndex 是您尝试选择的幻灯片的索引。

    因此,将其应用到您的代码中,您可以执行以下操作:

    $('.splash-slider').on('beforeChange', function(event, slick, currentSlide) {
        $('.splash-slider').find('[data-slick-index="'+currentSlide+'"]').css('transform', 'translate3d(0px, 0px, 0px)');
    });
    

    【讨论】:

    • 好的,谢谢您的回答。我更好地理解我的错误。所以每次我想对幻灯片进行操作时,我都必须使用索引。它工作得很好,但不幸的是我没有我正在搜索的 css 效果。我会尝试在css中找到一个好的效果。
    • @Jandon 也许如果你指出你想要实现的目标我可以帮助你
    • 现在您向我解释了它是如何工作的,我可以在更改之前操作当前幻灯片。我试图在更改之前将当前幻灯片保持在同一位置(当前幻灯片没有移动)。所以我认为在 translate3D 上放置 0px 是一个很好的解决方案,但它似乎更复杂。我也尝试将当前幻灯片置于绝对值的前 0 位,但没有结果。类似的东西,但使用 Slick:jqueryscript.net/demo/…
    • 问题在于转换的是幻灯片容器而不是每张幻灯片。每张幻灯片都使用float: left; 定位,因此如果更改幻灯片的定位方式,它将影响所有幻灯片。
    • 好吧,原来 Slick Slider 的结构不适合我要搜索的效果?如果每张幻灯片都以float: left 定位,那将更加困难。通常,这是一种带有浮动的水平滑动结构。我在想垂直选项改变了 Slick 的操作流程。事实上,这是一种错觉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    相关资源
    最近更新 更多