pricing-tables
advanced
pricing
magnetic
hover
toggle
ui
Category · Pricing Tables Difficulty Level · Advanced Published on · September 10, 2025
Magnetic Attraction Pricing Table
Interactive pricing cards with a monthly/yearly toggle and a subtle magnetic hover effect that follows the pointer.
#pricing
#magnetic
#hover
#toggle
#ui
Responsive Design
Yes
Dark Mode Support
No
lines
415
Browser Compatibility
No
Live Preview
Interact with the component without leaving the page.
Usage scenarios
- Landing pages that need a premium pricing section
- SaaS plans with monthly/yearly billing
- Product pages where hover micro-interactions increase perceived quality
Parameters you can tweak
--accentand--accent2control the glow colorsdata-monthlyanddata-yearlycontrol displayed pricesmaxandstrengthin JavaScript control magnetic intensity
Common mistakes
- Loading the script before the markup exists
- Forgetting to include
data-monthlyanddata-yearlyattributes on each amount - Overriding
transformon.magnetic-pricing__cardInnerin your global CSS
Compatibility
- Works in modern Chromium, Firefox, Safari (pointer events required)
- Respects
prefers-reduced-motionby disabling the hover movement
HTML
91
lines
CSS
259
lines
JavaScript
65
lines
<section class="magnetic-pricing" data-magnetic-pricing>
<header class="magnetic-pricing__header">
<h2 class="magnetic-pricing__title">Pricing that reacts to your cursor</h2>
<p class="magnetic-pricing__subtitle">Magnetic hover + clean tier layout for landing pages</p>
</header>
<div class="magnetic-pricing__billing" role="group" aria-label="Billing period">
<span class="magnetic-pricing__label">Monthly</span>
<label class="magnetic-pricing__switch">
<input class="magnetic-pricing__checkbox" type="checkbox" aria-label="Toggle yearly billing" />
<span class="magnetic-pricing__slider" aria-hidden="true"></span>
</label>
<span class="magnetic-pricing__label">Yearly</span>
<span class="magnetic-pricing__badge">Save 25%</span>
</div>
<div class="magnetic-pricing__grid">
<article class="magnetic-pricing__card" data-plan>
<div class="magnetic-pricing__cardInner">
<div class="magnetic-pricing__top">
<h3 class="magnetic-pricing__plan">Starter</h3>
<p class="magnetic-pricing__desc">For personal projects</p>
</div>
<div class="magnetic-pricing__price">
<span class="magnetic-pricing__currency">\$</span>
<span class="magnetic-pricing__amount" data-monthly="19" data-yearly="14">19</span>
<span class="magnetic-pricing__period">/mo</span>
</div>
<ul class="magnetic-pricing__features">
<li>3 projects</li>
<li>10GB storage</li>
<li>Email support</li>
<li class="is-muted">API access</li>
</ul>
<button class="magnetic-pricing__cta" type="button">Choose Starter</button>
</div>
</article>
<article class="magnetic-pricing__card is-popular" data-plan>
<div class="magnetic-pricing__cardInner">
<div class="magnetic-pricing__pill">Most popular</div>
<div class="magnetic-pricing__top">
<h3 class="magnetic-pricing__plan">Team</h3>
<p class="magnetic-pricing__desc">For growing teams</p>
</div>
<div class="magnetic-pricing__price">
<span class="magnetic-pricing__currency">\$</span>
<span class="magnetic-pricing__amount" data-monthly="49" data-yearly="36">49</span>
<span class="magnetic-pricing__period">/mo</span>
</div>
<ul class="magnetic-pricing__features">
<li>10 projects</li>
<li>100GB storage</li>
<li>Priority support</li>
<li>API access</li>
</ul>
<button class="magnetic-pricing__cta" type="button">Choose Team</button>
</div>
</article>
<article class="magnetic-pricing__card" data-plan>
<div class="magnetic-pricing__cardInner">
<div class="magnetic-pricing__top">
<h3 class="magnetic-pricing__plan">Business</h3>
<p class="magnetic-pricing__desc">For larger orgs</p>
</div>
<div class="magnetic-pricing__price">
<span class="magnetic-pricing__currency">\$</span>
<span class="magnetic-pricing__amount" data-monthly="119" data-yearly="89">119</span>
<span class="magnetic-pricing__period">/mo</span>
</div>
<ul class="magnetic-pricing__features">
<li>Unlimited projects</li>
<li>1TB storage</li>
<li>SLA support</li>
<li>Advanced security</li>
</ul>
<button class="magnetic-pricing__cta" type="button">Choose Business</button>
</div>
</article>
</div>
</section>