← 動的パーツギャラリーへ戻る

パーツ番号 10-13-04 ・ JavaScript使用

物件写真クロスフェードギャラリー

物件カードの写真が自動でクロスフェード切替。クリックや下のドットでも手動送りできます。一覧カードのサムネイル演出に。

clickautojs

プレビュー

ソースコード

HTML

<div class="d10-13-04-gallery">
          <span class="d10-13-04-slide is-active" style="background:linear-gradient(135deg,#f6c453,#e2504a)"></span>
          <span class="d10-13-04-slide" style="background:linear-gradient(135deg,#7fd1c1,#2f7fef)"></span>
          <span class="d10-13-04-slide" style="background:linear-gradient(135deg,#a9c9ff,#5a6b7a)"></span>
          <div class="d10-13-04-dots">
            <button class="d10-13-04-dot is-active" data-i="0" type="button" aria-label="1枚目"></button>
            <button class="d10-13-04-dot" data-i="1" type="button" aria-label="2枚目"></button>
            <button class="d10-13-04-dot" data-i="2" type="button" aria-label="3枚目"></button>
          </div>
          <span class="d10-13-04-badge">3枚の写真</span>
        </div>

CSS

.d10-13-04{padding:0}
        .d10-13-04-gallery{position:absolute;inset:0;overflow:hidden;cursor:pointer}
        .d10-13-04-slide{position:absolute;inset:0;opacity:0;transition:opacity 1s ease}
        .d10-13-04-slide.is-active{opacity:1}
        .d10-13-04-dots{position:absolute;left:0;right:0;bottom:12px;display:flex;justify-content:center;gap:6px}
        .d10-13-04-dot{width:7px;height:7px;border-radius:50%;border:none;background:rgba(255,255,255,.55);cursor:pointer;padding:0}
        .d10-13-04-dot.is-active{background:#fff;transform:scale(1.3)}
        .d10-13-04-badge{position:absolute;left:12px;top:12px;background:rgba(0,0,0,.45);color:#fff;font-size:11px;padding:4px 10px;border-radius:999px}

JavaScript

(function(){
        var root=document.getElementById('item-10-13-04');if(!root)return;
        var gallery=root.querySelector('.d10-13-04-gallery');
        var slides=root.querySelectorAll('.d10-13-04-slide');
        var dots=root.querySelectorAll('.d10-13-04-dot');
        var idx=0,timer;
        function show(i){
          idx=(i+slides.length)%slides.length;
          slides.forEach(function(s,j){s.classList.toggle('is-active',j===idx);});
          dots.forEach(function(d,j){d.classList.toggle('is-active',j===idx);});
        }
        function restart(){
          clearInterval(timer);
          timer=setInterval(function(){show(idx+1);},2400);
        }
        dots.forEach(function(d){
          d.addEventListener('click',function(e){
            e.stopPropagation();
            show(parseInt(d.getAttribute('data-i'),10));
            restart();
          });
        });
        gallery.addEventListener('click',function(){
          show(idx+1);
          restart();
        });
        restart();
      })();

クラス名 .d10-13-04 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。