Gerador de barra de rolagem CSS
As barras de rolagem personalizadas já foram um pesadelo de pseudoelementos com prefixo de fornecedor. Hoje, scrollbar-color e scrollbar-width cobrem os casos mais comuns em todos os navegadores modernos: largura estreita ou normal e um tema de duas cores (cursor e trilho). Para controle no nível do pixel (espaçamento interno do trilho, raio do cursor, estados ao passar o mouse), os antigos pseudoelementos ::-webkit-scrollbar ainda funcionam no Chrome e no Safari. Este gerador produz as duas versões e as combina corretamente em cascata.
Como estilizar uma barra de rolagem
-
1
Escolha a largura
Auto (largura padrão da plataforma), fina (mais estreita) ou um valor específico em pixels pelas regras do webkit.
-
2
Defina as cores do cursor e do trilho
A moderna `scrollbar-color` aceita duas cores. As regras do webkit oferecem cor, raio e estados ao passar o mouse separados.
-
3
Adicione um efeito ao passar o mouse (opcional)
O cursor clareia ao passar o mouse. Funciona via `::-webkit-scrollbar-thumb:hover`.
-
4
Decida o escopo
Aplique em `html` / `body` (página inteira) ou apenas em um contêiner rolável específico.
-
5
Copie o CSS
Regras modernas e do webkit combinadas: funciona em qualquer navegador moderno com degradação elegante.
Propriedades padrão modernas (2023 em diante)
/* Applies to the element that scrolls */
html {
scrollbar-width: thin; /* auto | thin | none */
scrollbar-color: #4f46e5 #e5e7eb; /* thumb track */
}
Compatibilidade dos navegadores (2024):
scrollbar-width: Chrome 121+, Safari 18.2+, Firefox 64+.scrollbar-color: Chrome 121+, Safari 18.2+, Firefox 64+.scrollbar-gutter: stable: Chrome 94+, Safari 14+, Firefox 97+. Reserva o espaço da barra de rolagem mesmo quando ela não é necessária, evitando deslocamentos no layout.
Pseudoelementos do webkit (Chrome, Safari, Edge mais antigo)
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
::-webkit-scrollbar-track {
background: #e5e7eb;
border-radius: 10px;
}
::-webkit-scrollbar-thumb {
background: #4f46e5;
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: #3730a3;
}
Um controle mais detalhado. width define a largura da barra de rolagem vertical; height define a altura da horizontal. Adicione as duas para contêineres que podem rolar em qualquer direção.
Combine as duas abordagens em cascata
Especifique primeiro as regras modernas e depois o webkit como aprimoramento para os navegadores que interpretam as duas:
.scroll-area {
scrollbar-width: thin;
scrollbar-color: #4f46e5 #e5e7eb;
}
.scroll-area::-webkit-scrollbar { width: 8px; }
.scroll-area::-webkit-scrollbar-track { background: #e5e7eb; }
.scroll-area::-webkit-scrollbar-thumb {
background: #4f46e5;
border-radius: 4px;
border: 2px solid #e5e7eb;
}
O Firefox respeita apenas as regras modernas scrollbar-*. O Chrome e o Safari respeitam as regras do webkit (que substituem as modernas, mantendo o comportamento consistente).
scrollbar-gutter evita o deslocamento do conteúdo
Sem um espaço reservado, o conteúdo se rearranja quando surge uma barra de rolagem (comum em listas dinâmicas). Solução:
html { scrollbar-gutter: stable; }
/* or */
html { scrollbar-gutter: stable both-edges; }
O espaço da barra de rolagem fica reservado independentemente de o conteúdo rolar ou não. both-edges adiciona um espaço equivalente no lado oposto para manter o conteúdo visualmente centralizado.
Ocultar as barras de rolagem por completo
.no-scrollbar {
scrollbar-width: none; /* Firefox */
}
.no-scrollbar::-webkit-scrollbar { display: none; } /* Chrome, Safari */
Cuidado: ocultar a barra de rolagem impede que os usuários percebam que o conteúdo pode rolar. Use apenas com um indicador claro (setas, pontos de página) ou quando a rolagem for evidente pelo contexto (carrosséis horizontais, históricos de conversa).
Considerações para dispositivos móveis
No iOS e no Android, as barras de rolagem só aparecem por um instante durante a rolagem. Seu CSS de barra personalizada continua sendo aplicado, mas os usuários talvez nunca o vejam por mais de um segundo. Projete de acordo: não invista demais em detalhes visuais que raramente aparecem.
Acessibilidade
- Contraste: o cursor em relação ao trilho deve atingir 3:1 para contraste não textual (WCAG 1.4.11).
- Largura: barras de rolagem finas podem ser difíceis de segurar com o mouse, sobretudo para usuários com deficiências motoras. A largura normal é um padrão mais seguro.
- Nunca remova a barra de rolagem em regiões roláveis sem oferecer outro meio de rolagem. Usuários que dependem da barra ficarão presos.
Perguntas frequentes
Sim, com as propriedades modernas scrollbar-width e scrollbar-color. O Firefox não suporta os pseudoelementos do webkit, então, para uma aparência consistente entre navegadores, use primeiro as propriedades modernas e adicione as regras do webkit como aprimoramento.
Porque as barras de rolagem padrão se sobrepõem ao conteúdo e não reservam espaço até serem necessárias. Defina scrollbar-gutter: stable no elemento rolável para reservar sempre o espaço, evitando o rearranjo quando a barra aparece ou desaparece.
Geralmente sim, porque a barra parece deslocada e compete com o conteúdo. Adicione pontos de paginação ou controles de seta visíveis para que os usuários continuem sabendo que o conteúdo rola. Respeite prefers-reduced-motion se usar ajuste de rolagem (scroll-snapping).
Pode afetar. Barras muito finas ou de baixo contraste são difíceis de usar para pessoas com deficiências motoras e baixa visão. Mantenha a barra com pelo menos 8–10 px de largura para uma pegada confortável e conserve um contraste de 3:1 entre o cursor e o trilho.
Ferramentas relacionadas
Referência da Tabela ASCII
Tabela ASCII completa de 0 a 127 com valores decimais, hexadecimais, octais e binários e notação de referência numérica HTML, incluindo NUL, LF e DEL.
Referência de Caracteres HTML
Lista pesquisável de entidades HTML, seus códigos nomeados e numéricos, e uma cópia com um clique para caracteres e símbolos especiais.
Referência de atalhos de teclado
Pesquise atalhos padrão documentados do VS Code, Chrome e Bash com GNU Readline no macOS, Windows e Linux.
Conversor de Binário para ASCII
Cole binário (bytes separados por espaço ou um longo fluxo de bits) e obtenha o texto ASCII que ele representa, decodificado 8 bits por vez.
Gerador de Cores Análogas
Crie uma paleta análoga de cinco cores a partir de qualquer cor base, com o trio clássico, dois tons externos e valores hex, RGB e HSL.
Conversor de ASCII para Hex
Converta texto ASCII em valores de byte hexadecimal. A saída usa dois dígitos hexadecimais por caractere, prontos para dumps de memória, rastreamentos de pacotes ou tabelas de firmware.