Lichtgewicht
45,7 KB geminificeerd, 8,3 KB gzipped.
Translation note (2026-04-30). v2.0.0 adds RTL support and a refreshed 2026 framework comparison. The English source is the canonical reference while these translations catch up. See https://skeletonic.io/about/ · https://skeletonic.io/components/ · https://skeletonic.io/benchmarks/.
Elk voorbeeld hieronder wordt weergegeven met hetzelfde stylesheet dat wordt gedemonstreerd. Geen preprocessor. Geen JavaScript. Geen extra afhankelijkheden. Kopieer elk fragment in een nieuw HTML-bestand en het werkt.
Interactieve elementen waarop de bezoeker klikt, tikt of focust om de pagina aan te sturen.
Een semantische, thematiseerbare actietrigger. Gevulde en omlijning-varianten leveren elk zes merkkleuren.
<a href="#" class="button primary">Primary</a>
<a href="#" class="button secondary">Secondary</a>
<a href="#" class="button tertiary">Tertiary</a>
Omlijning-varianten:
<a href="#" class="button primary-outline">Omlijning</a>
<a href="#" class="button secondary-outline">Omlijning</a>
Toegankelijkheidsnoot. Elke
.button-variant wordt geleverd met een:focus-visible-ring en een minimaal raakgebied van 24×24 px (WCAG 2.2 SC 2.5.8). Gebruik<button type="button">voor acties op de pagina en<a href>alleen voor navigatie.
Een compact label voor status, telling of categorie. Tekstgrootte is vast zodat badges uitlijnen met omringende tekst.
<span class="badge">Standaard</span>
<span class="badge primary">Primary</span>
<span class="badge success">Succes</span>
<span class="badge warning">Waarschuwing</span>
<span class="badge danger">Gevaar</span>
Standaard Primary Succes Waarschuwing Gevaar
Toegankelijkheidsnoot. Badges zijn standaard decoratief. Wanneer de badge het enige signaal draagt (bijv. een ongelezen telling), wikkel het in een visueel verborgen helper:
<span class="visually-hidden">3 ongelezen berichten</span>.
Oppervlakken die de bezoeker vertellen dat er iets is gebeurd — of gaat gebeuren.
Statusberichten met semantische intentie. In v2.0.0 is elke variant
expliciet genaamd onder .alert-{primary,secondary,info,success,warning,error}
zodat de variantklasse niet kan botsen met statusklassen elders op
de pagina.
<div class="alert alert-primary" role="alert">
<strong>Let op.</strong> Dit is een primaire melding.
</div>
<div class="alert alert-success" role="status">
<strong>Opgeslagen.</strong> Je wijzigingen zijn bewaard.
</div>
<div class="alert alert-warning" role="alert">
<strong>Voorzichtig.</strong> Deze actie raakt gedeelde status.
</div>
<div class="alert alert-error" role="alert">
<strong>Fout.</strong> Het formulier kon niet worden opgeslagen.
</div>
Toegankelijkheidsnoot. Gebruik
role="alert"voor berichten die onmiddellijke aandacht vereisen (fouten, waarschuwingen) enrole="status"voor niet-urgente bevestigingen. Beide stellen het bericht beschikbaar voor hulptechnologie op het moment dat het verschijnt.
Containers die gerelateerde inhoud inkaderen en groeperen.
Een omrande, opgevulde container voor een enkele samenhangende eenheid. Combineer
met het flex-N-grid voor responsieve kaartwanden.
<section class="row">
<article class="card flex-1">
<div class="card-content">
<h3 class="card-title">Lichtgewicht</h3>
<p>45,7 KB geminificeerd, 8,3 KB gzipped.</p>
</div>
</article>
<article class="card flex-1">
<div class="card-content">
<h3 class="card-title">Toegankelijk</h3>
<p>WCAG 2.2 conform uit de doos.</p>
</div>
</article>
<article class="card flex-1">
<div class="card-content">
<h3 class="card-title">Modulair</h3>
<p>Cascade-layered voor eenvoudige overschrijvingen.</p>
</div>
</article>
</section>
45,7 KB geminificeerd, 8,3 KB gzipped.
WCAG 2.2 conform uit de doos.
Cascade-layered voor eenvoudige overschrijvingen.
Toegankelijkheidsnoot. Wikkel elke kaart in een semantische landmark (
<article>,<section>) en begin de inhoud met een kop (<h3>). Schermlezergebruikers kunnen dan de kaartenlijst doorkruisen als navigeerbare regio's van eerste klasse.
Invoervelden, labels en groeperingen voor het verzamelen van gebruikersgegevens.
Labels, tekstinvoervelden, textarea's, fieldsets en legends — allemaal consistent in grootte met de rest van het ontwerpsysteem.
<form>
<label for="name">Naam</label>
<input id="name" type="text" required>
<label for="email">E-mail</label>
<input id="email" type="email" required class="input-primary">
<label for="msg">Bericht</label>
<textarea id="msg" rows="4"></textarea>
<button type="submit" class="button primary">Versturen</button>
</form>
Toegankelijkheidsnoot. Elk invoerveld moet een programmatisch gekoppeld
<label for="…">hebben. Groepeer gerelateerde besturingselementen in een<fieldset>met een<legend>. Markeer verplichte velden metrequired(en een zichtbaar sterretje in de labeltekst).
Structurele bouwstenen — grid, container, header — die de hele pagina inkaderen.
Een responsief flex-N-grid (1 → 12 kolommen) gebouwd op flexbox. De
.row-ouder biedt automatisch tussenruimte en omloop.
<div class="row">
<div class="flex-6">Helft</div>
<div class="flex-6">Helft</div>
</div>
<div class="row">
<div class="flex-4">Derde</div>
<div class="flex-4">Derde</div>
<div class="flex-4">Derde</div>
</div>
Toegankelijkheidsnoot. Visuele volgorde moet overeenkomen met DOM-volgorde. Vermijd het herschikken van rijen met
flex-direction: row-reverseoforder:— schermlezers en toetsenbordgebruikers volgen de broncode, niet de weergave.
Een complete CSS-only header met een responsieve hamburgerschakelaar. Geen
JavaScript. Kopieer het onderstaande fragment in een nieuw HTML-bestand dat
al skeletonic.min.css laadt en het menu klapt in, klapt uit
en vangt focus correct op uit zichzelf.
<style>
.sk-header{position:relative;display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;border:1px solid #e4e4e7;border-radius:.5rem;background:#fff;}
.sk-header .sk-brand{font-weight:600;color:#0a0a0a;text-decoration:none;}
.sk-header .sk-toggle{position:absolute;left:-9999px;}
.sk-header .sk-burger{display:none;margin-left:auto;cursor:pointer;padding:.625rem .75rem;border:1px solid #e4e4e7;border-radius:.375rem;font-size:1.125rem;line-height:1;min-width:2.75rem;min-height:2.75rem;}
.sk-header .sk-burger:focus-within,.sk-header .sk-toggle:focus-visible+.sk-burger{outline:2px solid hsl(210,100%,42%);outline-offset:2px;}
.sk-header .sk-menu{list-style:none;display:flex;gap:.25rem;margin:0 0 0 auto;padding:0;}
.sk-header .sk-menu a{display:inline-flex;align-items:center;min-height:2.75rem;padding:.5rem .875rem;border-radius:.375rem;color:#1a1a1a;text-decoration:none;}
.sk-header .sk-menu a:hover{background:#f4f4f5;}
@media (max-width:640px){
.sk-header .sk-burger{display:inline-flex;align-items:center;justify-content:center;}
.sk-header .sk-menu{display:none;flex-direction:column;gap:0;position:absolute;top:calc(100% + .25rem);left:0;right:0;background:#fff;border:1px solid #e4e4e7;border-radius:.5rem;padding:.375rem;box-shadow:0 4px 24px rgba(0,0,0,.08);z-index:10;}
.sk-header .sk-menu a{padding:.75rem 1rem;border-bottom:1px solid #f4f4f5;}
.sk-header .sk-menu li:last-child a{border-bottom:0;}
.sk-header .sk-toggle:checked ~ .sk-menu{display:flex;}
}
</style>
<header class="sk-header">
<a class="sk-brand" href="#">Merk</a>
<input class="sk-toggle" id="sk-nav-toggle" type="checkbox" aria-label="Navigatie in-/uitklappen">
<label class="sk-burger" for="sk-nav-toggle" aria-hidden="true">☰</label>
<ul class="sk-menu">
<li><a href="#">Home</a></li>
<li><a href="#">Documentatie</a></li>
<li><a href="#">Componenten</a></li>
<li><a href="#">Over ons</a></li>
</ul>
</header>
Toegankelijkheidsnoot. Het verborgen selectievakje blijft in de tabvolgorde zodat toetsenbordgebruikers het menu kunnen openen met
SpaceofEnter. Het<label>draagtaria-hiddenomdat het selectievakje zelf de toegankelijke naambron is. Verklein het venster onder 640 px om de hamburgerschakelaar te zien overnemen.