Animated Turtle

Javascript

슬라이드 효과 만들기(translateY)

훙구 2023. 4. 10. 18:44

...

728x90
반응형

TranslateY의 값으로 슬라이드 효과 만들기

이번에는 translateY의 값을 조절하여 이미지가 좌로 넘어가는 효과를 만들어보겠습니다.

 

HTML 작성하기

<main id="main">
    <div class="slider__wrap">
        <div class="slider__img">
            <div class="slider__inner">
                <div class="slider"><img src="img/sliderEffect06-min.jpg" alt="이미지6"></div>
                <div class="slider"><img src="img/sliderEffect07-min.jpg" alt="이미지7"></div>
                <div class="slider"><img src="img/sliderEffect08-min.jpg" alt="이미지8"></div>
                <div class="slider"><img src="img/sliderEffect09-min.jpg" alt="이미지9"></div>
                <div class="slider"><img src="img/sliderEffect10-min.jpg" alt="이미지10"></div>
            </div>
        </div>
    </div>
</main>

변경된 HTML 알아보기

  • X축 이동에서 Y축 이동으로만 변한 것이기 때문에 html문서 상의 구조는 변하지 않습니다.

CSS 작성하기

/* slider__wrap */
.slider__wrap {
    width: 100%;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
}
.slider__img {      /* 이미지가 보이는 영역 */
    position: relative;
    width: 800px;
    height: 450px;
    overflow: hidden;
}
.slider {           /* 개별 이미지 */
    position: relative;
    width: 800px;
    height: 450px;
}

변경된 CSS 알아보기

  • 사진들이 세로로 정렬되어야 하기 때문에 이전 게시물에서 slider__inner에 부여했던 display:flex 속성을 포함한 다른 속성이 필요가 없기 때문에 slider__inner에 대한 내용을 지웠습니다.

Javascript 작성하기 (javascript 사용)

sliderInner.style.transition = "all 0.6s"

setInterval(() => {
    currentIndex = (currentIndex + 1) % sliderCount;

    sliderInner.style.transform = "translateY(" + -450 * currentIndex + "px)";
}, sliderInterval);

변경된 javascript 알아보기

  • 이 전 게시물과 동일한 선택자를 사용합니다.
  • 좌로 이동하는 스크립트에서 translateX를 translateY로 수정하고 이동수치를 width값(800)에서 height값(450)으로 변경했습니다.

Javascript 작성하기 (GSAP 사용)

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/gsap.min.js"></script>
<script>
    setInterval(() => {
        currentIndex = (currentIndex + 1) % sliderCount;

        gsap.to(sliderInner, {
            y : -450 * currentIndex,
            duration : 1,
            ease : "elastic.out(1, 0.8)"
        });
    }, sliderInterval)
</script>

변경된 javascript 알아보기

  • gsap를 사용할 때도 마찬가지로 translateX를 translateY로 수정했습니다.

Javascript 작성하기 (jQuery 사용)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js"></script>
<script>
    setInterval(() => {
        currentIndex = (currentIndex + 1) % $(".slider").length;

        $(".slider__inner").css("position", "relative");
        $(".slider__inner").animate({top : -450 * currentIndex}, 600);
    }, sliderInterval)
</script>

변경된 javascript 알아보기

  • jQuery를 사용할 때는 translate를 사용하지 못하므로 position left 값을 조절했는데, 위로 이동하기 위에서는 left를 top으로 수정해주면 됩니다.

 

 

 

이상으로 세 가지 방법으로 위로 이동하는 슬라이드 효과를 만들어 보았습니다.

728x90
반응형