Eu pensei que seria útil consolidar as informações mais recentes sobre barras de rolagem, CSS e compatibilidade do navegador.
Suporte de CSS da barra de rolagem
Atualmente, não existem definições de estilo CSS na barra de rolagem entre navegadores. O artigo do W3C que mencionei no final tem a seguinte declaração e foi atualizado recentemente (10 de outubro de 2014):
Alguns navegadores (IE, Konqueror) suportam as propriedades não padrão 'scrollbar-shadow-color', 'scrollbar-track-color' e outros. Essas propriedades são ilegais: elas não são definidas em nenhuma especificação CSS nem são marcadas como proprietárias (prefixando-as com "-vendor-")
Microsoft
Como já mencionado, a Microsoft suporta o estilo da barra de rolagem, mas apenas para o IE8 e superior.
/* pseudo elements */::-webkit-scrollbar {}::-webkit-scrollbar-button {}::-webkit-scrollbar-track {}::-webkit-scrollbar-track-piece {}::-webkit-scrollbar-thumb {}::-webkit-scrollbar-corner {}::-webkit-resizer {}/* pseudo class selectors */:horizontal:vertical:decrement:increment:start:end:double-button:single-button:no-button:corner-present:window-inactive
Firefox (Gecko)
A partir da versão 64, o Firefox suporta o estilo da barra de rolagem pelas propriedades scrollbar-color(parcialmente, rascunho do W3C ) e scrollbar-width( rascunho do W3C ). Algumas boas informações sobre a implementação podem ser encontradas nesta resposta .
Estilo da barra de rolagem em vários navegadores
As bibliotecas e plug-ins JavaScript podem fornecer uma solução entre navegadores. Existem muitas opções.
A lista poderia continuar. Sua melhor aposta é pesquisar, pesquisar e testar as soluções disponíveis. Tenho certeza de que você poderá encontrar algo que atenda às suas necessidades.
Evitar o estilo ilegal da barra de rolagem
Caso você queira impedir o estilo da barra de rolagem que não tenha sido prefixado corretamente com "-vendor", este artigo no W3C fornece algumas instruções básicas . Basicamente, você precisará adicionar o seguinte CSS a uma folha de estilos do usuário associada ao seu navegador. Essas definições substituirão o estilo inválido da barra de rolagem em qualquer página que você visitar.
A web existe há mais de duas décadas e ainda não existe uma maneira padrão de estilizar barras de rolagem. Vinte anos de comitês de padrões sem perceber que as pessoas rolam as coisas. Não há taxa de palmas lentas e sarcásticas que expressem adequadamente como isso me faz sentir. Mas um atraso de 20 anos entre o primeiro e o segundo aplauso seria, eu acho, adequado. Para alguma perspectiva, eu ainda não nasci quando a WWW foi lançada e agora sou engenheiro de computação. Muito bem, W3C.
Parthian Shot
3
Só para adicionar meus dois centavos: o Gmail e o Youtube estilizaram a barra de rolagem no Chrome e a nativa no Explorer e Firefox. Se esses padrões são suficientemente bom para eles é bom o suficiente para mim também
yonatanmn
9
@ PaulD.Waite Bem, talvez, mas isso pode ser aplicado a qualquer coisa. E o CSS existe como uma linguagem precisamente para que os designers possam optar por substituir os padrões. A idéia é que um designer de interface do usuário ruim pode tornar qualquer elemento pouco intuitivo, mas assim que você assume que o designer do site é incompetente, qual é o sentido de permitir a personalização da página?
Parthian Shot
6
@ PaulD.Waite Claramente, isso não é uma dessas coisas. Em parte porque é na área da tela que o designer do site deve controlar inteiramente, de qualquer maneira, para não representar risco à segurança e em parte porque claramente - na prática - é um problema. Muitos sites implementam seus próprios hacks para criar coisas que parecem e se comportam como barras de rolagem, e funcionam bem. Eles não apenas funcionam bem e têm melhor aparência, mas as pessoas realmente entendem como usá-las, e esse é o ponto. Infelizmente, por serem hacks, às vezes não funcionam bem com coisas como a funcionalidade de impressão.
Parthian Shot
5
Esta resposta não aborda completamente sua pergunta, que era como aplicar estilos de barra de rolagem a uma div específica , em vez de a uma página inteira.
Tenho certeza de que provavelmente é personalizável, mas a demonstração em sua página rola muito devagar e a barra de rolagem é muito difícil de pegar.
Ganso
4
Como praticamente todos os plugins jQuery - [estremece] - isso é muito lento em comparação com as implementações de rolagem acelerada por GPU nativas e encadeadas. Completamente inadequado para aplicações sérias e um obstáculo a um bom UX. Eu recomendo que você evite isso, a menos que seja para um site de brinquedos.
John Weisz
2
Eu odeio quando as pessoas chamam algo de javascript puro, então BAM! um plugin jquery.
Dinh Tran
Eu não recomendaria o uso do nicescroll, pois desativa a funcionalidade do navegador. A rolagem com o clique do meio não funciona com o nicescroll.
Aloso 16/07/19
amo esse niceScroll, ele não adiciona div de wrapper ao redor do elemento, o que significa que não quebra a estrutura html
datdinhquoc 02/02
11
Barras de rolagem personalizadas não são possíveis com CSS, você precisará de um pouco de magia JavaScript.
Alguns navegadores oferecem suporte a regras CSS não especificadas, como ::-webkit-scrollbarno Webkit, mas não é o ideal, pois funcionará apenas no Webkit. O IE também tinha algo assim, mas acho que eles não apóiam mais.
Como muitas pessoas, eu estava procurando por algo que fosse:
Estilo e funcionalidade consistentes nos navegadores mais modernos
Não é uma ridícula extensão jQuery de 3000 linhas inchada cr * p
... Mas infelizmente - nada!
Bem, se vale a pena fazer um trabalho ... Consegui colocar algo em funcionamento em cerca de 30 minutos. Exoneração de responsabilidade: existem alguns problemas conhecidos (e provavelmente alguns ainda desconhecidos) com ele, mas isso me faz pensar no que diabos as outras 2920 linhas de JS existem em muitas ofertas!
Obrigado pela demonstração. Eu o executei pela primeira vez com o Firefox 58.0.2 (64 bits, Windows 7 Pro / 64) e todas as suas barras de rolagem eram idênticas. Em seguida, foi executado com a versão 65.0.3325.162 do Chrome (versão oficial) (64 bits) e todos eram diferentes. Então (talvez não intencionalmente) você demonstrou as limitações da -webkit-abordagem.
COD-REaD
4
Nova versão do Firefox (64) suporta CSS Scrollbars Module Level 1
Uma resposta mais concisa. IMHO, na verdade, respondeu à pergunta do OP, que era como estilizar apenas uma div. Agradável.
Danimal Reks
2
Existe uma maneira pela qual você pode aplicar barras de rolagem personalizadas a elementos div personalizados em seus documentos HTML. Aqui está um exemplo que ajuda. https://codepen.io/adeelibr/pen/dKqZNb Mas como uma essência disso. Você pode fazer algo assim.
É isso que o Google usa em algumas de suas aplicações há muito tempo. Veja no código que, se você aplicar as próximas aulas, elas de alguma forma ocultam a barra de rolagem no Chrome, mas ainda funciona.
As aulas são jfk-scrollbar, jfk-scrollbar-borderlessejfk-scrollbar-dark
Achei útil remover as setas das barras de rolagem. A partir de 2015, ele era usado no Google Maps ao pesquisar lugares na lista de resultados em sua interface de design de material.
Eu tentei vários scrolls JS e CSS e achei que era muito fácil de usar e testado no IE, Safari e FF e funcionou bem
AS @thebluefox sugere
Aqui está como isso funciona
Adicione o script abaixo ao
<scripttype="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script><scripttype="text/javascript"src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script><scripttype="text/javascript"src="jquery.ui.touch-punch.min.js"></script><scripttype="text/javascript"src="facescroll.js"></script><scripttype="text/javascript">
jQuery(function(){// on page DOM load
$('#demo1').alternateScroll();
$('#demo2').alternateScroll({'vertical-bar-class':'styled-v-bar','hide-bars':false});})</script>
E isso aqui no parágrafo em que você precisa rolar
<divid="demo1"style="width:300px;height:250px;padding:8px;resize:both;overflow:scroll">
**Your Paragraph Comes Here**
</div>
Os navegadores Webkit (como Chrome, Safari e Opera) suportam o pseudo-elemento :: - webkit-scrollbar não padrão , que nos permite modificar a aparência da barra de rolagem do navegador.
Nota: O :: - webkit-scrollbar não é suportado pelo Firefox ou IE e Edge.
<divclass="box"><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate</p><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate</p><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate</p></div><div><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate</p><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate</p><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate</p></div>
overflow:auto;
apenas a isso<div>
. Mais alguns detalhes do plano de fundo?Respostas:
Eu pensei que seria útil consolidar as informações mais recentes sobre barras de rolagem, CSS e compatibilidade do navegador.
Suporte de CSS da barra de rolagem
Atualmente, não existem definições de estilo CSS na barra de rolagem entre navegadores. O artigo do W3C que mencionei no final tem a seguinte declaração e foi atualizado recentemente (10 de outubro de 2014):
Microsoft
Como já mencionado, a Microsoft suporta o estilo da barra de rolagem, mas apenas para o IE8 e superior.
Exemplo:
Chrome e Safari (WebKit)
Da mesma forma, o WebKit agora tem sua própria versão:
Nas barras de rolagem personalizadas no WebKit , CSS relevante:
Firefox (Gecko)
A partir da versão 64, o Firefox suporta o estilo da barra de rolagem pelas propriedades
scrollbar-color
(parcialmente, rascunho do W3C ) escrollbar-width
( rascunho do W3C ). Algumas boas informações sobre a implementação podem ser encontradas nesta resposta .Estilo da barra de rolagem em vários navegadores
As bibliotecas e plug-ins JavaScript podem fornecer uma solução entre navegadores. Existem muitas opções.
A lista poderia continuar. Sua melhor aposta é pesquisar, pesquisar e testar as soluções disponíveis. Tenho certeza de que você poderá encontrar algo que atenda às suas necessidades.
Evitar o estilo ilegal da barra de rolagem
Caso você queira impedir o estilo da barra de rolagem que não tenha sido prefixado corretamente com "-vendor", este artigo no W3C fornece algumas instruções básicas . Basicamente, você precisará adicionar o seguinte CSS a uma folha de estilos do usuário associada ao seu navegador. Essas definições substituirão o estilo inválido da barra de rolagem em qualquer página que você visitar.
Perguntas / fontes duplicadas ou similares não vinculadas acima
Nota: Esta resposta contém informações de várias fontes. Se uma fonte foi usada, ela também está vinculada nesta resposta.
fonte
Faça uma tentativa
Fonte: https://nicescroll.areaaperta.com/
Implementação Simples
É uma barra de rolagem do plugin jQuery, portanto, suas barras de rolagem são controláveis e têm a mesma aparência nos vários sistemas operacionais.
fonte
Barras de rolagem personalizadas não são possíveis com CSS, você precisará de um pouco de magia JavaScript.
Alguns navegadores oferecem suporte a regras CSS não especificadas, como
::-webkit-scrollbar
no Webkit, mas não é o ideal, pois funcionará apenas no Webkit. O IE também tinha algo assim, mas acho que eles não apóiam mais.fonte
Como muitas pessoas, eu estava procurando por algo que fosse:
... Mas infelizmente - nada!
Bem, se vale a pena fazer um trabalho ... Consegui colocar algo em funcionamento em cerca de 30 minutos. Exoneração de responsabilidade: existem alguns problemas conhecidos (e provavelmente alguns ainda desconhecidos) com ele, mas isso me faz pensar no que diabos as outras 2920 linhas de JS existem em muitas ofertas!
fonte
Eu tentei muitos plugins, a maioria deles não suporta todos os navegadores, prefiro o iScroll e o nanoScroller funciona para todos esses navegadores:
Mas o iScroll não funciona com toque!
demo iScroll : http://lab.cubiq.org/iscroll/examples/simple/
demo nanoScroller : http://jamesflorentino.github.io/nanoScrollerJS/
fonte
Por favor, verifique este link. Exemplo com demonstração de trabalho
Barras de rolagem CSS
fonte
-webkit-
abordagem.Nova versão do Firefox (64) suporta CSS Scrollbars Module Level 1
Fonte: https://developer.mozilla.org/pt-BR/docs/Web/CSS/CSS_Scrollbars
https://codepen.io/fatihhayri/pen/pqdrbd
fonte
Aqui está um exemplo de kit de web que funciona para Chrome e Safari:
CSS:
Resultado:
fonte
me deu um bom mobile / osx como um.
fonte
Existe uma maneira pela qual você pode aplicar barras de rolagem personalizadas a elementos div personalizados em seus documentos HTML. Aqui está um exemplo que ajuda. https://codepen.io/adeelibr/pen/dKqZNb Mas como uma essência disso. Você pode fazer algo assim.
O arquivo CSS fica assim.
fonte
É isso que o Google usa em algumas de suas aplicações há muito tempo. Veja no código que, se você aplicar as próximas aulas, elas de alguma forma ocultam a barra de rolagem no Chrome, mas ainda funciona.
As aulas são
jfk-scrollbar
,jfk-scrollbar-borderless
ejfk-scrollbar-dark
http://jsfiddle.net/76kcuem0/32/
Achei útil remover as setas das barras de rolagem. A partir de 2015, ele era usado no Google Maps ao pesquisar lugares na lista de resultados em sua interface de design de material.
fonte
A barra de rolagem do Webkit não suporta a maioria dos navegadores.
Suporte no CHROME
Outro método é o plug-in da barra de rolagem do Jquery
Ele suporta em todos os navegadores e fácil de aplicar
DEMO
fonte
Eu tentei vários scrolls JS e CSS e achei que era muito fácil de usar e testado no IE, Safari e FF e funcionou bem
AS @thebluefox sugere
Aqui está como isso funciona
Adicione o script abaixo ao
E isso aqui no parágrafo em que você precisa rolar
Para mais detalhes, visite a página do plugin
Barra de rolagem personalizada do FaceScroll
espero que ajude
fonte
Para as pessoas que ainda procuram uma boa solução, apenas descubro este plugin na barra simples
No meu caso, eu estava procurando soluções reactJS, o autor também fornece wrappers para reag, angular, vue e próximos exemplos
fonte
Os navegadores Webkit (como Chrome, Safari e Opera) suportam o pseudo-elemento :: - webkit-scrollbar não padrão , que nos permite modificar a aparência da barra de rolagem do navegador.
Nota: O :: - webkit-scrollbar não é suportado pelo Firefox ou IE e Edge.
Referência: Como criar uma barra de rolagem personalizada
fonte
Usar apenas CSS funciona no Firefox +64
Mais informações: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Scrollbars
fonte
Suponha que você tenha a div como
Aplicar estilos CSS como
O Scroll resultante aparecerá como
fonte
Ou use algo assim:
E inicialize:
E personalize:
fonte