Leichtgewichtig
45,7 KB minifiziert, 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/.
Jedes Beispiel auf dieser Seite wird mit genau dem Stylesheet gerendert, das hier vorgestellt wird. Kein Praeprozessor. Kein JavaScript. Keine zusaetzlichen Abhaengigkeiten. Jeden Ausschnitt in eine leere HTML-Datei kopieren — fertig.
Interaktive Elemente, die Besuchende anklicken, antippen oder fokussieren, um die Seite zu steuern.
Ein semantischer, thematisierbarer Aktionstrigger. Volle und Outline-Varianten liefern je sechs Markenfarben.
<a href="#" class="button primary">Primary</a>
<a href="#" class="button secondary">Secondary</a>
<a href="#" class="button tertiary">Tertiary</a>
Outline-Varianten:
<a href="#" class="button primary-outline">Outline</a>
<a href="#" class="button secondary-outline">Outline</a>
Hinweis zur Barrierefreiheit. Jede
.button-Variante hat einen:focus-visible-Ring und eine Mindest-Trefferflaeche von 24×24 px (WCAG 2.2 SC 2.5.8).<button type="button">fuer seiteninternes Verhalten verwenden,<a href>ausschliesslich fuer Navigation.
Ein kompaktes Label fuer Status, Anzahl oder Kategorie. Die Schriftgroesse ist fixiert, damit Badges sich am umgebenden Text ausrichten.
<span class="badge">Default</span>
<span class="badge primary">Primary</span>
<span class="badge success">Success</span>
<span class="badge warning">Warning</span>
<span class="badge danger">Danger</span>
Standard Primaer Erfolg Warnung Gefahr
Hinweis zur Barrierefreiheit. Badges sind standardmaessig dekorativ. Wenn das Badge das einzige Signal traegt (z. B. eine Anzahl ungelesener Nachrichten), in einen visuell versteckten Helfer einbetten:
<span class="visually-hidden">3 ungelesene Nachrichten</span>.
Oberflaechen, die Besuchende informieren, dass etwas geschehen ist — oder bald geschehen wird.
Statusmeldungen mit semantischer Bedeutung. In v2.0.0 ist jede Variante
explizit unter .alert-{primary,secondary,info,success,warning,error}
benannt, damit die Variantenklasse nicht mit Zustandsklassen anderswo
auf der Seite kollidiert.
<div class="alert alert-primary" role="alert">
<strong>Achtung.</strong> Dies ist ein primaerer Hinweis.
</div>
<div class="alert alert-success" role="status">
<strong>Gespeichert.</strong> Die Aenderungen wurden uebernommen.
</div>
<div class="alert alert-warning" role="alert">
<strong>Vorsicht.</strong> Diese Aktion betrifft gemeinsam genutzten Zustand.
</div>
<div class="alert alert-error" role="alert">
<strong>Fehler.</strong> Das Formular konnte nicht gespeichert werden.
</div>
Hinweis zur Barrierefreiheit.
role="alert"fuer Meldungen verwenden, die sofortige Aufmerksamkeit erfordern (Fehler, Warnungen), undrole="status"fuer nicht dringende Bestaetigungen. Beide machen die Meldung fuer assistive Technologien sofort sichtbar.
Container, die zusammengehoerige Inhalte rahmen und gruppieren.
Ein umrandeter, mit Abstand versehener Container fuer eine einzelne
zusammenhaengende Einheit. Mit dem flex-N-Raster kombinieren fuer
responsive Kartenwände.
<section class="row">
<article class="card flex-1">
<div class="card-content">
<h3 class="card-title">Lightweight</h3>
<p>38.8 KB minified, 7.7 KB gzipped.</p>
</div>
</article>
<article class="card flex-1">
<div class="card-content">
<h3 class="card-title">Accessible</h3>
<p>WCAG 2.2 conformant out of the box.</p>
</div>
</article>
<article class="card flex-1">
<div class="card-content">
<h3 class="card-title">Modular</h3>
<p>Cascade-layered for easy overrides.</p>
</div>
</article>
</section>
45,7 KB minifiziert, 8,3 KB gzipped.
WCAG 2.2-konform ab Werk.
Cascade-Layer fuer einfaches Ueberschreiben.
Hinweis zur Barrierefreiheit. Jede Karte in ein semantisches Landmark einbetten (
<article>,<section>) und den Inhalt mit einer Ueberschrift (<h3>) beginnen. Screenreader-Nutzende koennen die Kartenliste dann als vollwertige navigierbare Bereiche durchlaufen.
Eingabefelder, Labels und Gruppierungen zur Erfassung von Benutzerdaten.
Labels, Textfelder, Textbereiche, Fieldsets und Legenden — alle einheitlich zum restlichen Designsystem dimensioniert.
<form>
<label for="name">Name</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">Nachricht</label>
<textarea id="msg" rows="4"></textarea>
<button type="submit" class="button primary">Senden</button>
</form>
Hinweis zur Barrierefreiheit. Jedes Eingabefeld muss ein programmatisch verknuepftes
<label for="...">haben. Zusammengehoerige Steuerelemente in ein<fieldset>mit einer<legend>einbetten. Pflichtfelder mitrequired(und einem sichtbaren Sternchen im Label-Text) kennzeichnen.
Strukturelle Grundbausteine — Raster, Container, Kopfzeile — die das gesamte Seitenlayout bilden.
Ein responsives flex-N-Raster (1 bis 12 Spalten), basierend auf Flexbox.
Der .row-Elterncontainer fuegt Abstaende ein und umbricht automatisch.
<div class="row">
<div class="flex-6">Half</div>
<div class="flex-6">Half</div>
</div>
<div class="row">
<div class="flex-4">Third</div>
<div class="flex-4">Third</div>
<div class="flex-4">Third</div>
</div>
Hinweis zur Barrierefreiheit. Die visuelle Reihenfolge sollte der DOM-Reihenfolge entsprechen. Zeilen nicht mit
flex-direction: row-reverseoderorder:umordnen — Screenreader und Tastaturnutzende folgen dem Quelltext, nicht der Darstellung.
Eine vollstaendige, rein CSS-basierte Kopfzeile mit responsivem
Hamburger-Toggle. Kein JavaScript. Den folgenden Ausschnitt in eine
leere HTML-Seite kopieren, die bereits skeletonic.min.css laedt — das
Menue klappt sich korrekt ein, aus und haelt den Fokus selbststaendig.
<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="#">Marke</a>
<input class="sk-toggle" id="sk-nav-toggle" type="checkbox" aria-label="Navigation umschalten">
<label class="sk-burger" for="sk-nav-toggle" aria-hidden="true">☰</label>
<ul class="sk-menu">
<li><a href="#">Startseite</a></li>
<li><a href="#">Dokumentation</a></li>
<li><a href="#">Komponenten</a></li>
<li><a href="#">Ueber uns</a></li>
</ul>
</header>
Hinweis zur Barrierefreiheit. Die versteckte Checkbox bleibt in der Tab-Reihenfolge, damit Tastaturnutzende das Menue mit
LeertasteoderEingabetasteoeffnen koennen. Das<label>traegtaria-hidden, da die Checkbox selbst die barrierefreie Namensquelle ist. Das Browserfenster unter 640 px verkleinern, um den Hamburger-Toggle in Aktion zu sehen.
Alle Hinweise zur Barrierefreiheit ansehen → · Farbpaletten durchstoebern →