FIG slick rotation Compendium

let oSlick = {
    dom: null,
    isMobile: false,
    slickInited: false,
    barInterval:null,
    currentSlide:0,
    lastCurrent:-1,
    init: function () {
        let self = this
        if (!this.slickInited) {
            console.time('oSlick')
            let sWinWidth = $(window).width()
            if(sWinWidth<=750){
                $("#slick_dom").draggable("destory"); 
                let jSlick = this.dom = $("#slick_dom")
                let banner = $('.banner_img')

                jSlick
                    .find('.pc')
                    .remove()

                if(banner.length>1){
                    if (jSlick.length <= 0) return false
                    this.slickInited = true
                    this.bind()
                }
            }else{
                let jSlick = this.dom = $("#slick_dom")
                // let _this = this
                // jSlick.click(function(){
                //     _this.bind()
                // });

                jSlick
                    .find('.mobile')
                    .remove()

                if (jSlick.length <= 0) return false
                this.slickInited = true
                this.bind()
                // setInterval( function(){
                //     if(self.lastCurrent ===self.currentSlide){
                //         jSlick.slick('slickPlay');
                //         // jSlick.slick('slickGoTo', self.currentSlide+1);
                //         // jSlick.on('afterChange', function(event, slick, currentSlide, nextSlide){
                //         //     self.currentSlide = currentSlide
                //         //     // console.log(event, slick, currentSlide, nextSlide)
                //         //     // var elSlide = $(slick.$slides[currentSlide]);
                //         //     // var dataIndex = elSlide.data('index');
                        
                //         // }); 
                //     }
                //     self.lastCurrent = self.currentSlide
                //     console.log(self.currentSlide)
                // }, 6000);
            }
            
            
            console.timeEnd('oSlick')
        }
    },
    bind: function () {
        let self = this,
            jSlick = self.dom
        if($('.slick-initialized').length > 0){
            return false;
        }
        
        //新版gallery:http://kenwheeler.github.io/slick/
        jSlick.slick({
            dots: true,
            autoplay: true,
            autoplaySpeed: 8000,
            infinite: true,
            slidesToShow: 1,
            slidesToScroll: 1,
            pauseOnHover: false,
            arrows:true,
            draggable:true,
            customPaging: function (slider, i) {
                let bar = $(`<div class="bar_${i}"></div>`)
                this.barInterval = setInterval(function () {
                    if (slider.currentSlide === i) {
                        bar.addClass("rotation")
                    }
                    if (slider.currentSlide !== i) {
                        bar.removeClass("rotation");
                    }
                }, 1);
                return bar
            },
            onAfterChange: function(){
                var currentSlide = jSlick.slick('slickCurrentSlide');
               console.log("11111",currentSlide)
              }
        });
        
        
        jSlick.on('afterChange', function(event, slick, currentSlide, nextSlide){
            setInterval( function(){
                if(currentSlide !== self.currentSlide){
                    return
                }
                jSlick.slick("slickNext")
            }, 8200);
            self.currentSlide = currentSlide
            
            // console.log(event, slick, currentSlide, nextSlide)
            // var elSlide = $(slick.$slides[currentSlide]);
            // var dataIndex = elSlide.data('index');
        
        });
        
        
         self.arrowShow()
        //  jSlick.slick("slickSetOption", "autoplay", true,true);
    },
    arrowShow: function () {
        let self = this,
            jSlick = self.dom,
            iSlickW = jSlick.width()

        jSlick
            .mousemove(function (event) {
                let iX = event.pageX

                if (iX < iSlickW / 3) {
                    jSlick
                        .addClass('show_arrow_left')
                        .removeClass('show_arrow_right')
                } else if (iX > (iSlickW * 2) / 3) {
                    jSlick
                        .addClass('show_arrow_right')
                        .removeClass('show_arrow_left')
                } else {
                    jSlick.removeClass('show_arrow_left show_arrow_right')
                }
            })
            .mouseleave(function () {
                jSlick.removeClass('show_arrow_left show_arrow_right')
            })
    },
    destroy: function () {
        this.slickInited = false
        clearInterval(this.barInterval)
        let sWinWidth = $(window).width()
            if(sWinWidth<=750){
                let banner = $('.banner_img')
                if(banner.length>1){
                    this.dom && this.dom.slick &&
                        this.dom
                            .slick('unslick')
                            .off('mousemove mouseleave')
                
            }
        }
    }
}

 

Guess you like

Origin www.cnblogs.com/kaiqinzhang/p/11249462.html