Maison >interface Web >tutoriel CSS >Pourquoi les valeurs height() et width() de jQuery renvoient-elles des valeurs pour les éléments cachés ?

Pourquoi les valeurs height() et width() de jQuery renvoient-elles des valeurs pour les éléments cachés ?

DDD
DDDoriginal
2024-10-29 12:37:29520parcourir

 Why Does jQuery's height() and width() Return Values for Hidden Elements?

jQuery : éléments cachés et propriétés de dimension

Contrairement à l'hypothèse courante, les éléments avec display:none ne renvoient pas toujours 0 pour la hauteur de jQuery () et width(). Cet écart par rapport aux attentes a fait l'objet d'une confusion persistante parmi les programmeurs.

Dévoilement du mystère

L'écart provient de la façon dont jQuery gère les éléments avec le style display:none . Lorsque la largeur de décalage d'un élément est 0, indiquant qu'il est effectivement masqué, jQuery tente de déterminer sa hauteur à l'aide de calculs internes :

  1. Transformation temporaire : Il modifie temporairement la largeur de l'élément. Propriétés CSS utilisant jQuery.swap() :

    • Définit la position sur "absolue"
    • Définit la visibilité sur "caché"
    • Définit l'affichage sur "bloquer"
  2. Mesure de la hauteur :Avec ces modifications, il obtient la hauteur en utilisant getWidthOrHeight(...).
  3. Restauration de la propriété : Enfin, il rétablit les propriétés CSS à leurs valeurs précédentes, masquant ainsi à nouveau l'élément.

L'ensemble de ce processus se déroule de manière transparente avant la mise à jour du thread de l'interface utilisateur, préservant l'état caché de l'élément tout en récupérant ses dimensions. En rendant les éléments display:none accessibles via height() et width(), jQuery garantit que les calculs impliquant leurs dimensions peuvent être effectués quel que soit leur statut de visibilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn