Comment trouvez-vous la largeur actuelle d'un <div>
dans une manière compatible avec plusieurs navigateurs sans utiliser une bibliothèque comme jQuery?
javascript
html
Joda Maki
la source
la source
Réponses:
la source
cientWidth
bien je ne connais pas la vraie différence.offsetWidth
comprend la largeur de la bordure,clientWidth
non.display: none
ou ne fait pas partie du document, il aura toujours une hauteur de décalage nulle.Vous pouvez utiliser
clientWidth
ouoffsetWidth
référence de réseau de développeur MozillaCe serait comme:
ou avec une largeur de bordure:
la source
Toutes les réponses sont bonnes, mais je veux quand même donner quelques autres alternatives qui pourraient fonctionner.
Si vous recherchez la largeur attribuée (en ignorant le rembourrage, la marge, etc.), vous pouvez utiliser.
getComputedStyle vous permet d'accéder à tous les styles de ces éléments. Par exemple: padding, paddingLeft, margin, border-top-left-radius et ainsi de suite.
la source
Vous pouvez également rechercher le DOM à l'aide de ClassName. Par exemple:
Cela renverra un tableau. S'il y a une propriété particulière qui vous intéresse. Par exemple:
divWidth
sera désormais égal à la largeur du premier élément de votre tableau div.la source
En fait, vous n'avez pas à utiliser
document.getElementById("mydiv")
.Vous pouvez simplement utiliser l'id du div, comme:
var w = mydiv.clientWidth;
ou
var w = mydiv.offsetWidth;
etc.
la source
Une autre option consiste à utiliser la fonction getBoundingClientRect. Veuillez noter que getBoundingClientRect retournera un rect vide si l'affichage de l'élément est «aucun».
la source
appeler la méthode ci-dessous sur la balise div ou body onclick = "show (event);" fonction show (événement) {
la source
La manière correcte d'obtenir le style calculé attend le rendu de la page. Cela peut être fait de la manière suivante. Faites attention au délai d'attente pour obtenir des
auto
valeurs.Si vous utilisez seulement
vous pouvez obtenir des
auto
valeurs de largeur et de hauteur car les navigateurs ne s'affichent pas tant que la charge complète n'est pas effectuée.la source