Home Work
SaaS developmentAI developmentAPI developmentMobile app developmentGoogle Ads managementHeadless ShopifyLaravel developmentNext.js developmentReact developmentTypeScript engineeringUI/UX designSEO & AEOEcommerce development
AI solutionsB2B platformsE-commerceHospitalityLead generationLogisticsEducationProcess automationSaaS platformsStartup MVPReal estateHealthcare
LegalHealthcareReal estateFinanceHospitality
The HagueRotterdamAmsterdamUtrechtEindhovenAlmereBredaArnhemNijmegenTilburgEnschedeGroningenLeidenDelftZoetermeerDen Bosch
Studio
AboutProcessLabBlogContact

Aandacht vragen, ingetogen New

Three calm ways to ask for attention, each with a reduced-motion variant: a button that pulses softly once after 4 seconds of inactivity (and never again), a field that briefly shakes on an error after submit (with an aria-live error message), and a counter badge that bumps when an item is added. Do: once, in response to the visitor. Do not: repeat, use on several buttons at once or as fake urgency. Plain CSS keyframes; tabs with arrow keys.

Na 4 seconden stilstand pulseert de knop één keer. Wel bij één hoofdactie, niet herhalen.

Wacht op stilstand.

How to use it

  1. Paste the HTML where the buttons should appear.
  2. Add the CSS to your stylesheet. All classes are prefixed, so nothing clashes with your own styles.
  3. Add the JavaScript and call init() with the element that contains the HTML.
<!-- Aandacht vragen, ingetogen · NedDev · eigen werk. -->
<div class="jouw-container">
<div class="atr">
<div class="atr__tabs" role="tablist" aria-label="Soorten aandacht">
<button class="atr__tab" type="button" role="tab" id="atr-t1" aria-controls="atr-p1" aria-selected="true">Zachte puls</button>
<button class="atr__tab" type="button" role="tab" id="atr-t2" aria-controls="atr-p2" aria-selected="false" tabindex="-1">Wiebel bij fout</button>
<button class="atr__tab" type="button" role="tab" id="atr-t3" aria-controls="atr-p3" aria-selected="false" tabindex="-1">Teller</button>
</div>
<div class="atr__panel" role="tabpanel" id="atr-p1" aria-labelledby="atr-t1">
<p class="atr__note">Na 4 seconden stilstand pulseert de knop één keer. Wel bij één hoofdactie, niet herhalen.</p>
<div class="atr__row"><button class="atr__cta atr__puls" type="button">Plan een adviesgesprek</button><button class="atr__link atr__reset" type="button">Opnieuw</button></div>
<p class="atr__st" aria-live="polite">Wacht op stilstand.</p>
</div>
<div class="atr__panel" role="tabpanel" id="atr-p2" aria-labelledby="atr-t2" hidden>
<p class="atr__note">Alleen na versturen, nooit tijdens het typen. De tekst legt uit wat er mis is.</p>
<form class="atr__form" novalidate><label class="atr__lab" for="atr-pc">Postcode</label><div class="atr__row"><input class="atr__in" id="atr-pc" type="text" inputmode="text" autocomplete="postal-code" placeholder="3511 AB" aria-describedby="atr-msg"><button class="atr__cta" type="submit">Controleer</button></div>
<p class="atr__msg" id="atr-msg" aria-live="polite"></p></form>
</div>
<div class="atr__panel" role="tabpanel" id="atr-p3" aria-labelledby="atr-t3" hidden>
<p class="atr__note">Een bevestiging van wat de bezoeker net deed, geen nep-urgentie.</p>
<div class="atr__row"><span class="atr__prod">Fietsbel, messing <b>€ 14,95</b></span><button class="atr__cta atr__add" type="button">In winkelmand</button>
<a class="atr__cart" href="#aandachtstrekker-set" aria-label="Winkelmand, leeg"><svg viewBox="0 0 20 20" aria-hidden="true"><path d="M2 3h2.5l2 10h9l1.8-7H6"/><circle cx="8" cy="16.5" r="1.2"/><circle cx="14.5" cy="16.5" r="1.2"/></svg><span class="atr__badge" hidden>0</span></a><button class="atr__link atr__empty" type="button">Leegmaken</button></div>
<p class="atr__st atr__cst" aria-live="polite"></p>
</div>
</div>
</div>

More buttons

Seen something you like?

Add it to your selection and send it over. We build your site around it, in your brand.

Get in touch →