パーツ番号 09-06-08 ・ JavaScript使用
ランキング順位変動アニメ
ボタンを押すと自分の順位が1つ上昇し、リスト内で滑らかに入れ替わります。学習サイトの得点ランキングや部門別順位表に使えます。
プレビュー
ソースコード
HTML
<div class="d09-06-08-box">
<ol class="d09-06-08-list">
<li class="d09-06-08-row"><span class="d09-06-08-rank">1</span><span class="d09-06-08-name">Aoi</span><span class="d09-06-08-pt">980pt</span></li>
<li class="d09-06-08-row"><span class="d09-06-08-rank">2</span><span class="d09-06-08-name">Rio</span><span class="d09-06-08-pt">860pt</span></li>
<li class="d09-06-08-row d09-06-08-me"><span class="d09-06-08-rank">3</span><span class="d09-06-08-name">You</span><span class="d09-06-08-pt">790pt</span></li>
<li class="d09-06-08-row"><span class="d09-06-08-rank">4</span><span class="d09-06-08-name">Sho</span><span class="d09-06-08-pt">710pt</span></li>
</ol>
<button type="button" class="d09-06-08-btn">スコア加算</button>
</div>CSS
.d09-06-08-box{display:flex;flex-direction:column;align-items:center}
.d09-06-08-list{list-style:none;margin:0 0 14px;padding:0;width:100%;max-width:260px;display:flex;flex-direction:column;gap:8px}
.d09-06-08-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:10px;
background:#f1f5f9;font-size:12.5px;font-weight:700;color:#334155;
transition:transform .5s cubic-bezier(.2,.8,.3,1)}
.d09-06-08-me{background:#dbeafe;color:#1d4ed8}
.d09-06-08-rank{width:18px;text-align:center;color:#94a3b8}
.d09-06-08-me .d09-06-08-rank{color:#2563eb}
.d09-06-08-name{flex:1}
.d09-06-08-btn{border:none;border-radius:999px;padding:9px 20px;background:#2563eb;color:#fff;font-size:12.5px;font-weight:700;cursor:pointer}JavaScript
(function(){
var root=document.getElementById('item-09-06-08');
if(!root)return;
var list=root.querySelector('.d09-06-08-list');
var btn=root.querySelector('.d09-06-08-btn');
btn.addEventListener('click',function(){
var me=list.querySelector('.d09-06-08-me');
var prev=me.previousElementSibling;
if(!prev)return;
var firstMe=me.getBoundingClientRect();
var firstPrev=prev.getBoundingClientRect();
list.insertBefore(me,prev);
list.querySelectorAll('.d09-06-08-rank').forEach(function(r,i){r.textContent=i+1;});
var lastMe=me.getBoundingClientRect();
var lastPrev=prev.getBoundingClientRect();
me.style.transition='none';prev.style.transition='none';
me.style.transform='translateY('+(firstMe.top-lastMe.top)+'px)';
prev.style.transform='translateY('+(firstPrev.top-lastPrev.top)+'px)';
requestAnimationFrame(function(){
me.style.transition='transform .5s cubic-bezier(.2,.8,.3,1)';
prev.style.transition='transform .5s cubic-bezier(.2,.8,.3,1)';
me.style.transform='';prev.style.transform='';
});
});
})();クラス名 .d09-06-08 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。