Tornando a barra de rolagem principal sempre visível


Respostas:


333
html {
    overflow: -moz-scrollbars-vertical; 
    overflow-y: scroll;
}

Isso torna a barra de rolagem sempre visível e ativa apenas quando necessário.

Atualização: Se o descrito acima não funcionar, basta usar esta opção.

html {
    overflow-y:scroll;
}

3
Você tem alguma ideia de qual versão do FF trouxe suporte overflow-y? Como parece que -moz-scrollbars-verticalé preterido em favor da overflow-ypropriedade.
Ionuţ G. Stan

Acho Internet Explorer 6.x +, Firefox 1.5+, se bem me lembro. Eu tenho usado o código acima e funciona em FF1.5-3.5.1 e IE6-8 para mim.
Corv1nus 29/07/2009

2
Existem alternativas para o "salto de página" quando determinadas páginas do seu site são muito pequenas para ter uma barra de rolagem e outras? Ou essa é a "melhor prática"? Vou ter que admitir, não vejo muitas páginas na web que não ocupam uma página inteira.
21413 Jess

2
Não tenho certeza se é uma prática recomendada, mas ter barras de rolagem em todas as páginas e ativá-las somente quando necessário, para evitar o salto de página, geralmente é uma solução aceitável. Eu tendem a preferir a barra de rolagem constante sobre o salto.
Corv1nus 26/09

1
Para aqueles (como eu) que acham o estilo htmlum pouco hackeado , observe que você pode usar o pseudo-seletor estrutural em :rootvez de html. Veja: developer.mozilla.org/pt-BR/docs/Web/CSS/:root
Rounin

31

Verifique se o estouro está definido como "rolagem" e não "automático". Dito isto , no OS X Lion, o estouro definido como "scroll" se comporta mais como automático, pois as barras de rolagem ainda serão exibidas apenas quando estiverem sendo usadas. Portanto, se alguma das soluções acima não parecer estar funcionando, talvez seja por isso.

É isso que você precisa para corrigi-lo:

::-webkit-scrollbar {
  -webkit-appearance: none;
  width: 7px;
}
::-webkit-scrollbar-thumb {
  border-radius: 4px;
  background-color: rgba(0, 0, 0, .5);
  -webkit-box-shadow: 0 0 1px rgba(255, 255, 255, .5);
}

Você pode estilizá-lo adequadamente se não gostar do padrão.


1
Essa coisa funciona! Mas como você pode fazer isso apenas em uma div específica?
Rich

@ Rich como qualquer outro elemento css. .yourdiv :: - webkit-scrollbar {...}
Kris

@ Kris Oi, obrigado pela resposta, aqui está o exemplo disso. stackoverflow.com/a/54667091/2637261
Rich

Por que isso é usado?-webkit-appearance: none;
Suraj Jain

Isso é ótimo! Deve ser a resposta aceita.
Cyberpunker

25

As coisas mudaram nos últimos anos. As respostas acima não são mais válidas em todos os casos. A Apple está empurrando barras de rolagem desaparecendo em todos os lugares. Safari, Chrome e até Firefox no MacOs (e iOs) apenas mostram barras de rolagem quando rolam de verdade - eu não sei sobre o Windows / IE atual. No entanto, existem maneiras não padronizadas de estilizar barras de rolagem no Webkit (o IE caiu há muito tempo).


mas degradam graciosamente os novos?
Ben

3
Obrigado por este excelente ponto nas barras de rolagem que desaparecem. Para mim, a razão de manter a barra de rolagem visível era evitar esse empurrão leve, mas muito perceptível e muito irritante, à medida que o conteúdo muda de ter rolagem para não. Com as barras de rolagem desaparecendo, eles não sacudem o corpo quando aparecem e se escondem, então está tudo bem para mim. Mas obrigado por este excelente ponto.
Noitidart 17/09/2015

4
Do ponto de vista do UX, na maioria das vezes queremos a barra de rolagem visível. De acordo com a tendência atual, se uma barra de rolagem não estiver visível, é uma etapa adicional ter que "experimentar" uma lista visível para obter mais informações na lista. Uma pista visual adicional de que a lista suspensa ou contém mais itens não é necessária se as pessoas virem uma barra de rolagem.
windsurf88

24
html {
    overflow-y: scroll;
}

É isso que você quer?

Infelizmente, o Opera 9.64 parece ignorar a declaração CSS quando aplicada a HTMLou BODY, embora funcione para outros elementos no nível de bloco DIV.


13
html {height: 101%;}

Eu uso esta solução entre navegadores (observação: eu sempre uso a declaração DOCTYPE na 1ª linha, não sei se funciona no modo quirksmode, nunca testei ).

Isso sempre mostra uma barra de rolagem vertical ATIVA em todas as páginas; a barra de rolagem vertical será rolável apenas com alguns pixels.

Quando o conteúdo da página é mais curto que a área visível do navegador (porta de visualização), você ainda verá a barra de rolagem vertical ativa e será rolável apenas com alguns pixels.

Caso você esteja obcecado com a validação CSS (sou obcecado apenas com a validação HTML), usando esta solução, seu código CSS também valeria para o W3C porque você não está usando atributos CSS não padrão, como -moz-scrollbars-vertical


1
Solução elegante
Artur Keyan

12

body { height:101%; } "recortará" páginas maiores.

Em vez disso, eu uso:

body { min-height:101%; }

1
Esta pergunta foi feita há 5 anos e já tem uma resposta aceita. Sua resposta não fornece uma resposta melhor do que a resposta já aceita.
Dipen Shah

18
Esta resposta realmente fornece informações adicionais não fornecidas nas outras respostas.
GaTechThomas

2

Consegui fazer isso funcionar adicionando-o à tag body. Foi melhor para mim porque não tenho nada sobre o elemento html.

body {
    overflow-y: scroll;
}

2

Uma abordagem alternativa é definir a largura do elemento html para 100vw. Em muitos, se não na maioria dos navegadores, isso nega o efeito das barras de rolagem na largura.

html { width: 100vw; }

0

Definir altura para 101% é a minha solução para o problema. As suas páginas não serão mais "trocadas" ao alternar entre aquelas que excedem a altura da janela de exibição e as que não o fazem.


0
body { 
    min-height: 101vh; 
} 

funciona melhor para mim


0

Eu faço isso:

html {
    margin-left: calc(100vw - 100%);
    margin-right: 0;
}

Então não preciso olhar para a barra de rolagem cinza feia quando ela não é necessária.


A pergunta pede que seja sempre visível.
Corv1nus 24/06
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.