[WEB]JS-이미지 슬라이드 만들기

이미지 슬라이드 만들기

 

 

위와 같이 동그라미 버튼을 누르면 다른 이미지가 변하는 슬라이드를 만들어 보려고 한다

 사용할 이미지를 폴더 안에 넣어주고

body 태그 안에  이미지를 담아줄 큰그룹 (slide-container) 태그를 만들어주고

그 안에 이미지 태그를 3개를 들어서 넣어주었다

 

      <div class="slide-container">
        <div class="slide-card-bg"><img src="IMG/img1.jpg" /></div>
        <div class="slide-card-bg"><img src="IMG/img2.jpg" /></div>
        <div class="slide-card-bg"><img src="IMG/img3.jpg" /></div>
      </div>

 

슬라이드를 만들어주기 위해서 

세로로 정렬된 이미지를 가로로 정렬 시켜주어야한다

그러기 위해서 CSS 파일을 하나 만들어준다

 

.slide-container {
  width: 300vw;
}
.slide-card-bg {
  float: left;
  width: 100vw;
}

반응형 웹에서 사용되어지는 크기의 단위 중 하나가 vw(Viewport Width), 그리고 vh (Viewport Height)가 있다

가로 사이즈에 대응하여 변화하는 크기이고, vh는 세로 사이즈의 변화에 따른 크기다.

vw/px 계산하는 사이트: http://publishing.kr/vw/

현재 브라우저 창의 크기에 따라서 1vw의 사이즈의 px의 값이 달라진다

현재 창 크기가 가로 폭이 1000px 이라고 가정 했을 때, 1vw는 10px의 사이즈를 의미한다

 

이미지 3개가 나열되게 보여주기 위해서

전체 div 박스의 width 를 300vw 로 작성해주고

이미지의 사이즈를 100vw 로 해주었다

 

float :left 속성을 사용해서 이미지를 왼쪽 정렬까지 해주고 나면

이미지 3개가  나란히 배치된다

 

 

버튼을 눌렸을때, 원하는 이미지를 보여주기 위해서

이미지의 종류에 따라서 버튼을 3개 만들어주고

slide-container 안에 overflow-hidden을 적용해서

하단의 스크롤 바를 안보이게 할 수있다 

 

   <div style="ovwerflow-hidden">
      <div class="slide-container">
        <div class="slide-card-bg"><img src="IMG/img1.jpg" /></div>
        <div class="slide-card-bg"><img src="IMG/img2.webp" /></div>
        <div class="slide-card-bg"><img src="IMG/img3.jpg" /></div>
      </div>
    <div class="btn-container">
      <button class="1-button">1</button>
      <button class="2-button">2</button>
      <button class='3-button'>3</button>
    </div>

 이제 버튼을 누르면 이미지의 전환 하는 애니메이션을 넣어줘야 한다

2번 버튼을 눌렀을 때, 현재 이미지가 1번 이미지일 경우,

 <div class="slide-container"> 태그가 X축으로 이동하는 애니메이션을 넣어주면된다.

 

  <script>
      $(".1-button").on("click", function () {
        $(".slide-container").css("transform", "translateX(0vw)");
      });
      $(".2-button").on("click", function () {
        $(".slide-container").css("transform", "translateX(-100vw)");
      });
      $(".3-button").on("click", function () {
        $(".slide-container").css("transform", "translateX(-200vw)");
      });
    </script>
.slide-container {
  width: 300vw;
  transition: all 1s;
  transform: translateX(0vw);
}

 기본 위치값을 0으로 잡고 버튼 클릭에 따라서 

container 박스를 이동시키는 애니메이션을 넣어준다

전체 코드

더보기

HTML

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Javascript Study</title>
    <link href="css.css" rel="stylesheet" />
    <link
      href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
      rel="stylesheet"
      integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
      crossorigin="anonymous"
    />
    <script
      src="https://code.jquery.com/jquery-3.7.1.min.js"
      integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo="
      crossorigin="anonymous"
    ></script>
  </head>
  <body>
     <div style="overflow: hidden">
      <div class="slide-container">
        <div class="slide-card-bg"><img src="IMG/img1.jpg" /></div>
        <div class="slide-card-bg"><img src="IMG/img2.webp" /></div>
        <div class="slide-card-bg"><img src="IMG/img3.jpg" /></div>
      </div>
    </div>
    <div class="btn-container">
      <button class="1-button">1</button>
      <button class="2-button">2</button>
      <button class="3-button">3</button>
    </div>

    <script>
      $(".1-button").on("click", function () {
        $(".slide-container").css("transform", "translateX(0vw)");
      });
      $(".2-button").on("click", function () {
        $(".slide-container").css("transform", "translateX(-100vw)");
      });
      $(".3-button").on("click", function () {
        $(".slide-container").css("transform", "translateX(-200vw)");
      });
    </script>
  </body>
</html>

CSS

.slide-container {
  width: 300vw;
  transition: all 1s;
  transform: translateX(0vw);
}
.slide-card-bg {
  width: 100vw;
  float: left;
}
.slide-card-bg img {
  width: 100%;
}
.btn-container {
  text-align: center;
  margin: 10px;
}