パーツ番号 07-01-07 ・ JavaScript使用
ミニカルーセル
前後ボタンとドットで横スライド切替する軽量カルーセル。WordPressのメインビジュアルやお客様の声の表示に、プラグインなしで対応。
プレビュー
ソースコード
HTML
<div class="d07-01-07-carousel">
<div class="d07-01-07-view">
<div class="d07-01-07-track">
<div class="d07-01-07-slide d07-01-07-sl1"><span>🌄</span><em>スライド 1</em></div>
<div class="d07-01-07-slide d07-01-07-sl2"><span>🏞️</span><em>スライド 2</em></div>
<div class="d07-01-07-slide d07-01-07-sl3"><span>🌌</span><em>スライド 3</em></div>
</div>
<button class="d07-01-07-nav d07-01-07-prev" type="button" aria-label="前へ">‹</button>
<button class="d07-01-07-nav d07-01-07-next" type="button" aria-label="次へ">›</button>
</div>
<div class="d07-01-07-dots">
<button class="d07-01-07-dot is-active" type="button" aria-label="1枚目"></button>
<button class="d07-01-07-dot" type="button" aria-label="2枚目"></button>
<button class="d07-01-07-dot" type="button" aria-label="3枚目"></button>
</div>
</div>CSS
.d07-01-07-carousel{display:flex;flex-direction:column;gap:10px;align-items:center}
.d07-01-07-view{position:relative;width:230px;height:150px;border-radius:12px;overflow:hidden;box-shadow:0 8px 20px rgba(0,0,0,.15)}
.d07-01-07-track{display:flex;height:100%;transition:transform .45s cubic-bezier(.4,0,.2,1)}
.d07-01-07-slide{flex:0 0 100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#fff}
.d07-01-07-slide span{font-size:44px}
.d07-01-07-slide em{font-size:12px;font-style:normal;opacity:.9}
.d07-01-07-sl1{background:linear-gradient(135deg,#f97316,#db2777)}
.d07-01-07-sl2{background:linear-gradient(135deg,#14b8a6,#0284c7)}
.d07-01-07-sl3{background:linear-gradient(135deg,#4338ca,#0f172a)}
.d07-01-07-nav{position:absolute;top:50%;transform:translateY(-50%);width:30px;height:30px;border:none;border-radius:50%;background:rgba(255,255,255,.85);color:#0f172a;font-size:18px;line-height:1;cursor:pointer;transition:background .2s ease;display:flex;align-items:center;justify-content:center}
.d07-01-07-nav:hover{background:#fff}
.d07-01-07-prev{left:8px}
.d07-01-07-next{right:8px}
.d07-01-07-dots{display:flex;gap:8px}
.d07-01-07-dot{width:9px;height:9px;padding:0;border:none;border-radius:50%;background:#cbd5e1;cursor:pointer;transition:background .25s ease,transform .25s ease}
.d07-01-07-dot.is-active{background:#0f172a;transform:scale(1.25)}JavaScript
(function(){
var root=document.querySelector('#item-07-01-07 .d07-01-07-carousel');if(!root)return;
var track=root.querySelector('.d07-01-07-track');
var dots=root.querySelectorAll('.d07-01-07-dot');
var total=3,idx=0;
function go(i){
idx=(i+total)%total;
track.style.transform='translateX(-'+(idx*100)+'%)';
dots.forEach(function(d,n){d.classList.toggle('is-active',n===idx);});
}
root.querySelector('.d07-01-07-prev').addEventListener('click',function(){go(idx-1);});
root.querySelector('.d07-01-07-next').addEventListener('click',function(){go(idx+1);});
dots.forEach(function(d,n){d.addEventListener('click',function(){go(n);});});
})();クラス名 .d07-01-07 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。