"틀:이미지스와이퍼"의 두 판 사이의 차이

광주문화예술인문스토리플랫폼
이동: 둘러보기, 검색
 
(같은 사용자의 중간 판 10개는 보이지 않습니다)
11번째 줄: 11번째 줄:
 
       {{#if:{{{1|}}}|
 
       {{#if:{{{1|}}}|
 
       <div class="swiper-slide">
 
       <div class="swiper-slide">
         <img src="{{{1|}}}" alt="{{{1|}}}" class="swiper-image" onerror="this.closest('.swiper-slide').remove()" />
+
         <img src="{{{1|}}}" alt="{{{1|}}}" class="swiper-image" />
 
       </div>
 
       </div>
 
       |}} {{#if:{{{2|}}}|
 
       |}} {{#if:{{{2|}}}|
 
       <div class="swiper-slide">
 
       <div class="swiper-slide">
         <img src="{{{2|}}}" alt="{{{2|}}}" class="swiper-image" onerror="this.closest('.swiper-slide').remove()" />
+
         <img src="{{{2|}}}" alt="{{{2|}}}" class="swiper-image" />
 
       </div>
 
       </div>
 
       |}} {{#if:{{{3|}}}|
 
       |}} {{#if:{{{3|}}}|
 
       <div class="swiper-slide">
 
       <div class="swiper-slide">
         <img src="{{{3|}}}" alt="{{{3|}}}" class="swiper-image" onerror="this.closest('.swiper-slide').remove()" />
+
         <img src="{{{3|}}}" alt="{{{3|}}}" class="swiper-image" />
 
       </div>
 
       </div>
 
       |}} {{#if:{{{4|}}}|
 
       |}} {{#if:{{{4|}}}|
 
       <div class="swiper-slide">
 
       <div class="swiper-slide">
         <img src="{{{4|}}}" alt="{{{4|}}}" class="swiper-image" onerror="this.closest('.swiper-slide').remove()" />
+
         <img src="{{{4|}}}" alt="{{{4|}}}" class="swiper-image" />
 
       </div>
 
       </div>
 
       |}} {{#if:{{{5|}}}|
 
       |}} {{#if:{{{5|}}}|
 
       <div class="swiper-slide">
 
       <div class="swiper-slide">
         <img src="{{{5|}}}" alt="{{{5|}}}" class="swiper-image" onerror="this.closest('.swiper-slide').remove()" />
+
         <img src="{{{5|}}}" alt="{{{5|}}}" class="swiper-image" />
 
       </div>
 
       </div>
 
       |}} {{#if:{{{6|}}}|
 
       |}} {{#if:{{{6|}}}|
 
       <div class="swiper-slide">
 
       <div class="swiper-slide">
         <img src="{{{6|}}}" alt="{{{6|}}}" class="swiper-image" onerror="this.closest('.swiper-slide').remove()" />
+
         <img src="{{{6|}}}" alt="{{{6|}}}" class="swiper-image" />
 
       </div>
 
       </div>
 
       |}} {{#if:{{{7|}}}|
 
       |}} {{#if:{{{7|}}}|
 
       <div class="swiper-slide">
 
       <div class="swiper-slide">
         <img src="{{{7|}}}" alt="{{{7|}}}" class="swiper-image" onerror="this.closest('.swiper-slide').remove()" />
+
         <img src="{{{7|}}}" alt="{{{7|}}}" class="swiper-image" />
 
       </div>
 
       </div>
 
       |}} {{#if:{{{8|}}}|
 
       |}} {{#if:{{{8|}}}|
 
       <div class="swiper-slide">
 
       <div class="swiper-slide">
         <img src="{{{8|}}}" alt="{{{8|}}}" class="swiper-image" onerror="this.closest('.swiper-slide').remove()" />
+
         <img src="{{{8|}}}" alt="{{{8|}}}" class="swiper-image" />
 
       </div>
 
       </div>
 
       |}} {{#if:{{{9|}}}|
 
       |}} {{#if:{{{9|}}}|
 
       <div class="swiper-slide">
 
       <div class="swiper-slide">
         <img src="{{{9|}}}" alt="{{{9|}}}" class="swiper-image" onerror="this.closest('.swiper-slide').remove()" />
+
         <img src="{{{9|}}}" alt="{{{9|}}}" class="swiper-image" />
 
       </div>
 
       </div>
 
       |}} {{#if:{{{10|}}}|
 
       |}} {{#if:{{{10|}}}|
 
       <div class="swiper-slide">
 
       <div class="swiper-slide">
         <img src="{{{10|}}}" alt="{{{10|}}}" class="swiper-image" onerror="this.closest('.swiper-slide').remove()" />
+
         <img src="{{{10|}}}" alt="{{{10|}}}" class="swiper-image" />
 
       </div>
 
       </div>
 
       |}}
 
       |}}
56번째 줄: 56번째 줄:
 
   <script>
 
   <script>
 
     document.addEventListener("DOMContentLoaded", function () {
 
     document.addEventListener("DOMContentLoaded", function () {
       new Swiper(".image-swiper-container", {
+
       var swiper = new Swiper(".image-swiper-container", {
 
         slidesPerView: 1,
 
         slidesPerView: 1,
 
         spaceBetween: 28,
 
         spaceBetween: 28,
68번째 줄: 68번째 줄:
 
           },
 
           },
 
         },
 
         },
 +
      });
 +
 +
      // 이미지 로딩 타임아웃 및 에러 처리
 +
      var swiperContainer = document.querySelector('.image-swiper-container');
 +
      document.querySelectorAll('.image-swiper-container .swiper-image').forEach(function(img) {
 +
        var timeout;
 +
        var removeSlide = function() {
 +
          clearTimeout(timeout);
 +
 +
          // 슬라이드 제거
 +
          var slideToRemove = img.closest('.swiper-slide');
 +
          if (slideToRemove) {
 +
            slideToRemove.remove();
 +
          }
 +
 +
          swiper.update();
 +
 +
          // 슬라이드 제거 후 남은 슬라이드 확인
 +
          var remainingSlides = document.querySelectorAll('.image-swiper-container .swiper-slide');
 +
          console.log('남은 슬라이드 개수:', remainingSlides.length);
 +
 +
          // 슬라이드가 하나도 없으면 스와이퍼 컨테이너 및 상위 h2 제거
 +
          if (remainingSlides.length === 0 ) {
 +
            if(swiperContainer){
 +
              console.log('슬라이드가 없어서 스와이퍼 컨테이너 제거');
 +
 +
              // id가 "이미지"인 h2 찾기
 +
              var imageHeading = document.querySelector('#이미지');
 +
              if (imageHeading) {
 +
                // h2 요소의 부모 찾기 (일반적으로 h2.mw-headline의 부모)
 +
                var headingParent = imageHeading.closest('h2');
 +
                if (headingParent) {
 +
                  console.log('이미지 섹션 제목도 제거');
 +
                  headingParent.remove();
 +
                }
 +
              }
 +
 +
              swiperContainer.remove();
 +
            }
 +
          }
 +
        };
 +
 +
        // 1.5초 타임아웃 설정
 +
        timeout = setTimeout(function() {
 +
          if (!img.complete) {
 +
            removeSlide();
 +
          } else if (img.naturalHeight === 0) {
 +
            removeSlide();
 +
          }
 +
        }, 1500);
 +
 +
        // 이미지 로딩 성공 시 타임아웃 취소
 +
        img.addEventListener('load', function() {
 +
          clearTimeout(timeout);
 +
        });
 +
 +
        // 이미지 로딩 실패 시 슬라이드 제거
 +
        img.addEventListener('error', function() {
 +
          removeSlide();
 +
        });
 
       });
 
       });
 
     });
 
     });

2025년 12월 29일 (월) 11:22 기준 최신판