Comment puis-je obtenir la barre de défilement du navigateur tailles?
Comment puis-je déterminer la hauteur d'une barre de défilement horizontale, ou la largeur d'une verticale, en JavaScript?
- Voici un extrait de l'auteur de l'JQuery Dimension plugin. github.com/brandonaaron/jquery-getscrollbarwidth/blob/master/... peut-être en retard pour donner à cette solution, mais il semble meilleur pour moi, de l'OMI.
- Jetez un oeil à cette solution: davidwalsh.nom/detect-scrollbar-width
- cette solution échoue -- le offsetWidth == clientWidth donc il est toujours à zéro. Ceci est testé en bord IE && Chrome.
- bizarre, ça marche pour moi sur FF
- Cette question se pose dans la situation dans laquelle la barre de défilement est dans le mauvais endroit (quelque part dans le milieu de l'écran). Dans ce cas, vous probablement ne voulez pas afficher une barre de défilement. Dans la plupart des cas, j'ai trouvé iScroll être le parfait de la conception de solution neutre de la situation: iscrolljs.com
- Double Possible de Pour faire défiler la largeur de la barre à l'aide de JavaScript
InformationsquelleAutor glmxndr | 2009-06-12
Vous devez vous connecter pour publier un commentaire.
De Alexandre Gomes Blog je n'ai pas essayé. Laissez-moi savoir si cela fonctionne pour vous.
scr.style.overflow = 'auto';
vous pouvez ajouter ce sous encore un autre un autreif (w1 == w2)
dans le code ci-dessusposition: absolute
sur lediv
assignée à la variableouter
, ainsi queleft
ettop
, sont à ne rien faire et peut être retiré. Ils n'ont d'effet que sibody { position: relative; }
est réglé. Aussi, il est complètement inutile de fixer une valeur de0
avecpx
.À l'aide de jQuery, vous pouvez raccourcir Matthieu Vignes réponse à:
Ce n'est que le script que j'ai trouvé qui fonctionne dans les navigateurs webkit ... 🙂
Version réduite:
Et il faut l'appeler lorsque le document est prêt ... donc
Testé 2012-03-28 sur Windows 7 dans le dernier FF, Chrome, IE & Safari et 100% de travail.
source: http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth
width
sera toujours === undefined premier fois que la fonction est appelée. Sur les prochains appels à la fonctionwidth
est déjà défini, que l'enregistrement empêche les calculs en cours d'exécution à nouveau inutilement.width
, mais plutôt de les recalculer à chaque fois. Il fonctionne, mais il est terriblement inefficace. S'il vous plaît ne le monde une faveur et d'utiliser le version correcte dans l'Alman du plugin à la place.si vous êtes à la recherche pour une opération simple, il suffit de mélanger de la plaine dom en js et jquery,
retourne la taille de la page en cours de barre de défilement. (s'il est visible ou d'autre sera de retour 0)
J'ai trouvé une solution simple qui fonctionne pour les éléments à l'intérieur de la page, au lieu de la page elle-même:
$('#element')[0].offsetHeight - $('#element')[0].clientHeight
Ce retourne la hauteur de l'axe des x de la barre de défilement.
Pour moi, la façon la plus utile était
avec de la vanille JavaScript.
document.documentElement.clientWidth
.documentElement
plus clairement et proprement exprime l'intention d'obtenir le<html>
élément.De David Walsh blog:
JS:
CSS:
Me donne 17 sur mon site web, 14 ici sur Stackoverflow.
Si vous avez déjà un élément avec les barres de défilement sur l'utilisation des ti:
Si il n'y a pas de horzintscrollbar présent la fonction de retour chez elle, 0
Vous pouvez déterminer
window
barre de défilement avecdocument
comme ci-dessous à l'aide de jquery + javascript:La façon
Antiscroll.js
t-il dans son code est:Le code est ici: https://github.com/LearnBoost/antiscroll/blob/master/antiscroll.js#L447
Testé dans Chrome, FF, IE8, IE11.
Cela devrait faire l'affaire, non?
Créer un vide
div
et assurez-vous qu'il est présent sur toutes les pages (c'est à dire en le plaçant dans leheader
modèle).Lui donner ce style:
Ensuite il suffit de vérifier pour la taille de
#scrollbar-helper
avec Javascript:Pas besoin de calculer quoi que ce soit, que cette div sera toujours
width
etheight
de lascrollbar
.Le seul inconvénient, c'est qu'il y aura un vide
div
dans vos templates.. Mais d'un autre côté, vos fichiers Javascript sera plus propre, car cela ne prend que 1 ou 2 lignes de code.Avec jquery (testé uniquement avec firefox):
Mais en fait, j'aime @Steve la réponse de mieux.
C'est une grande réponse:
https://stackoverflow.com/a/986977/5914609
Toutefois, dans mon cas, il n'a pas de travail. Et j'ai passé des heures à chercher la solution.
Enfin, je suis rentrée à code ci-dessus et ajouté !important pour chaque style. Et cela a fonctionné.
Je ne peux pas ajouter des commentaires en dessous de l'original de la réplique. Voici donc la solution:
Cette vie-hack décision vous donnera l'occasion de trouver navigateur scrollY largeur (vanille JavaScript). À l'aide de cet exemple, vous pouvez obtenir scrollY largeur sur n'importe quel élément y compris les éléments qui ne devraient pas avoir de défilement en fonction de votre conception actuelle de la conception,:
Voici la plus concise et facile à lire solution basée sur le décalage de différence de largeur:
Voir le JSFiddle.