パーツ番号 06-11-05 ・ JavaScript使用
絵文字リアクション選択バー
コメント下の絵文字ボタンを押すとポップして選択状態になり件数が増える。掲示板やチャットのリアクション機能のデザイン見本に。
プレビュー
ソースコード
HTML
<div class="d06-11-05-wrap">
<div class="d06-11-05-comment">
<span class="d06-11-05-name">はると</span>
<p>ついに公開されましたね!</p>
</div>
<div class="d06-11-05-bar">
<button class="d06-11-05-emoji" type="button"><span class="d06-11-05-e">👍</span><span class="d06-11-05-c">2</span></button>
<button class="d06-11-05-emoji" type="button"><span class="d06-11-05-e">🎉</span><span class="d06-11-05-c">0</span></button>
<button class="d06-11-05-emoji" type="button"><span class="d06-11-05-e">❤️</span><span class="d06-11-05-c">1</span></button>
<button class="d06-11-05-emoji" type="button"><span class="d06-11-05-e">😮</span><span class="d06-11-05-c">0</span></button>
</div>
</div>CSS
.d06-11-05-wrap{width:100%;max-width:260px;display:flex;flex-direction:column;gap:10px}
.d06-11-05-comment p{margin:2px 0 0;font-size:12px;color:#4b5563}
.d06-11-05-name{font-size:11px;font-weight:700;color:#374151}
.d06-11-05-bar{display:flex;gap:6px;flex-wrap:wrap}
.d06-11-05-emoji{display:flex;align-items:center;gap:4px;border:1px solid #e5e7eb;background:#fff;border-radius:999px;padding:4px 9px;font-size:12px;cursor:pointer;transition:border-color .2s,background .2s}
.d06-11-05-emoji.d06-11-05-active{border-color:#6366f1;background:#eef2ff}
.d06-11-05-emoji.d06-11-05-pop .d06-11-05-e{animation:d1305pop .35s ease}
@keyframes d1305pop{0%{transform:scale(1)}50%{transform:scale(1.35)}100%{transform:scale(1)}}
.d06-11-05-c{font-size:11px;color:#6b7280;font-weight:700}JavaScript
(function(){
var article = document.currentScript.closest('article');
var root = article.querySelector('.d06-11-05');
var buttons = root.querySelectorAll('.d06-11-05-emoji');
buttons.forEach(function(btn){
var countEl = btn.querySelector('.d06-11-05-c');
var active = false;
btn.addEventListener('click', function(){
active = !active;
var count = parseInt(countEl.textContent, 10) || 0;
count += active ? 1 : -1;
countEl.textContent = count;
btn.classList.toggle('d06-11-05-active', active);
btn.classList.remove('d06-11-05-pop');
void btn.offsetWidth;
btn.classList.add('d06-11-05-pop');
});
});
})();クラス名 .d06-11-05 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。