首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从最后一项转到第一项时,圆滑的旋转木马中心类不起作用

从最后一项转到第一项时,圆滑的旋转木马中心类不起作用
EN

Stack Overflow用户
提问于 2018-02-07 01:54:13
回答 1查看 872关注 0票数 0

我正在尝试用圆滑的carousel jquery插件制作一个(无限)图片的轮播,其中所有图片的不透明度都是0.5,除了当前在中心的图片,它应该设置为1.0,并有1秒的过渡

我编写了以下代码:

HTML:

代码语言:javascript
复制
<div id="pics">
            <div class="img">
                <div class="img_overlay">
                    <img src="https://bloximages.chicago2.vip.townnews.com/billingsgazette.com/content/tncms/assets/v3/editorial/c/a5/ca5baefc-d922-54e1-9429-abd16a353bce/59cced6868919.image.jpg"/>
                </div>
            </div>
            <div class="img">
                <div class="img_overlay">
                    <img src="https://bloximages.chicago2.vip.townnews.com/billingsgazette.com/content/tncms/assets/v3/editorial/c/a5/ca5baefc-d922-54e1-9429-abd16a353bce/59cced6868919.image.jpg"/>
                </div>
            </div> 
            <div class="img">
                <div class="img_overlay">
                    <img src="https://bloximages.chicago2.vip.townnews.com/billingsgazette.com/content/tncms/assets/v3/editorial/c/a5/ca5baefc-d922-54e1-9429-abd16a353bce/59cced6868919.image.jpg"/>
                </div>
            </div>
</div>

CSS:

代码语言:javascript
复制
    *, html{
        margin: 0;
        padding: 0;
    }
    #pics{
        width: 100%;
        height: 500px;
        background-color: #282828;
        white-space: nowrap;
        overflow: hidden;
    }
    #pics .img{
      display: inline-block;
      height: 500px;
      width: auto;
    }
    .img_overlay{
        opacity: 0.5;
        transition: 1s;
    }
    #pics .slick-dots{
        position: relative;
        bottom: 0;
        top: -50px;
        z-index: 100;
    }
    .slick-center .img_overlay{
        opacity: 1;
        transition: 1s;
    }
    #pics .img img{
        height: 500px;
        width: auto;
    }
    #pics .slick-prev, #billeder .slick-next{
        display: none !important;
    }

JS:

代码语言:javascript
复制
    $(document).ready(function () {
        $('#pics').slick({
            dots: false,
            infinite: true,
            speed: 1400,
            centerMode: true,
            variableWidth: true,
            autoplay: true,
            autoplaySpeed: 1500,
            arrows: false
        });
    });

JSfiddle:https://jsfiddle.net/jgfrs331/5/

除了从最后一张图片转到下一张图片(下一张图片实际上是再次显示的第一张图片)之外,这种方法工作得很好。我已经检查了代码,我可以看到"slick-active“类在滑动效果的过渡完成后第一次被正确地坐着,但只有当它从最后一张图片转到第一张图片时,在所有其他时间它都是在滑动过渡开始时坐着的。我已经为此挣扎了几个小时,任何建议都是非常有价值的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-16 22:23:35

我得到了一些帮助,并通过添加以下JS和CSS找到了解决方案:

CSS:

代码语言:javascript
复制
.img_overlay1{
    opacity: 1 !important;
    transition: 1s;
}
.img_overlay2{
    opacity: 0.3 !important;
    transition: 1s;
}

和JS:

代码语言:javascript
复制
$('#pics').on('beforeChange', function (event, slick, currentSlide, nextSlide) {
    $('.img').find('div:first-child').removeClass('img_overlay2');
    $('.img').find('div:first-child').removeClass('img_overlay1');
    if (nextSlide == 0) {
        $('.img').each(function () {
            obj = $(this);
            if (obj.data('slick-index') == currentSlide + 1) {
                obj.find('div:first-child').addClass('img_overlay1');
            }
            if (obj.data('slick-index') == currentSlide + 2) {
                obj.find('div:first-child').addClass('img_overlay2');
            }
        });
    } else {
        $('#pics').removeClass('slick-center');
    }
});

工作jsfiddle:https://jsfiddle.net/jgfrs331/231/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48649119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档