번들 가격

Bundle pricing

관련 상품을 묶어 개별 구매와 다른 총가치를 제안합니다.

···
html
<div class="bundle"><div class="items"><button data-price="24" class="on">A <small>$24</small></button><span>+</span><button data-price="18" class="on">B <small>$18</small></button><span>+</span><button data-price="12" class="on">C <small>$12</small></button></div><div class="totals"><div>SEPARATE <s id="sum">$54</s></div><div class="deal">BUNDLE <strong id="deal">$42</strong></div></div><div class="hint">TAP ITEMS TO COMPARE</div></div>
css
.bundle{width:min(94%,570px);font:800 clamp(9px,1.8vmin,15px)/1.2 sans-serif}.items{display:flex;justify-content:center;align-items:center;gap:clamp(4px,1vw,14px)}.items button{width:clamp(52px,15vmin,120px);height:clamp(52px,15vmin,120px);border:2px solid var(--line);background:var(--surface);color:var(--fg);font:900 clamp(18px,4vmin,38px)/1 sans-serif;cursor:pointer;transition:.25s}.items button.on{border-color:var(--accent);box-shadow:5px 5px 0 var(--accent)}.items button:not(.on){opacity:.4}.items small{display:block;margin-top:5px;font-size:clamp(9px,1.7vmin,14px)}.totals{display:flex;justify-content:space-between;align-items:center;margin-top:clamp(15px,4vmin,30px);gap:10px}.totals>div{background:var(--surface);padding:clamp(8px,2vmin,16px);border:1px solid var(--line);flex:1}.totals s,.totals strong{display:block;margin-top:4px;font-size:clamp(17px,4vmin,34px)}.deal{color:var(--accent)}.hint{text-align:center;color:var(--muted);margin-top:10px;font-size:clamp(8px,1.5vmin,12px);letter-spacing:.1em}
js
const buttons=[...document.querySelectorAll('[data-price]')];const sum=document.querySelector('#sum');const deal=document.querySelector('#deal');function update(){const total=buttons.filter(b=>b.classList.contains('on')).reduce((n,b)=>n+Number(b.dataset.price),0);sum.textContent='$'+total;deal.textContent='$'+Math.max(0,total-(buttons.every(b=>b.classList.contains('on'))?12:0))}buttons.forEach(b=>b.addEventListener('click',()=>{b.classList.toggle('on');update()}));setTimeout(()=>{buttons[2].classList.remove('on');update()},700);setTimeout(()=>{buttons[2].classList.add('on');update()},1500);

번들 가격은 두 개 이상의 상품을 한 제안으로 묶어 판매하는 방식입니다. 고객은 필요한 항목을 한 번에 해결하고, 판매자는 함께 쓸 때의 가치를 설명할 수 있습니다.

데모에서 항목을 탭하면 선택한 상품의 개별 가격 합계와 번들 가격이 달라집니다. 번들 절감액은 실제 개별 판매 가격을 기준으로 계산해야 합니다.

원하지 않는 상품을 끼워 넣어 값싸 보이게 하면 오히려 선택을 방해합니다. 번들이 해결하는 일과 구성품을 분명히 보여주세요.

언제 쓰나

서로 보완되는 상품의 동시 구매가 자연스러울 때 사용합니다. 선택 강요가 없는지도 점검하세요.

페이지로 열기 ↗