光滑的滑块可在每张幻灯片上更改背景颜色

时间:2016-07-22 10:19:16

标签: jquery html css slick.js

设置就是这样。 带有客户端徽标的滑块,一次显示一个。 我想将父div的背景颜色更改为每个客户端(和H1)的特定品牌颜色。如果可能的话,动画。

我将如何做到这一点?

我的HTML - 我想更改div部分的背景颜色和内容包装器中的h1。

        <div class="section clients section-text-right">
        <div class="content-wrapper">
            <h1>Clients</h1>
            <div class="frontpage-client-slick slick-theme-frontpage">
                <div class="scouts"><img src="images/client-logos/logo_scouts@2x.png"></div>
                <div class="jjd"><img src="images/client-logos/logo_jjd_white@2x.png"></div>
                <div class="unipension"><img src="images/client-logos/logo_unipension@2x.png"></div>
                <div class="dr"><img src="images/client-logos/logo_dr@2x.png"></div>
                <div class="verdensborn"><img src="images/client-logos/logo_verdensboern@2x.png"></div>
                <div class="fi"><img src="images/client-logos/logo_fi@2x.png"></div>
                <div class="midtlink"><img src="images/client-logos/logo_midtlink@2x.png"></div>
            </div>
        </div>
    </div>

光滑滑块 - 我知道我需要在beforeChange中做一些事情,我只是不知道是什么。

$('.frontpage-client-slick').slick({
    slidesToShow: 1,
    slidesToScroll: 1,
    arrows: true,
    infinite: true,
    speed: 1000,
    autoplay: true,
    autoplaySpeed: 4000,
    fade: true,
    centerMode: true
});
$('.frontpage-client-slick').on('beforeChange', function(event, slick, currentSlide, nextSlide){
    console.log(nextSlide);
});

1 个答案:

答案 0 :(得分:1)

您需要获取幻灯片元素并通过jQuery和.css()设置背景颜色。

光滑的对象将幻灯片存储在$幻灯片中,以便您可以通过nextSlide提供的索引访问它们。

我为你创建了一个有效的fiddle

var $slideContainter = $('.frontpage-client-slick'),
    $slider = $slideContainter.slick({
        slidesToShow: 1,
        slidesToScroll: 1,
        arrows: true,
        infinite: true,
        speed: 1000,
        autoplay: true,
        autoplaySpeed: 4000,
        fade: true,
        centerMode: true
    }),
    colorSettings = {
        headline: ['red', 'blue', 'yellow','red', 'blue', 'yellow','blue'],
        section: ['blue', 'yellow','red', 'blue', 'yellow','blue', 'red']
    },
    changeColors = function (slide) {
        $slideContainter.siblings('h1').animate({
        color: colorSettings.headline[slide]
    }, 1000 );

    $slideContainter.parentsUntil('.section').animate({
        backgroundColor: colorSettings.section[slide]
    }, 1000 );
    };

// Initial call to set color
changeColors(0);

$slider.on('beforeChange', function(event, slick, currentSlide, nextSlide){
    changeColors(nextSlide);
});