Si un élément a un offsetWidth
de 0
(jQuery considère cela comme "caché"), vérifié ici puis il essaie de déterminer quelle doit être la hauteur. Le site fixe les éléments suivants propriétés sur l'élément via jQuery.swap()
pour la durée du contrôle :
position: "absolute"
visibility: "hidden"
display: "block"
Ensuite, il obtient la hauteur, via getWidthOrHeight(...)
qui ajoute une bordure/un bourrelet si nécessaire via augmentWidthOrHeight(...)
selon le modèle de boîte, et rétablit toutes les propriétés ci-dessus à leurs anciennes valeurs.
En gros, il prend l'élément, le montre en dehors du flux du document, récupère la hauteur, puis le cache à nouveau, tout cela avant que le fil de l'interface utilisateur ne soit mis à jour, de sorte que vous ne voyez jamais cela se produire. Il fait cela pour que .height()
/ .width()
fonctionne, même sur les éléments qui sont actuellement cachés, tant que leurs parents sont visibles... vous pouvez donc lancer l'opération suivante .height()
/ .width()
sans faire l'astuce d'affichage et de masquage qu'elle fait dans votre code, elle est gérée dans le cadre du programme .height()
y .width()
.