본문 바로가기

수업내용

[HTML, CSS, jQuery] slick 활용

20th
slick 활용

 

👇 slick과 position 콜라보 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2022.06.13. slick 01</title>
    <link rel="stylesheet" href="../css/reset.css">
    <link rel="stylesheet" href="../css/slick.css">
    <link rel="stylesheet" href="../css/slick01.css">
</head>

<body>
    <section class="main">
        <div class="visual_slider">
            <figure class="itm01"></figure>
            <figure class="itm02"></figure>
            <figure class="itm03"></figure>
        </div>
        <div class="slogan">
            <h2>MY COMPANY</h2>
            <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.<br /> Dolores voluptatum blanditiis voluptates
                dignissimos maiores, nesciunt nisi.<br /> Quae molestiae incidunt harum! </p>
        </div>
        <a href="#are" class="wheel">
            <span>아래로가기</span>
        </a>
    </section>
    <!-- 기준을 잡기 위해서 섹션 안에 만들어야함 -->


    <div class="slider" id="are">
        <figure>
        <figure>
            <img src="../img/mainvisual01.jpg" alt="">
        </figure>
        <figure>
            <img src="../img/mainvisual02.jpg" alt="">
        </figure>
        <figure>
            <img src="../img/mainvisual03.jpg" alt="">
        </figure>
    </div>

    <div class="slider02">
        <figure>
            <img src="../img/lesedilarona01.jpg" alt="">
        </figure>
        <figure>
            <img src="../img/lesedilarona02.jpg" alt="">
        </figure>
        <figure>
            <img src="../img/lesedilarona03.jpg" alt="">
        </figure>
        <figure>
            <img src="../img/lesedilarona04.jpg" alt="">
        </figure>
        <figure>
            <img src="../img/lesedilarona05.jpg" alt="">
        </figure>
        <figure>
            <img src="../img/lesedilarona06.jpg" alt="">
        </figure>
    </div>


    <script src="../js/jquery-1.12.4.min.js"></script>
    <script src="../js/slick.min.js"></script>
    <script src="../js/slick01.js"></script>
</body>

</html>

<!-- figure 이미지를 싸는 tag -->
<!-- slide를 div로 감싸고, 자식도 div로 하면 자식을 잡을 때 문제가 생긴다. slick에서 자동으로 생성되는 div가 2개 생기기 때문이다. 그래서 nth chlid잡기 힘들다. 그러려면 div에 class로 주던가 해야함===그래서 figure로 해야함
이미지(인라인 블록임)를 디스플레이 블록으로 만든다. 이미지를 가운데 오게 하기 힘들어짐 -->

<!-- 백그라운드 포지션을 줄 수 있다/채울 수 있다(높이, 넓이 등) 
단, nth-child는 못 함 그래서 이르을 붙여서 하면 됨-->

<html, css>

$(function () {

    $('.visual_slider').slick({
        dots: true,
        autoplay: true,
        autoplaySpeed: 4000,
        pauseOnHover: false,
    });

    $('.slider').slick({
        autoplay: true,
        arrows: false,
        autoplaySpeed: 4000,
        dots: true,
        pauseOnHover: false,
    });

    $('.slider02').slick({
        slidesToShow: 3,
    });
})

// $(function)=document ready
// () 와 $()=함수
//  ''는 문자이다. 문자가 아니면 숫자 또는 변수 또는 함수
// 무언가의 옵션을 주는 것이 매개변수. {}는 객체
// 자바스크립트에서는 줄바꾸기 큰 의미 없음

//arrows : prev next 없애는 것

//slidesToShow는 같은 숫자는 안 돌아감=이미지 3개인데 3을 주면 안됨

<jquery>

 

 

👇 slick과 position 콜라보 2 & 현대엘리베이터 copy

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2022.06.14. slick02</title>
    <link rel="stylesheet" href="../css/reset.css">
    <link rel="stylesheet" href="../css/slick.css">
    <link rel="stylesheet" href="../css/slick02.css">

</head>

<body>
    <section class="slide01">
        <div class="main_slider">
            <figure>
                <img src="../img/mainvisual01.jpg" alt="">
            </figure>
            <figure>
                <img src="../img/mainvisual02.jpg" alt="">
            </figure>
            <figure>
                <img src="../img/mainvisual03.jpg" alt="">
            </figure>
        </div>
        <div class="slider_arrows">
            <i class="xi-arrow-left"></i>
            <i class="xi-arrow-right"></i>
        </div>
        <div class="box">
            <ul class="content">
                <li class="on">⎝⍢⎠</li>
                <li>⎝ᑒ⎠</li>
                <li>⎝⍥⎠</li>
            </ul>
            <div class="num">
                01 / 03</div>
        </div>
    </section>
    <section class="slide02">
        <div class="container">
            <div class="left">
                <div class="left_slider">
                    <figure>
                        <img src="../img/hd01.jpg" alt="">
                    </figure>
                    <figure>
                        <img src="../img/hd02.jpg" alt="">
                    </figure>
                    <figure>
                        <img src="../img/hd03.jpg" alt="">
                    </figure>
                    <figure>
                        <img src="../img/hd09.jpg" alt="">
                    </figure>
                    <figure>
                        <img src="../img/hd10.jpg" alt="">
                    </figure>

                </div>
            </div>
            <div class="right">
                <div class="l_arrow">
                    <i class="xi-arrow-left"></i>
                    <i class="xi-arrow-right"></i>
                </div>
                <div class="right_slider">

                    <figure>
                        <img src="../img/hd02.jpg" alt="">
                    </figure>
                    <figure>
                        <img src="../img/hd03.jpg" alt="">
                    </figure>
                    <figure>
                        <img src="../img/hd09.jpg" alt="">
                    </figure>
                    <figure>
                        <img src="../img/hd10.jpg" alt="">
                    </figure>
                    <figure>
                        <img src="../img/hd01.jpg" alt="">
                    </figure>
                </div>
            </div>

        </div>
    </section>


    <script src="../js/jquery-1.12.4.min.js"></script>
    <script src="../js/slick.min.js"></script>
    <script src="../js/slick02.js"></script>
</body>

</html>

<html, css>

$(function () {

    $('.main_slider').on('init afterChange', function (e, s, c) {
        console.log(e, s, c);
        $('.slide01 .box .num').text("0" + (c ? c + 1 : 1) + " / " + "0" + s.slideCount);
        $('.slide01 .content>li').eq(c).addClass('on').siblings().removeClass('on');
    })

    $('.main_slider').slick({
        arrows: false,
        dots: true,
        centerMode: true,
        centerPadding: '250px',
    });

    $('.slide01 .slider_arrows i:nth-child(1)').on('click', function () {
        $('.main_slider').slick('slickPrev')
    });

    $('.slide01 .slider_arrows i:nth-child(2)').on('click', function () {
        $('.main_slider').slick('slickNext')
    });

    $('.left_slider').slick({
        arrows: false,
        fade: true,
    });
    $('.right_slider').slick({
        arrows: false,
        slidesToShow: 4,
        asNavFor: '.left_slider',
    });

    $('.slide02 .right i:nth-child(1)').on('click', function () {
        $('.right_slider').slick('slickPrev')
    });

    $('.slide02 .right i:nth-child(2)').on('click', function () {
        $('.right_slider').slick('slickNext')
    });

})

// $(function)=document ready
//'slickNext' slick에서 만들어둔 명령어

<js>

 

 

👇 메인비주얼 슬라이드

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2022.06.14. slick03//메인비주얼 슬라이드</title>
    <link rel="stylesheet" href="../css/reset.css">
    <link rel="stylesheet" href="../css/slick.css">
    <link rel="stylesheet" href="../css/slick03.css">
</head>

<body>
    <div class="Wrap">
        <header id="header">
            <div class="container">
                <h1>
                    <a href="/">
                        <img src="../img/grafflogo.png" alt="">
                    </a>
                </h1>
                <nav class="gnb">
                    <ul>
                        <li><a href="">MENU01</a></li>
                        <li><a href="">MENU02</a></li>
                        <li><a href="">MENU03</a></li>
                        <li><a href="">MENU04</a></li>
                        <li><a href="">MENU05</a></li>
                    </ul>
                </nav>
            </div>
        </header>
        <main id="main" role="main">
            <section class="main_visual">
                <div class="main_slider">
                    <figure class="itm01">
                        <div class="inner">
                            <h2>01. Lorem ipsum dolor sit amet.</h2>
                            <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Harum aspernatur eligendi,
                                voluptates aut dolores iste sequi?</p>
                            <a href="">more</a>
                        </div>
                    </figure>
                    <figure class="itm02">
                        <div class="inner">
                            <h2>02. Lorem ipsum dolor sit amet.</h2>
                            <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Harum aspernatur eligendi,
                                voluptates aut dolores iste sequi?</p>
                            <a href="">more 더 more</a>
                        </div>
                    </figure>
                    <figure class="itm03">
                        <div class="inner">
                            <h2>03. Lorem ipsum dolor sit amet.</h2>
                            <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Harum aspernatur eligendi,
                                voluptates aut dolores iste sequi?</p>
                            <a href="">more</a>
                        </div>
                    </figure>
                </div>
                <div class="num"></div>
                <ul class="custom_dots">
                    <li><a href=""><i class="xi-firefox"></i> Lorem, ipsum dolor. </a></li>
                    <li><a href=""><i class="xi-heart"></i> Lorem, ipsum dolor. </a></li>
                    <li><a href=""><i class="xi-twitter"></i> Lorem, ipsum dolor. </a></li>
                </ul>
                <div class="custom_arrow">
                    <i class="xi-arrow-left"></i>
                    <i class="xi-arrow-right"></i>
                </div>
                <div class="custom_play">
                    <i class="xi-pause"></i>
                    <i class="xi-play"></i>
                </div>
            </section>
        </main>
        <footer id="footer">

        </footer>
    </div>

    <script src="../js/jquery-1.12.4.min.js"></script>
    <script src="../js/slick.min.js"></script>
    <script src="../js/slick03.js"></script>
</body>

</html>

<!-- header/main/footer에 id를 쓰는 이유는 일이 단단해짐 


figure을 사용하는 이유: slick은 div가 2개 생기기 때문 nth-child잡기 어려움-->

<!-- 높이 특정하면 안됨. paddig을 해서 부피감을 줘야함
높이가 특정되면 반응형에서 무너짐
단, 배경을 깔 때는 높이를 특정해야함
absolute도 높이는 변함없이 0이 되기 때문에 높이 특정해야함 -->

<!-- alr + z 한 화면 안에 내용이 다 들어옴 -->

<html, css>

$(function () {

    var createNum = 0;

    $('.main_slider').on('init afterChange', function (e, s, c) {
        $('.main_slider figure.slick-current').addClass('on').siblings().removeClass('on');
        $('.num').css({ backgroundPositionY: - 100 * createNum + "px" });
        $('.custom_dots li').eq(0).addClass('on');
        $('.custom_dots li').eq(c).addClass('on').siblings().removeClass('on');
        createNum++;

        //(createNum = createNum + 1) = createNum++; 
    })
    //처음 붙여주는 이유는, 페이지를 열었을 때, 색이 바뀌는 효과를 얻기 위해서

    $('.main_slider').slick({
        arrows: false,
        autoplay: true,
        pauseOnHover: false,
        pauseOnFocus: false,
        autoplaySpeed: 4000,
    });

    $('.custom_dots a').on('click', function (e) {
        e.preventDefault();
        var idx = $(this).parent().index();
        $('.main_slider').slick('slickGoTo', idx);
        $('.num').css({ backgroundPositionY: -100 * idx + "px" });
        createNum = idx;
    });

    $('.custom_arrow i:nth-child(1)').on('click', function () {
        $('.main_slider').slick('slickPrev');
    });
    $('.custom_arrow i:nth-child(2)').on('click', function () {
        $('.main_slider').slick('slickNext');
    });
    $('.custom_play i:nth-child(1)').on('click', function () {
        $('.main_slider').slick('slickPause');
    });
    $('.custom_play i:nth-child(2)').on('click', function () {
        $('.main_slider').slick('slickPlay');
    });


})

// autoplaySpeed: 4000, 1000이 1초이고, slick기본이 3000(3초)임
//dots: true 외부에서 만들어 쓸 때는 노쓸모

<js>

 

 


플러그인 중 하나인 slick
slick은 제이쿼리 1.7이상부터 움직이기 때문에 cafe24에서는 작동하지 않는다.

slick.js =/= slick.min.js(min 압축된 js) 을 사용하는 게 좋다.

 

jquery1.x 다운
https://releases.jquery.com/  --->  minified 다른 이름으로 링크 저장
jquery 1.12.4는 많은 브라우저 지원

 

 

html = <div classs = "on">
css = div.on
js = documentqueryselecto('div').classListadd('on')
      $('div').addclass('on')

$('div').on('click'=이벤트, (매개변수)function(){
$(this=이벤트가 붙는 'div').toggleClass('on')
})
----------------------------------------------------->함수다

addclass
removeclass
toggleclass
hasclass
--->classlistadd
     classlistremove

메인 슬라이드는 배경으로 깔아줌==background