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

パーツ番号 06-03-09 ・ JavaScript使用

メンバー一覧→詳細切替

小さいメンバーをクリックすると大きな詳細プロフィールに切り替わります(JS)。省スペースでチーム全員を紹介したい時に。

clickjs

プレビュー

ソースコード

HTML

<div class="d06-03-09-wrap">
          <div class="d06-03-09-detail">
            <div class="d06-03-09-ava" data-init="IK" style="background:linear-gradient(135deg,#6a8dff,#9b6bff)">IK</div>
            <div class="d06-03-09-name">井上 健太</div>
            <div class="d06-03-09-role">プロジェクトマネージャー</div>
          </div>
          <div class="d06-03-09-list">
            <button class="d06-03-09-thumb is-active" type="button" data-n="井上 健太" data-r="プロジェクトマネージャー" data-i="IK" data-g="linear-gradient(135deg,#6a8dff,#9b6bff)" style="background:linear-gradient(135deg,#6a8dff,#9b6bff)">IK</button>
            <button class="d06-03-09-thumb" type="button" data-n="森田 彩" data-r="マーケター" data-i="AM" data-g="linear-gradient(135deg,#3ec6b0,#5ac8fa)" style="background:linear-gradient(135deg,#3ec6b0,#5ac8fa)">AM</button>
            <button class="d06-03-09-thumb" type="button" data-n="渡辺 直樹" data-r="バックエンド" data-i="NW" data-g="linear-gradient(135deg,#ff8fb1,#a86bff)" style="background:linear-gradient(135deg,#ff8fb1,#a86bff)">NW</button>
            <button class="d06-03-09-thumb" type="button" data-n="岡田 里佳" data-r="デザイナー" data-i="RO" data-g="linear-gradient(135deg,#ffb347,#ff7e5f)" style="background:linear-gradient(135deg,#ffb347,#ff7e5f)">RO</button>
          </div>
        </div>

CSS

.d06-03-09-wrap{width:220px;text-align:center}
        .d06-03-09-detail{background:#fff;border-radius:16px;padding:20px;box-shadow:0 8px 22px rgba(40,60,110,.12)}
        .d06-03-09-detail .d06-03-09-ava{width:76px;height:76px;border-radius:50%;margin:0 auto 12px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:24px;transition:transform .3s}
        .d06-03-09-name{font-weight:700;color:#243053;font-size:16px}
        .d06-03-09-role{font-size:12px;color:#8590ad;margin-top:3px}
        .d06-03-09-list{display:flex;justify-content:center;gap:10px;margin-top:14px}
        .d06-03-09-thumb{width:40px;height:40px;border-radius:50%;border:2px solid transparent;color:#fff;font-weight:700;font-size:12px;cursor:pointer;opacity:.6;transition:opacity .25s,border-color .25s,transform .2s}
        .d06-03-09-thumb:hover{transform:translateY(-3px)}
        .d06-03-09-thumb.is-active{opacity:1;border-color:#243053}

JavaScript

(function(){
        var wrap=document.querySelector('#item-06-03-09 .d06-03-09-wrap');
        if(!wrap)return;
        var ava=wrap.querySelector('.d06-03-09-detail .d06-03-09-ava'),
            name=wrap.querySelector('.d06-03-09-name'),
            role=wrap.querySelector('.d06-03-09-role'),
            thumbs=wrap.querySelectorAll('.d06-03-09-thumb');
        thumbs.forEach(function(b){
          b.addEventListener('click',function(){
            thumbs.forEach(function(x){x.classList.remove('is-active')});
            b.classList.add('is-active');
            ava.textContent=b.dataset.i;ava.style.background=b.dataset.g;
            ava.style.transform='scale(.7)';
            requestAnimationFrame(function(){ava.style.transform='scale(1)'});
            name.textContent=b.dataset.n;role.textContent=b.dataset.r;
          });
        });
      })();

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