パーツ番号 08-04-08 ・ JavaScript使用
縦スワイプ遷移(SPA風)
SNSアプリのような縦スワイプでページを切り替える演出。ニュース記事の連続閲覧UIなどに。
プレビュー
ソースコード
HTML
<div class="d08-04-08-stage">
<div class="d08-04-08-page d08-04-08-a">
<strong>ニュース</strong>
<p>最新情報一覧</p>
</div>
<div class="d08-04-08-page d08-04-08-b">
<strong>ニュース詳細</strong>
<p>本文を読む</p>
</div>
<div class="d08-04-08-dots">
<span class="d08-04-08-dot is-active"></span>
<span class="d08-04-08-dot"></span>
</div>
<button type="button" class="d08-04-08-btn d08-04-08-up">▲</button>
<button type="button" class="d08-04-08-btn d08-04-08-down">▼</button>
</div>CSS
.prev.d08-04-08{padding:0;}
.d08-04-08-stage{position:absolute;inset:0;overflow:hidden;font-family:sans-serif;}
.d08-04-08-page{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#fff;transition:transform .5s ease;}
.d08-04-08-a{background:linear-gradient(135deg,#059669,#047857);transform:translateY(0);}
.d08-04-08-b{background:linear-gradient(135deg,#7c3aed,#6d28d9);transform:translateY(100%);}
.d08-04-08-stage.is-b .d08-04-08-a{transform:translateY(-100%);}
.d08-04-08-stage.is-b .d08-04-08-b{transform:translateY(0);}
.d08-04-08-dots{position:absolute;right:12px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:6px;z-index:3;}
.d08-04-08-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,.4);transition:background .3s ease;}
.d08-04-08-dot.is-active{background:#fff;}
.d08-04-08-btn{position:absolute;left:50%;transform:translateX(-50%);z-index:3;border:none;border-radius:999px;width:30px;height:30px;background:#fff;color:#333;cursor:pointer;font-size:11px;}
.d08-04-08-up{top:10px;}
.d08-04-08-down{bottom:10px;}
.d08-04-08-page strong{font-size:18px;}
.d08-04-08-page p{font-size:12px;margin:0;opacity:.85;}JavaScript
(function(){
var box=document.currentScript.closest('.item').querySelector('.d08-04-08');
var stage=box.querySelector('.d08-04-08-stage');
var dots=box.querySelectorAll('.d08-04-08-dot');
var up=box.querySelector('.d08-04-08-up');
var down=box.querySelector('.d08-04-08-down');
function set(isB){
stage.classList.toggle('is-b',isB);
dots[0].classList.toggle('is-active',!isB);
dots[1].classList.toggle('is-active',isB);
}
down.addEventListener('click',function(){ set(true); });
up.addEventListener('click',function(){ set(false); });
})();クラス名 .d08-04-08 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。