Introdução

Em setembro de 2018, a W3C CSS Scrollbars definiu especificações para a personalização da aparência de barras de rolagem com o CSS.

Desde 2020, 96% dos usuários da internet já estão utilizando navegadores que suportam a estilização da barra de rolagem do CSS. No entanto, você precisará escrever dois conjuntos de regras CSS para cobrir o Blink e WebKit, bem como os navegadores Firefox.

Neste tutorial, você irá aprender a como usar o CSS para personalizar barras de rolagem para dar suporte a navegadores modernos.

Pré-requisitos

rolagem illustration for: Pré-requisitos

Para acompanhar este artigo, você irá precisar do seguinte:

Estilizando barras de rolagem no Chrome, Edge e Safari

Atualmente, a estilização de barras de rolagem para o Chrome, Edge e o Safari está disponível com o pseudoelemento do prefixo de fabricante -webkit-scrollbar.

Aqui está um exemplo que usa os pseudoelementos ::-webkit-scrollbar, ::-webkit-scrollbar-track e ::webkit-scrollbar-thumb:

				
					
body::-webkit-scrollbar {

  width: 12px;               /* width of the entire scrollbar */

}



body::-webkit-scrollbar-track {

  background: orange;        /* color of the tracking area */

}



body::-webkit-scrollbar-thumb {

  background-color: blue;    /* color of the scroll thumb */

  border-radius: 20px;       /* roundness of the scroll thumb */

  border: 3px solid orange;  /* creates padding around scroll thumb */

}

				
			

Aqui está uma captura de tela da barra de rolagem produzida com essas regras do CSS:

Este código funciona nas versões mais recentes do Chrome, Edge e Safari.

Infelizmente, essa especificação foi oficialmente abandonada pela W3C e provavelmente será descontinuada ao longo do tempo.

Estilizando barras de rolagem no Firefox

Atualmente, a estilização de barras para o Firefox está disponível com as novas CSS Scrollbars.

Aqui está um exemplo que usa as propriedades scrollbar-width e scrollbar-color:

				
					
body {

  scrollbar-width: thin;          /* "auto" or "thin" */

  scrollbar-color: blue orange;   /* scroll thumb and track */

}

				
			

Aqui está uma captura de tela da barra de rolagem produzida com essas regras do CSS:

Essa especificação possui algumas características em comum com a especificação -webkit-scrollbar para o controle da cor da barra de rolagem. No entanto, atualmente, não há suporte para modificar o preenchimento e arredondamento para o "track thumb".

Construindo estilos de barra de rolagem à prova do tempo

É possível escrever seu CSS de forma a suportar tanto as especificações de -webkit-scrollbar quanto das CSS Scrollbars.

Aqui está um exemplo que usa scrollbar-width, scrollbar-color, ::-webkit-scrollbar, ::-webkit-scrollbar-track e ::webkit-scrollbar-thumb:

				
					
/* Works on Firefox */

* {

  scrollbar-width: thin;

  scrollbar-color: blue orange;

}



/* Works on Chrome, Edge, and Safari */

*::-webkit-scrollbar {

  width: 12px;

}



*::-webkit-scrollbar-track {

  background: orange;

}



*::-webkit-scrollbar-thumb {

  background-color: blue;

  border-radius: 20px;

  border: 3px solid orange;

}

				
			

Os navegadores Blink e WebKit irão ignorar as regras que eles não reconhecem e aplicar as regras de -webkit-scrollbar. Os navegadores Firefox irão ignorar as regras que não reconhecem e aplicar as regras de CSS Scrollbars . Assim que os navegadores Blink e WebKit descontinuarem totalmente a especificação -webkit-scrollbar, eles passarão a utilizar as novas especificações das CSS Scrollbars.

Conclusão

Neste artigo, foi apresentada a utilização do CSS para estilizar barras de rolagem e como garantir que esses estilos sejam reconhecidos na maioria dos navegadores modernos.

Também é possível simular uma barra de rolagem escondendo a barra de rolagem padrão e usando o JavaScript para detectar a altura e a posição de rolagem. No entanto, essas abordagens enfrentam limitações com a reprodução de experiências como a rolagem por inércia (por exemplo, o movimento em decadência ao fazer a rolagem com trackpads).

Se quiser aprender mais sobre o CSS, confira nossa página de tópico do CSS para exercícios e projetos de programação.