IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

animer un objet déjà ouvert


Sujet :

jQuery

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 121
    Par défaut animer un objet déjà ouvert
    Bonjour,


    je n'arrive pas à trouver une réponse à cette question:

    j'ai un ou plusieurs Div conteant du texte, leur hauteur est inconnue à l'avance.
    de façon arbitraire, je donne une hauteur à ce div ( height:100px avec overflow:hidden par exemple). A la suite du paragraphe je mets un paragraphe sur lequel j'écoute l'événement click.
    je voudrais que quand on clique sur ce paragraphe le div avant lui s'anime pour prendre sa taille maximum. je n'y arrive pas , la seule chose que je peux faire c'est de lui faire prendre la valeur ( height:auto) et il s'ouvre d'un coup, sans animation.
    voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    $('.expand-1').click(function()  {
     
    			var $prevDiv = $(this).prev('div');
     
    			var hauteurDiv = $prevDiv.css("height");
     
    			var maValeur = "162px";
     
     
     
    			if (hauteurDiv > maValeur ) {  // déjà ouvert
     
    			  $(this).text("lire la suite ...");
     
    			  $prevDiv.css("height", maValeur);     //  on réduit
     
    			}  else if (hauteurDiv == maValeur) {  //  état initial ou état fermé
     
    			  $(this).text("replier ...");
     
    			  $prevDiv.css("height","auto");         //  on ouvre le div au maximum
     
    			}
     
    		});
    j'ai l'impression qu'on ne peut pas animer height avec la valeur auto et qu'il faut donner une valeur chiffrée.

    Quelqu'un connaît-il une ruse pour contourner cela?

    Merci

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    Pour obtenir height (idem pour width), voir : http://api.jquery.com/innerHeight/ et http://api.jquery.com/outerHeight/

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 121
    Par défaut
    merci daniel mais ça m'aide pas, innerHeight() retourne la même chose que height(), la hauteur du div (fixée par css) lors du 1er click.

    je force au préalable la hauteur des divs qui ont reçu la classe expand-1 mais leurs contenus est variable et c'est donc la hauteur que doit prendre le div pour afficher ce contenu que je cherche à connaître, afin de la passer à une fonction anim() de jQuery, puisqu'on ne peut passer qu'un chiffre à anim().

    et ça j'arrive pas à faire..

  4. #4
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonsoir

    manifestement je ne comprends pas bien votre problème de height.

    Mais si vous souhaitez uniquement une animation au clic pourquoi ne pas utiliser http://api.jquery.com/slideToggle/ ?

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 121
    Par défaut
    j'ai trouvé une solution toute pourrie.....

    ce code remplace la ligne 21 du 1er exemple

    je donne au div sa hauteur maximale (ligne1)
    je stocke cette hauteur dans animVal (ligne 2)
    je remet le div à sa valeur basse (ligne 3) .. le navigateur n'a rien eu le temps de faire
    et enfin j'anime l'ouverture du div vers la valeur max (ligne 4)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		  $prevDiv.css("height","auto");
    			  var animVal = $prevDiv.css("height");
    			  $prevDiv.css("height", maValeur);
    			  $prevDiv.animate( { height : animVal });

    je rappelle ce que je veux faire:

    animer vers sa hauteur max (inconnue) un div qui a déjà une hauteur arbitraire globale fixée par le css au d"épart

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/03/2008, 16h17
  2. comment peut on animer un objet sur delphi?
    Par tchimou dans le forum Delphi
    Réponses: 5
    Dernier message: 11/05/2007, 23h53
  3. animer un objet
    Par jc_cornic dans le forum Flash
    Réponses: 2
    Dernier message: 17/03/2007, 20h08
  4. Comment animer un objet 3D?
    Par drcd dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 10/06/2006, 04h17
  5. [FLASH MX2004] Animé un objet 3D
    Par Ticoche dans le forum Flash
    Réponses: 2
    Dernier message: 20/11/2004, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo