[따라만들기] multiple slider

파송송계란빡 ㅣ 2022. 2. 20. 02:12

https://youtu.be/ZRCYz0VkNn4

 

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>JavaScript for frontend developer</title>

    <link rel="stylesheet" href="style.css">
</head>

<body>
    <div class="slide_wrapper">
        <ul class="slides">
            <li><img src="/img/pink.png" alt="1"></li>
            <li><img src="/img/blue.png" alt="2"></li>
            <li><img src="/img/pink.png" alt="3"></li>
            <li><img src="/img/blue.png" alt="4"></li>
            <li><img src="/img/pink.png" alt="5"></li>
            <li><img src="/img/blue.png" alt="6"></li>
            <li><img src="/img/pink.png" alt="7"></li>
            <li><img src="/img/blue.png" alt="8"></li>
        </ul>
    </div>
    <p class="controls">
        <span class="prev">prev</span>
        <span class="next">next</span>
    </p>
    <script src="script.js"></script>
</body>

</html>

 

* {
    margin: 0;
    padding: 0;
}

li {
    list-style: none;
}

.slide_wrapper {
    position: relative;
    width: 960px;       /*300*3*60*/
    margin: 0 auto;
    height: 300px;
    top: 20px;
    overflow: hidden;
}
.slides {
    position: absolute;
    left : 0;
    top : 0;
    /*width: 2610px;*/  /*일단은 슬라이드 개수만큼 넣음*/
    transition: left 0.5s ease-out;
}

.slides li:not(:last-child) {   /*막네 빼고 float 넣음*/
    float: left;
    margin-right: 30px;
}

.controls {
    text-align: center;
    margin-top: 50px;
}

.controls span {
    right: 300px;
    background: #333 ;
    color: #fff;
    padding: 10px 20px;
    margin: 20 10px;
    cursor: pointer;
}

 

const slides = document.querySelector(".slides");
const slide = document.querySelectorAll(".slides li");
let currentIdx = 0;
const prevBtn = document.querySelector(".prev");
const nextBtn = document.querySelector(".next");
const slideWidth = 300;
const slideMargin = 30;


//1. 슬라이드의 가변적인 개수 변화를 위해 너비 자동으로 구해줌
slides.style.width = ((slideWidth + slideMargin) * slide.length) - slideMargin + 'px';

function moveSlide(num) {
    slides.style.left = `${-num * 330}px`;
    currentIdx = num;
}

prevBtn.addEventListener("click", function () {
    if (currentIdx !== 0) {                     //3개씩 보이기 때문에 -1 + -2
        moveSlide(currentIdx - 1);
    } else {
        moveSlide(slide.length - 3);
    }
});

nextBtn.addEventListener("click", function () {
    if (currentIdx < slide.length - 3) {      //3개씩 보이기 때문에 -1 + -2
        moveSlide(currentIdx + 1);
    } else {
        moveSlide(0);
    }
});

'웹 개발 > 바닐라js' 카테고리의 다른 글

[따라만들기] menu hover animation  (0) 2022.03.02
[따라만들기] number auto animation  (0) 2022.03.02
[따라만들기] cookie popup  (0) 2022.02.20
[따라만들기] Hover Animation  (0) 2022.02.20
[따라만들기] lightbox  (0) 2022.02.20
[따라만들기] multiple slider