Comment puis-je déterminer la hauteur d'une barre de défilement horizontale ou la largeur d'une barre verticale en JavaScript?
javascript
scrollbar
glmxndr
la source
la source
Réponses:
Du blog Alexandre Gomes je ne l'ai pas essayé. Dites-moi si cela marche pour vous.
la source
En utilisant jQuery, vous pouvez raccourcir la réponse de Matthew Vines à:
la source
C'est le seul script que j'ai trouvé, qui fonctionne dans les navigateurs Webkit ... :)
Version réduite:
Et vous devez l'appeler lorsque le document est prêt ... alors
Testé le 28/03/2012 sur Windows 7 dans les dernières versions de FF, Chrome, IE et Safari et fonctionne à 100%.
source: http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth
la source
width
sera toujours === indéfini la première fois que la fonction est appelée. Lors des appels ultérieurs à la fonctionwidth
est déjà définie, cette vérification empêche simplement les calculs d'être réexécutés inutilement.width
, mais le recalculera à chaque fois. Cela fonctionne, mais c'est terriblement inefficace. Merci de rendre service au monde entier et d'utiliser à la place la version correcte du plugin d'Alman.si vous cherchez une opération simple, mélangez simplement dom js et jquery,
renvoie la taille de la barre de défilement de la page actuelle. (s'il est visible ou sinon retournera 0)
la source
la source
Pour moi, le moyen le plus utile était
avec JavaScript vanille.
la source
document.documentElement.clientWidth
.documentElement
exprime plus clairement et proprement l'intention d'obtenir l'<html>
élément.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
Cela renvoie la hauteur de la barre de défilement de l'axe x.
la source
Du blog de David Walsh :
Me donne 17 sur mon site Web, 14 ici sur Stackoverflow.
la source
Si vous avez déjà un élément avec des barres de défilement, utilisez:
S'il n'y a pas d'horzintscrollbar, la fonction sera relancée 0
la source
Vous pouvez déterminer la
window
barre de défilement avecdocument
comme ci-dessous en utilisant jquery + javascript:la source
Le chemin
Antiscroll.js
cela fonctionne dans son code est:Le code vient d'ici: https://github.com/LearnBoost/antiscroll/blob/master/antiscroll.js#L447
la source
Testé dans Chrome, FF, IE8, IE11.
la source
Cela devrait faire l'affaire, non?
la source
Créez un vide
div
et assurez-vous qu'il est présent sur toutes les pages (c'est-à-dire en le mettant dans leheader
modèle).Donnez-lui ce style:
Ensuite, vérifiez simplement la taille de
#scrollbar-helper
avec Javascript:Pas besoin de calculer quoi que ce soit, car cela
div
aura toujours lewidth
etheight
duscrollbar
.Le seul inconvénient est qu'il y aura un vide
div
dans vos templates .. Mais d'un autre côté, vos fichiers Javascript seront plus propres, car cela ne prend que 1 ou 2 lignes de code.la source
la source
La plupart des navigateurs utilisent 15px pour la largeur de la barre de défilement
la source
Avec jquery (testé uniquement sous Firefox):
Mais j'aime mieux la réponse de @ Steve.
la source
C'est une excellente réponse: https://stackoverflow.com/a/986977/5914609
Cependant, dans mon cas, cela n'a pas fonctionné. Et j'ai passé des heures à chercher la solution.
Enfin, je suis revenu au code ci-dessus et j'ai ajouté! Important à chaque style. Et ça a marché.
Je ne peux pas ajouter de commentaires sous la réponse originale. Voici donc le correctif:
la source
Cette décision de hack de la vie vous donnera l'opportunité de trouver la largeur de défilement du navigateur (JavaScript vanilla). En utilisant cet exemple, vous pouvez obtenir la largeur de scrollY 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,:
la source
Voici la solution la plus concise et la plus facile à lire basée sur la différence de largeur de décalage:
Voir le JSFiddle .
la source
Déjà codé dans ma bibliothèque alors le voici:
Je dois mentionner que jQuery
$(window).width()
peut également être utilisé à la place dewindow.document.documentElement.clientWidth
.Cela ne fonctionne pas si vous ouvrez les outils de développement dans Firefox sur la droite, mais cela le surmonte si la fenêtre de développement est ouverte en bas!
window.screen
est pris en charge quirksmode.org !S'amuser!
la source
Cela semble fonctionner, mais il existe peut-être une solution plus simple qui fonctionne dans tous les navigateurs?
la source