Tornando a barra de rolagem principal sempre visível
179
Qual CSS é necessário para tornar a barra de rolagem vertical do navegador visível quando um usuário visita uma página da Web (quando a página não possui conteúdo suficiente para acionar a ativação da barra de rolagem)?
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.
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).
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.
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
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.
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.
Respostas:
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.
fonte
overflow-y
? Como parece que-moz-scrollbars-vertical
é preterido em favor daoverflow-y
propriedade.html
um pouco hackeado , observe que você pode usar o pseudo-seletor estrutural em:root
vez dehtml
. Veja: developer.mozilla.org/pt-BR/docs/Web/CSS/:rootVerifique 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:
Você pode estilizá-lo adequadamente se não gostar do padrão.
fonte
-webkit-appearance: none;
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).
fonte
É isso que você quer?
Infelizmente, o Opera 9.64 parece ignorar a declaração CSS quando aplicada a
HTML
ouBODY
, embora funcione para outros elementos no nível de blocoDIV
.fonte
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
fonte
body { height:101%; }
"recortará" páginas maiores.Em vez disso, eu uso:
fonte
Consegui fazer isso funcionar adicionando-o à tag body. Foi melhor para mim porque não tenho nada sobre o elemento html.
fonte
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.
fonte
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.
fonte
funciona melhor para mim
fonte
Eu faço isso:
Então não preciso olhar para a barra de rolagem cinza feia quando ela não é necessária.
fonte