[Mettre à jour]
La réponse originale a été écrite avant jQuery 1.3, et les fonctions qui existaient à l'époque n'étaient pas suffisantes en elles-mêmes pour calculer toute la largeur.
Maintenant, comme JP l' indique correctement, jQuery a les fonctions externalWidth et outerHeight qui incluent le border
et padding
par défaut, ainsi que margin
si le premier argument de la fonction esttrue
[Réponse originale]
La width
méthode ne nécessite plus le dimensions
plugin, car il a été ajouté aujQuery Core
Ce que vous devez faire est d'obtenir les valeurs de remplissage, de marge et de largeur de bordure de ce div particulier et de les ajouter au résultat de la width
méthode
Quelque chose comme ça:
var theDiv = $("#theDiv");
var totalWidth = theDiv.width();
totalWidth += parseInt(theDiv.css("padding-left"), 10) + parseInt(theDiv.css("padding-right"), 10); //Total Padding Width
totalWidth += parseInt(theDiv.css("margin-left"), 10) + parseInt(theDiv.css("margin-right"), 10); //Total Margin Width
totalWidth += parseInt(theDiv.css("borderLeftWidth"), 10) + parseInt(theDiv.css("borderRightWidth"), 10); //Total Border Width
Diviser en plusieurs lignes pour le rendre plus lisible
De cette façon, vous obtiendrez toujours la valeur calculée correcte, même si vous modifiez les valeurs de remplissage ou de marge du css
parseInt
s peut être changé en+
opérateur pour rendre le code plus succinct. Donc,parseInt(theDiv.css("padding-left"), 10)
pourrait être tourné vers+theDiv.css("padding-left")
etc ...Quiconque tombe sur cette réponse devrait noter que jQuery now (> = 1.3) a
outerHeight
/outerWidth
fonctions pour récupérer la largeur, y compris le remplissage / les bordures, par exemplePour inclure également la marge, passez simplement
true
:la source
ressemble à externalWidth est cassé dans la dernière version de jquery.
L'écart se produit lorsque
la div externe est flottante, la div interne a la largeur définie (plus petite que la div externe) la div interne a style = "margin: auto"
la source
Juste pour simplifier, j'ai encapsulé la grande réponse d'Andreas Grech ci-dessus dans certaines fonctions. Pour ceux qui veulent un peu de bonheur couper-coller.
la source
les mêmes navigateurs peuvent renvoyer une chaîne pour la largeur de la bordure, dans ce parseInt retournera NaN, alors assurez-vous d'analyser correctement la valeur int.
la source
la source