パーツ番号 06-14-09 ・ JavaScript使用
QRコード生成風シェアパネル
ボタンを押すとドット柄のQRコード風パネルが展開する。店頭POPやチラシと連動したURL共有導線の見た目デモに。
プレビュー
ソースコード
HTML
<div class="d06-14-09-wrap">
<button class="d06-14-09-btn" type="button">QRコードでシェア</button>
<div class="d06-14-09-qr">
<div class="d06-14-09-grid"></div>
</div>
</div>CSS
.d06-14-09-wrap { display:flex; flex-direction:column; align-items:center; gap:10px; }
.d06-14-09-btn { border:none; border-radius:999px; background:#111827; color:#fff; padding:9px 16px; font-size:12.5px; font-weight:700; cursor:pointer; }
.d06-14-09-qr { width:0; height:0; overflow:hidden; opacity:0; transition:width .3s ease, height .3s ease, opacity .3s ease; background:#fff; border:1px solid #e5e7eb; border-radius:8px; }
.d06-14-09-qr.is-open { width:84px; height:84px; opacity:1; padding:6px; }
.d06-14-09-grid { width:100%; height:100%; display:grid; grid-template-columns:repeat(6,1fr); grid-template-rows:repeat(6,1fr); gap:2px; }
.d06-14-09-grid span { background:#111827; border-radius:1px; }JavaScript
(function(){
var root = document.querySelector('.d06-14-09');
var btn = root.querySelector('.d06-14-09-btn');
var qr = root.querySelector('.d06-14-09-qr');
var grid = root.querySelector('.d06-14-09-grid');
var built = false;
function build(){
if(built) return;
built = true;
for(var i=0;i<36;i++){
var cell = document.createElement('span');
if(Math.random() > 0.42){ cell.style.background = '#111827'; } else { cell.style.background = 'transparent'; }
grid.appendChild(cell);
}
}
btn.addEventListener('click', function(){
build();
qr.classList.toggle('is-open');
});
})();クラス名 .d06-14-09 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。