Leve
45,7 KB minificado, 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/.
Cada exemplo abaixo e renderizado com a propria folha de estilos demonstrada. Sem preprocessador. Sem JavaScript. Sem dependencias extras. Copie qualquer trecho em um arquivo HTML novo e funciona.
Elementos interativos que o visitante clica, toca ou foca para conduzir a pagina.
Um gatilho de acao semantico e personalizavel. As variantes solidas e outline incluem seis cores de marca cada.
<a href="#" class="button primary">Primary</a>
<a href="#" class="button secondary">Secondary</a>
<a href="#" class="button tertiary">Tertiary</a>
Variantes outline:
<a href="#" class="button primary-outline">Outline</a>
<a href="#" class="button secondary-outline">Outline</a>
Nota de acessibilidade. Cada variante
.buttoninclui um anel:focus-visiblee uma area de toque minima de 44x44 px (WCAG 2.2 SC 2.5.8). Use<button type="button">para acoes na pagina e<a href>apenas para navegacao.
Um rotulo compacto para status, contagem ou categoria. O tamanho do texto e fixo para que os badges se alinhem com o texto ao redor.
<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>
Default Primary Success Warning Danger
Nota de acessibilidade. Badges sao decorativos por padrao. Quando o badge carrega o unico sinal (ex.: contagem de nao lidos), envolva-o em um helper visualmente oculto:
<span class="visually-hidden">3 mensagens nao lidas</span>.
Superficies que informam ao visitante que algo aconteceu — ou esta prestes a acontecer.
Mensagens de status com intencao semantica. Na v2.0.0, cada variante
tem namespace explicito sob .alert-{primary,secondary,info,success,warning,error}
para que a classe de variante nao colida com classes de estado em outro
lugar da pagina.
<div class="alert alert-primary" role="alert">
<strong>Atencao.</strong> Este e um alerta primario.
</div>
<div class="alert alert-success" role="status">
<strong>Salvo.</strong> Suas alteracoes foram persistidas.
</div>
<div class="alert alert-warning" role="alert">
<strong>Cuidado.</strong> Esta acao afeta o estado compartilhado.
</div>
<div class="alert alert-error" role="alert">
<strong>Erro.</strong> Nao foi possivel salvar o formulario.
</div>
Nota de acessibilidade. Use
role="alert"para mensagens que exigem atencao imediata (erros, avisos) erole="status"para confirmacoes nao urgentes. Ambos expoem a mensagem para tecnologia assistiva no momento em que aparece.
Conteineres que enquadram e agrupam conteudo relacionado.
Um conteiner com borda e preenchimento para uma unica unidade coerente.
Combine com o grid flex-N para paredes de cards responsivas.
<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 minificado, 8,3 KB gzipped.
WCAG 2.2 em conformidade desde a instalacao.
Cascade-layered para sobrescrita facil.
Nota de acessibilidade. Envolva cada card em um marco semantico (
<article>,<section>) e inicie seu conteudo com um titulo (<h3>). Usuarios de leitores de tela podem entao navegar pela lista de cards como regioes navegaveis de primeira classe.
Entradas, rotulos e agrupamentos para coletar dados do usuario.
Labels, inputs de texto, textareas, fieldsets e legends — todos dimensionados de forma consistente com o restante do design system.
<form>
<label for="name">Name</label>
<input id="name" type="text" required>
<label for="email">Email</label>
<input id="email" type="email" required class="input-primary">
<label for="msg">Message</label>
<textarea id="msg" rows="4"></textarea>
<button type="submit" class="button primary">Send</button>
</form>
Nota de acessibilidade. Cada input deve ter um
<label for="…">associado programaticamente. Agrupe controles relacionados dentro de um<fieldset>com um<legend>. Marque campos obrigatorios comrequired(e um asterisco visivel no texto do label).
Primitivas estruturais — grid, container, header — que enquadram toda a pagina.
Um grid responsivo flex-N (1 → 12 colunas) construido sobre flexbox.
O pai .row adiciona gaps e wraps automaticamente.
<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>
Nota de acessibilidade. A ordem visual deve corresponder a ordem do DOM. Evite reordenar linhas com
flex-direction: row-reverseouorder:— leitores de tela e usuarios de teclado seguem o codigo-fonte, nao a renderizacao.
Um header completo apenas com CSS e um toggle hamburger responsivo.
Zero JavaScript. Copie o trecho abaixo em uma pagina HTML que ja
carrega skeletonic.min.css e o menu colapsa, expande e prende o
foco corretamente por conta propria.
<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="#">Brand</a>
<input class="sk-toggle" id="sk-nav-toggle" type="checkbox" aria-label="Toggle navigation">
<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="#">Docs</a></li>
<li><a href="#">Components</a></li>
<li><a href="#">About</a></li>
</ul>
</header>
Nota de acessibilidade. O checkbox oculto permanece na ordem de tabulacao para que usuarios de teclado possam abrir o menu com
SpaceouEnter. O<label>possuiaria-hiddenporque o checkbox em si e a fonte do nome acessivel. Redimensione a janela abaixo de 640 px para ver o toggle hamburger assumir o controle.