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

パーツ番号 07-01-06 ・ JavaScript使用

フィルターギャラリー

カテゴリボタンで該当タイルだけをふわっと絞り込み表示。WordPressの制作実績・メニュー一覧のカテゴリ分けにそのまま使える。

galleryjs

プレビュー

ソースコード

HTML

<div class="d07-01-06-inner">
          <div class="d07-01-06-btns">
            <button class="d07-01-06-btn is-active" data-cat="all" type="button">すべて</button>
            <button class="d07-01-06-btn" data-cat="sea" type="button">海</button>
            <button class="d07-01-06-btn" data-cat="mt" type="button">山</button>
          </div>
          <div class="d07-01-06-tiles">
            <div class="d07-01-06-tile" data-cat="sea"><span>🌊</span></div>
            <div class="d07-01-06-tile" data-cat="mt"><span>⛰️</span></div>
            <div class="d07-01-06-tile" data-cat="sea"><span>🐚</span></div>
            <div class="d07-01-06-tile" data-cat="mt"><span>🌲</span></div>
            <div class="d07-01-06-tile" data-cat="sea"><span>⛵</span></div>
            <div class="d07-01-06-tile" data-cat="mt"><span>🏕️</span></div>
          </div>
        </div>

CSS

.d07-01-06-inner{display:flex;flex-direction:column;gap:12px;align-items:center}
        .d07-01-06-btns{display:flex;gap:8px}
        .d07-01-06-btn{border:1px solid #cbd5e1;background:#fff;color:#475569;font-size:12px;padding:5px 14px;border-radius:999px;cursor:pointer;transition:all .25s ease}
        .d07-01-06-btn.is-active{background:#0f172a;border-color:#0f172a;color:#fff}
        .d07-01-06-tiles{display:grid;grid-template-columns:repeat(3,66px);gap:8px}
        .d07-01-06-tile{height:56px;border-radius:10px;display:flex;align-items:center;justify-content:center;transition:opacity .35s ease,transform .35s ease}
        .d07-01-06-tile span{font-size:24px}
        .d07-01-06-tile[data-cat="sea"]{background:linear-gradient(135deg,#22d3ee,#2563eb)}
        .d07-01-06-tile[data-cat="mt"]{background:linear-gradient(135deg,#65a30d,#15803d)}
        .d07-01-06-tile.is-hide{opacity:0;transform:scale(.7);pointer-events:none;position:absolute;visibility:hidden}
        .d07-01-06-tile.is-pop{animation:d056pop .4s ease}
        @keyframes d056pop{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}

JavaScript

(function(){
        var root=document.querySelector('#item-07-01-06 .d07-01-06-inner');if(!root)return;
        var btns=root.querySelectorAll('.d07-01-06-btn');
        var tiles=root.querySelectorAll('.d07-01-06-tile');
        btns.forEach(function(btn){
          btn.addEventListener('click',function(){
            btns.forEach(function(b){b.classList.remove('is-active');});
            btn.classList.add('is-active');
            var cat=btn.getAttribute('data-cat');
            tiles.forEach(function(t){
              var show=(cat==='all'||t.getAttribute('data-cat')===cat);
              t.classList.toggle('is-hide',!show);
              t.classList.remove('is-pop');
              if(show){void t.offsetWidth;t.classList.add('is-pop');}
            });
          });
        });
      })();

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