J'ai un élément et j'ai besoin de sa largeur sans (!) Barre de défilement verticale.
Firebug me dit que la largeur du corps est de 1280px.
L'un ou l'autre fonctionne correctement dans Firefox:
console.log($('.element').outerWidth() );
console.log($('.element').outerWidth(true) );
$detour = $('.child-of-element').offsetParent();
console.log( $detour.innerWidth() );
Ils renvoient tous 1263px , ce qui est la valeur que je recherche.
Cependant, tous les autres navigateurs me donnent 1280px .
Existe-t-il un moyen multi-navigateurs pour obtenir une largeur plein écran sans (!) Barre de défilement verticale?
jquery
cross-browser
width
fréquent
la source
la source
width: 100%;
Réponses:
.prop("clientWidth")
et.prop("scrollWidth")
en JavaScript :
PS: notez que pour utiliser de
scrollWidth
manière fiable votre élément ne doit pas déborder horizontalementDémo jsBin
Vous pouvez également utiliser
.innerWidth()
mais cela ne fonctionnera que sur l'body
élémentla source
body
débordements ou non. s'il déborde, le contraint.Vous pouvez utiliser du javascript vanille en écrivant simplement:
Vous pouvez également l'utiliser pour obtenir la largeur du document comme suit:
Source: MDN
Vous pouvez également obtenir la largeur de la fenêtre complète, y compris la barre de défilement, comme suit:
Cependant, cela n'est pas pris en charge par tous les navigateurs, donc comme solution de secours, vous pouvez utiliser
docWidth
comme ci-dessus et ajouter la largeur de la barre de défilement .Source: MDN
la source
document.documentElement.clientWidth
m'a le plus aidé, car cela fonctionne également pour la hauteur (innerHeight
peut être plus petit si le corps ne remplit pas la page, etc.) et obtient la valeur sans la barre de défilement.Voici quelques exemples qui supposent qu'il
$element
s'agit d'unjQuery
élément:la source
Essaye ça :
Vous pouvez obtenir la largeur de l'écran avec et sans barre de défilement en utilisant ce code. Ici, j'ai changé la valeur de débordement de
body
et obtenir la largeur avec et sans barre de défilement.la source
L'élément HTML est l'endroit le plus sûr pour obtenir la largeur et la hauteur correctes sans les barres de défilement. Essaye ça:
La prise en charge du navigateur est assez correcte, avec IE 9 et les versions ultérieures le prenant en charge. Pour OLD IE, utilisez l'une des nombreuses solutions de secours mentionnées ici.
la source
J'ai rencontré un problème similaire et je l'ai
width:100%;
résolu pour moi. Je suis venu à cette solution après avoir essayé une réponse à cette question et réalisé que la nature même d'un<iframe>
rendrait ces outils de mesure javascript inexacts sans utiliser une fonction complexe. Faire 100% est un moyen simple de s'en occuper dans une iframe. Je ne connais pas votre problème car je ne suis pas sûr des éléments HTML que vous manipulez.la source
Aucune de ces solutions n'a fonctionné pour moi, mais j'ai pu le corriger en prenant la largeur et en soustrayant la largeur de la barre de défilement . Je ne sais pas à quel point c'est compatible avec tous les navigateurs.
la source
Voici ce que j'utilise
la source