← Blurr Motion pricing-magnetic-cta-editorial
Categorie pricing Tier 1 Techniek #12 Deps gsap

Three editions, one craft

Atelier

€499/maand

  • 5 projecten
  • Editorial care
  • 1 redacteur
Begin

Maison

€999/maand

  • Onbeperkte projecten
  • Toegewijde art-director
  • Maandelijkse review
  • Print-ready bestanden
Begin

Privé

€2499/maand

  • Whitelabel atelier
  • Wekelijkse calls
  • Onbeperkt seats
Begin
1. Mechanisme — kopieer 1-op-1, geen styling-keuzes
// Mechanisme: pricing-magnetic-cta-editorial — magnetic CTA + auto-demo lemniscaat
import gsap from 'https://esm.sh/[email protected]';
if(window.matchMedia('(prefers-reduced-motion: reduce)').matches)return;
const ctas=document.querySelectorAll('.mag-cta');
ctas.forEach(el=>{
  const qx=gsap.quickTo(el,'x',{duration:1.4,ease:'expo.out'});
  const qy=gsap.quickTo(el,'y',{duration:1.4,ease:'expo.out'});
  el.addEventListener('mousemove',e=>{const r=el.getBoundingClientRect();qx((e.clientX-r.left-r.width/2)*0.45);qy((e.clientY-r.top-r.height/2)*0.45);});
  el.addEventListener('mouseleave',()=>{qx(0);qy(0);});
});
// AUTO-DEMO: lemniscaat-pad zodat magnetism zichtbaar is zonder cursor
let t=0;
function loop(){
  t+=0.012;
  const s=Math.sin(t),c=Math.cos(t);
  const dx=0.65*c/(1+s*s), dy=0.55*s*c/(1+s*s);
  ctas.forEach(el=>{const r=el.getBoundingClientRect();gsap.to(el,{x:dx*r.width*0.45,y:dy*r.height*0.6,duration:1.4,ease:'expo.out',overwrite:'auto'});});
  requestAnimationFrame(loop);
}
loop();
2. Skeleton — DOM + class-namen, mag herschikken
<!-- Skeleton: pricing-magnetic-cta-editorial — 3 cards met magnetic Begin-CTA -->
<div class="ed-grid">
  <article class="ed-card">
    <p class="ed-tier"><em>Atelier</em></p>
    <p class="ed-price">€499</p>
    <ul><li>5 projecten</li><li>Editorial care</li></ul>
    <a class="mag-cta" href="#"><em>Begin</em></a>
  </article>
</div>
3. Styling-template — verplicht eigen invulling per merk
/* Styling: pricing-magnetic-cta-editorial — cream + Fraunces serif italic, asymmetrisch */
.ed-card { background:#F4F1EB; font-family:'Fraunces',serif; }
.mag-cta { font-style:italic; border:1px solid #0A0A0A; padding:1.2rem 2.6rem; border-radius:999px; }