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

Verzendknop met alle staten New

Submit button that stays disabled until the e-mail is valid, then loads (spinner, aria-busy) and ends in success (tick) or error (brief shake, cross, explanation) before returning to normal. Pick whether the next try succeeds; the strip below shows every state side by side. CSS keyframes, no shake with reduced motion.

Vul eerst een geldig e-mailadres in.

Volgende poging:

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.
<!-- Verzendknop met alle staten · NedDev · eigen werk. -->
<div class="jouw-container">
<div class="skf"><div class="skf__in">
<form class="skf__form" novalidate>
<label class="skf__l" for="skf-m">Nieuwsbrief van Bakkerij Verhoef</label>
<div class="skf__row"><input class="skf__i" id="skf-m" type="email" autocomplete="email" placeholder="naam@voorbeeld.nl" aria-describedby="skf-h"><button class="skf__btn" type="submit" data-s="idle" disabled aria-describedby="skf-h"><span class="skf__ic" aria-hidden="true"><span class="skf__spin"></span><svg class="skf__ok" viewBox="0 0 16 16"><path d="M3 8.5l3 3 7-7"/></svg><svg class="skf__no" viewBox="0 0 16 16"><path d="M4 4l8 8M12 4l-8 8"/></svg></span><span class="skf__t">Aanmelden</span></button></div>
<p class="skf__h" id="skf-h">Vul eerst een geldig e-mailadres in.</p>
<div class="skf__sim"><span id="skf-sl">Volgende poging:</span><span class="skf__seg" role="radiogroup" aria-labelledby="skf-sl"><label><input type="radio" name="skf-r" value="ok" checked><span>slaagt</span></label><label><input type="radio" name="skf-r" value="fout"><span>mislukt</span></label></span></div>
</form>
<div class="skf__all" aria-hidden="true">
<span class="skf__mini"><span class="skf__btn skf__btn--m" data-s="idle"><span class="skf__t">Aanmelden</span></span><small>standaard</small></span>
<span class="skf__mini"><span class="skf__btn skf__btn--m is-off" data-s="idle"><span class="skf__t">Aanmelden</span></span><small>uit</small></span>
<span class="skf__mini"><span class="skf__btn skf__btn--m" data-s="laden"><span class="skf__ic"><span class="skf__spin"></span></span><span class="skf__t">Bezig</span></span><small>laden</small></span>
<span class="skf__mini"><span class="skf__btn skf__btn--m" data-s="ok"><span class="skf__ic"><svg class="skf__ok" viewBox="0 0 16 16"><path d="M3 8.5l3 3 7-7"/></svg></span><span class="skf__t">Gelukt</span></span><small>succes</small></span>
<span class="skf__mini"><span class="skf__btn skf__btn--m" data-s="fout"><span class="skf__ic"><svg class="skf__no" viewBox="0 0 16 16"><path d="M4 4l8 8M12 4l-8 8"/></svg></span><span class="skf__t">Mislukt</span></span><small>fout</small></span>
</div>
<p class="skf__live" 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 →