통합검색

Javascript

[Jquery] slick slider

  • 2022.04.27 13:19:28


 
slick 슬라이더 사용 방법
사이트 URL : https://kenwheeler.github.io/slick/


[!]HTML[/!]
 
<div class="visual">
    <div class="roll">
        <div class="item">slider1</div>
        <div class="item">slider2</div>
        <div class="item">slider3</div>
    </div>

    <p class="vis-dots">
        <span class="now">01</span>
        /
        <span class="tot">03</span>
    </p>
    <div class="vis-control">
        <button class="play">play</button>
        <button class="stop">stop</button>
    </div>
</div>
 


 
[!]jQuery[/!]
 
//visual
visual = {
    'init' : function(){
        this.action();
    },
    'action' : function(){
        var $ele = {
            'roll' : $('.visual .roll')
        }
        var rolling = function(){

            //item total number
            var tot_len = $('.visual .item').length;
            if (tot_len < 10) { tot_len = '0' + tot_len; } //10 이하 번호앞에 텍스트 0 입력
            $('.visual .vis-dots .tot').text(tot_len);

            //slider
            $ele.roll.slick({
                'fade' : false, //Fade 롤링 효과
                'dots' : true, //하단 pager
                'arrows' : true, //next,prev 버튼
                'infinite' : true, //무한반복
                'slidesToShow' : 1, //슬라이드 갯수
                'slidesToScroll' : 1, //롤링시 슬라이드 갯수
                'autoplay' : true, //자동롤링
                'autoplaySpeed' : 4000, //자동롤링 딜레이
                'swipe' : false, //모바일 스와프 여부
                'centerMode' : false, //Center모드. 가운데 slide에 'slick-active' 클래스 부여.
                'centerPadding' : 0, //Center모드인 경우 좌/우 여백 설정
                'vertical' : false, //vertical 모드
                'zIndex' : 80, //z-index
                'responsive' : [
                    //tablet
                    {
                        'breakpoint' : 1300,
                        'settings' : {
                            'swipe' : true
                        }
                    },
                    //mobile
                    {
                        'breakpoint' : 750,
                        'settings' : {
                            'swipe' : true
                        }
                    }
                ]
            });

            //현재 슬라이드 number
            $ele.roll.on('afterChange', function(event, slick, currentSlide, nextSlide){
                now_len = currentSlide + 1;
                if (now_len < 10) { now_len = '0' + now_len; } //10 이하 번호앞에 텍스트 0 입력
                $('.visual .vis-dots .now').text(now_len);
            });

            //control play
            $('.vis-control .play').click(function(){
                $ele.roll.slick('slickPlay');
            });

            //control stop
            $('.vis-control .stop').click(function(){
                $ele.roll.slick('slickPause');
            });
        }
        rolling();
    }
}
$(function(){
    if($('.visual').length>0){
        visual.init();
    }
})




영상 같이 슬라이드

[!]HTML[/!]
 
<div class="visual">
    <div class="roll">
        <div class="item" data-src="<div class='video'><video class='vis_video pc' autoplay muted playsinline><source src='<?=DIR?>/files/main.mp4' type='video/mp4'></video><video class='vis_video mobile' autoplay muted playsinline><source src='<?=DIR?>/files/main.mp4' type='video/mp4'></video></div>">
            <div class="video">
                <!-- controls autoplay muted loop playsinline -->
                <video class="vis_video pc" autoplay muted playsinline>
                    <source src="<?=DIR?>/files/main.mp4" type="video/mp4">
                </video>
                <video class="vis_video mobile" autoplay muted playsinline>
                    <source src="<?=DIR?>/files/main.mp4" type="video/mp4">
                </video>
            </div>
        </div>
        <div class="item">
            <a href="#" target="_blank" class="__pc"><img src="<?=DIR?>/images/main/visual1.jpg" /></a>
            <a href="#" target="_blank" class="__ta"><img src="<?=DIR?>/images/main/visual1.jpg" /></a>
            <a href="#" target="_blank" class="__mo"><img src="<?=DIR?>/images/main/visual1.jpg" /></a>
        </div>
    </div>
</div>


[!]CSS[/!]
 
#main .visual .video {position: relative;z-index: 0;width: 100vw;height: 900px;overflow: hidden;}
#main .visual .video video {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);min-width: 100%;min-height: 100%;width: auto;height: auto;}
#main .visual .video video.pc {display: block;}
#main .visual .video video.mobile {display: none;}


[!]jQuery[/!]
 
// visual
visual = {
    'init' : function() {
        this.action();
    },
    'action' : function() {
        var $video_pc = $('.vis_video.pc');
        var $video = $('.vis_video.mobile');
        var $ele = {
            'win' : $('window'),
            'roll' : $('.visual .roll')
        }
        var rolling = function() {
            $ele.roll.slick({
                'fade' : true, // Fade 롤링 효과
                'dots' : true, // 하단 pager
                'arrows' : false, // next,prev 버튼
                'infinite' : true, // 무한반복
                'slidesToShow' : 1, // 슬라이드 갯수
                'slidesToScroll' : 1, // 롤링시 슬라이드 갯수
                'autoplay' : false, // 자동롤링
                'autoplaySpeed' : 4000, // 자동롤링 딜레이
                'swipe' : false, // 모바일 스와프 여부
                'centerMode' : false, // Center모드. 가운데 slide에 'slick-active' 클래스 부여.
                'centerPadding' : 0, // Center모드인 경우 좌/우 여백 설정
                'vertical' : false, // vertical 모드
                'zIndex' : 80, // z-index
                'responsive' : [
                    // tablet
                    {
                        'breakpoint' : 1300,
                        'settings' : {
                            'swipe' : true
                        }
                    },
                    // mobile
                    {
                        'breakpoint' : 750,
                        'settings' : {
                            'swipe' : true
                        }
                    }
                ]
            });
        }
        rolling();
        //영상 끝나면 다음 슬라이드 이동 (영상 멈춤)
        function vid_end(){
            if(getdevice()=="pc"){
                $video_pc.bind('ended', function(){
                    $ele.roll.slick('slickPause');//자동슬라이드 멈춤
                    $video_pc.stop();
                    $ele.roll.slick('slickNext');
                    $video_pc[0].currentTime = 0;//영상 초기화
                    // console.log('Video ended!');
                });
            }else{
                $video.bind('ended', function(){
                    $ele.roll.slick('slickPause');//자동슬라이드 멈춤
                    $video.stop();
                    $ele.roll.slick('slickNext');
                    $video[0].currentTime = 0;//영상 초기화
                    // console.log('Video ended!');
                });
            }
        }
        $(window).on({
            'load' : function(){
                vid_end();
            }
        });
       
        // slide 이동시 video 컨트롤
        $ele.roll.on('afterChange', function(event, slick, currentSlide, nextSlide){
            var video_src = $('.item.slick-active[data-src]').data('src');
            $('.visual .item .video').remove();
            // console.log(video_src);
            if (currentSlide == 0) {
                // $video[0].currentTime = 0;//영상 초기화
                // console.log('video');
                $ele.roll.slick('slickPause');//자동슬라이드 멈춤
                $('.visual .item.slick-active').append(video_src);
                if(getdevice()=="pc"){
                    $video_pc[0].play();
                }else{
                    $video[0].play();
                }
                vid_end();
            }else{
                // console.log('image');
                $ele.roll.slick('slickPlay');//자동슬라이드 멈춤
            }
        });
    }
}