티스토리 뷰

index형식이라 사진이 흘러가는 느낌없이 사진이 전환되는 느낌으로 연출된다

 

영상

 

CSS

    * {
      box-sizing: border-box
    }

    body {
      font-family: Verdana, sans-serif;
      margin: 0
    }

    .mySlides {
      display: none
    }

    img {
      vertical-align: middle;
    }

    /* Slideshow container */
    .slideshow-container {
      max-width: 1000px;
      position: relative;
      margin: auto;
    }

    /* Next & previous buttons */
    .prev,
    .next {
      cursor: pointer;
      position: absolute;
      top: 50%;
      width: auto;
      padding: 16px;
      margin-top: -22px;
      color: white;
      font-weight: bold;
      font-size: 18px;
      transition: 0.6s ease; /* 속성 변경(예: hover) 시 0.6초 동안 부드럽게 전환 */
      border-radius: 0 3px 3px 0;
      user-select: none; /* 사용자가 텍스트를 선택(드래그)하지 못하게 함 */
    }

    /* Position the "next button" to the right */
    .next {
      right: 0;
      border-radius: 3px 0 0 3px;
    }

    /* On hover, add a black background color with a little bit see-through */
    .prev:hover,
    .next:hover {
      background-color: rgba(0, 0, 0, 0.8);
    }

    /* Caption text */
    .text {
      color: #f2f2f2;
      font-size: 15px;
      padding: 8px 12px;
      position: absolute;
      bottom: 8px;
      width: 100%;
      text-align: center;
    }

    /* Number text (1/3 etc) */
    .numbertext {
      color: #f2f2f2;
      font-size: 12px;
      padding: 8px 12px;
      position: absolute;
      top: 0;
    }

    /* 하단 사진 선택o버튼 */
    .dot {
      cursor: pointer;
      height: 15px;
      width: 15px;
      margin: 0 2px;
      background-color: #bbb;
      border-radius: 50%;
      display: inline-block;
      transition: background-color 0.6s ease;
    }

    .active,
    .dot:hover {
      background-color: #717171;
    }

    .fade {
      animation-name: fade; /* 실행할 애니메이션의 이름 지정 */
      animation-duration: 1.5s; /* 애니메이션의 전체 실행 시간 지정 */
    }
    @keyframes fade {
      from {opacity: .4} /* 애니메이션 시작 시 투명도 0.4 */
      to {opacity: 1} /* 애니메이션 종료 시 투명도 1 (완전 불투명) */
    }

    /* On smaller screens, decrease text size */
    @media only screen and (max-width: 300px) {
      .prev, .next,.text {font-size: 11px} /* 브라우저 창의 너비가 300px 이하일 때 폰트 크기를 11px로 줄임 */
      /* only screen 을 넣은 이유 프린터나 출력할때는 원래의 글자크기를 출력하게하기 위함 */
    }
    /* 상단에서 조금 내려오게하기위한 속성 */
    body{
      padding-top: 300px;
    }

 

HTML

  <div class="slideshow-container">

    <div class="mySlides fade">
      <div class="numbertext">1 / 3</div>
      <img src="image/img_nature_wide.jpg" style="width:100%">
      <div class="text">Caption Text</div>
    </div>

    <div class="mySlides fade">
      <div class="numbertext">2 / 3</div>
      <img src="image/img_snow_wide.jpg" style="width:100%">
      <div class="text">Caption Two</div>
    </div>

    <div class="mySlides fade">
      <div class="numbertext">3 / 3</div>
      <img src="image/img_mountains_wide.jpg" style="width:100%">
      <div class="text">Caption Three</div>
    </div>

    <a class="prev" onclick="plusSlides(-1)">❮</a>
    <a class="next" onclick="plusSlides(1)">❯</a>

  </div>
  <br>

  <div style="text-align:center">
    <span class="dot" onclick="currentSlide(1)"></span>
    <span class="dot" onclick="currentSlide(2)"></span>
    <span class="dot" onclick="currentSlide(3)"></span>
  </div>

 

JAVASCRIPT

    // 처음 실행시 1의 값으로 첫번째 사진의 display를 block로 바꿔줌
    let slideIndex = 1;
    showSlides(slideIndex);

    function plusSlides(n) {
      showSlides(slideIndex += n);
    }

    function currentSlide(n) {
      showSlides(slideIndex = n);
    }

    function showSlides(n) {
      let i;
      let slides = document.getElementsByClassName("mySlides");
      let dots = document.getElementsByClassName("dot");
      
      // 전체 크기보다 크면 첫번째 사진으로 돌아간다
      if (n > slides.length) { slideIndex = 1 }
      // 첫번째 사진이면 마지막사진을 보여준다
      if (n < 1) { slideIndex = slides.length }
      
      // 모든 사진의 display를 none로 바꿔줌
      for (i = 0; i < slides.length; i++) {
        slides[i].style.display = "none";
      }
      // 모든 사진이동 버튼에 클래스중 active를 제거
      for (i = 0; i < dots.length; i++) {
        dots[i].className = dots[i].className.replace(" active", "");
      }

      // 지정된 사진과 버튼에 클래스추가와 display변경
      slides[slideIndex - 1].style.display = "block";
      dots[slideIndex - 1].className += " active";
    }
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함