Como posso determinar a altura de uma barra de rolagem horizontal ou a largura de uma vertical, em JavaScript?
javascript
scrollbar
glmxndr
fonte
fonte
Respostas:
Do blog Alexandre Gomes eu não tentei. Deixe-me saber se funciona para você.
fonte
Usando o jQuery, você pode reduzir a resposta de Matthew Vines para:
fonte
Este é apenas o script que encontrei, que está funcionando nos navegadores de kit da web ... :)
Versão minimizada:
E você tem que chamá-lo quando o documento estiver pronto ... então
Testado em 2012-03-28 no Windows 7 no mais recente FF, Chrome, IE e Safari e 100% funcionando.
fonte: http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth
fonte
width
vai sempre === indefinido a primeira vez que a função é chamada. Nas chamadas subsequentes para a funçãowidth
já estão definidas, essa verificação apenas impede que os cálculos sejam executados novamente desnecessariamente.width
, mas recalculá-lo sempre. Funciona, mas é terrivelmente ineficiente. Por favor, faça um favor ao mundo e use a versão correta no plugin de Alman.se você estiver procurando por uma operação simples, basta misturar dom js e jquery simples,
retorna o tamanho da barra de rolagem da página atual. (se estiver visível ou retornará 0)
fonte
fonte
Para mim, a maneira mais útil foi
com JavaScript baunilha.
fonte
document.documentElement.clientWidth
.documentElement
mais clara e limpa expressa a intenção de obter o<html>
elemento.Encontrei uma solução simples que funciona para elementos dentro da página, em vez da própria página:
$('#element')[0].offsetHeight - $('#element')[0].clientHeight
Isso retorna a altura da barra de rolagem do eixo x.
fonte
Do blog de David Walsh :
Dá-me 17 no meu site, 14 aqui no Stackoverflow.
fonte
Se você já possui um elemento com barras de rolagem, use:
Se não houver horzintscrollbar presente, a função retornará 0
fonte
Você pode determinar a
window
barra de rolagemdocument
como abaixo, usando jquery + javascript:fonte
A maneira como
Antiscroll.js
faz isso em seu código é:O código é daqui: https://github.com/LearnBoost/antiscroll/blob/master/antiscroll.js#L447
fonte
Testado no Chrome, FF, IE8, IE11.
fonte
Isso deve funcionar, não?
fonte
Crie um vazio
div
e verifique se ele está presente em todas as páginas (ou seja, colocando-o noheader
modelo).Dê a ele esse estilo:
Em seguida, basta verificar o tamanho do
#scrollbar-helper
Javascript:Não há necessidade de calcular nada, pois isso
div
sempre terá owidth
eheight
doscrollbar
.A única desvantagem é que haverá um espaço vazio
div
nos seus modelos. Mas, por outro lado, seus arquivos Javascript serão mais limpos, pois isso requer apenas 1 ou 2 linhas de código.fonte
fonte
A maioria do navegador usa 15px para a largura da barra de rolagem
fonte
Com jquery (testado apenas no firefox):
Mas na verdade eu gosto mais da resposta de Steve.
fonte
Esta é uma ótima resposta: https://stackoverflow.com/a/986977/5914609
No entanto, no meu caso, não funcionou. E passei horas procurando a solução.
Finalmente voltei ao código acima e adicionei! Important para cada estilo. E funcionou.
Não consigo adicionar comentários abaixo da resposta original. Então, aqui está a correção:
fonte
Essa decisão de invasão de vida lhe dará a oportunidade de encontrar a largura de rolagem do navegador ( largura do navegador ). Usando este exemplo, você pode obter a largura scrollY em qualquer elemento, incluindo os elementos que não precisam ter rolagem de acordo com sua concepção de design atual:
fonte
Aqui está a solução mais concisa e fácil de ler, com base na diferença de largura de deslocamento:
Veja o JSFiddle .
fonte
Já codificado na minha biblioteca, então aqui está:
Devo mencionar que o jQuery
$(window).width()
também pode ser usado em vez dewindow.document.documentElement.clientWidth
.Não funciona se você abrir ferramentas de desenvolvedor no firefox à direita, mas será superado se a janela devs for aberta na parte inferior!
window.screen
é suportado quirksmode.org !Diverta-se!
fonte
Parece funcionar, mas talvez haja uma solução mais simples que funcione em todos os navegadores?
fonte