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
Gerador de Cartão CSS
Crie o CSS de um contêiner de cartão: fundo, borda, raio dos cantos, espaçamento interno e sombra suave, com pré-visualização imediata e código para copiar e colar.
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.
Conversor de Tamanho de Arquivo
Converta entre bytes, KB, MB, GB, TB e as unidades binárias IEC (KiB, MiB, GiB, TiB), combinando decimal e binário como preferir.
Visualizador de Markdown
Escreva Markdown e veja a renderização HTML atualizar ao vivo. Sintaxe com estilo GitHub, incluindo tabelas, listas de tarefas, blocos de código cercados e autolinks.
Gerador de Docker Compose
Gere um docker-compose.yml a partir de definições de serviços com imagem, portas e volumes, com padrões de boas práticas.
Conversor de base numérica
Converta números entre binário, octal, decimal, hexadecimal e qualquer base personalizada de 2 a 36, com o detalhamento posicional.
Ferramenta disponível em outros idiomas
- Generator paska przewijania CSS [PL]
- Générateur de barre de défilement CSS [FR]
- CSSスクロールバージェネレーター [JA]
- CSS-generator för rullningslist [SV]
- CSS-Scrollbar-Generator [DE]
- Generator Bilah Gulir CSS [ID]
- Trình tạo thanh cuộn CSS [VI]
- مولّد شريط التمرير CSS [AR]
- Generador de barra de desplazamiento CSS [ES]
- CSS 스크롤바 생성기 [KO]
- เครื่องสร้างแถบเลื่อน CSS [TH]
- CSS-schuifbalkgenerator [NL]
- CSS Scrollbar Generator [EN]
- Generatore di barre di scorrimento CSS [IT]
- Генератор CSS-скроллбара [RU]
- CSS Kaydırma Çubuğu Oluşturucu [TR]
- CSS滚动条生成器 [ZH]