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 :

Hauteur d'un menu en fonction du scrollTop()


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut Hauteur d'un menu en fonction du scrollTop()
    Bonjour,

    En fonction du scroll de l'utilisateur la hauteur du header (le menu) passe de 150px à 100px, et si le scrollTop <= 50 il doit revenir à 150 px.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $(window).scroll(function() {
        if ($(this).scrollTop() >= 50) { // If page is scrolled more than 50px
            $('#return-to-top').fadeIn(200); // Fade in the arrow
            $('.header').animate({ height: "100px" });
     
        } else {
            $('#return-to-top').fadeOut(200); // Else fade out the arrow
           $('.header').animate({ height: "150px" });
        }
    });
    Cela fonctionne, mais ne marche pas pour faire revenir le header à 150px lorsqu'on revient en haut du site. Je ne vois pas où est l'erreur.

    Merci de m'aider

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 514
    Par défaut
    Bonjour,

    Il faut arrêter l'animation avec $.stop() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $('.header').stop().animate({ height: "100px" });
    //et
    $('.header').stop().animate({ height: "150px" });

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut
    Merci pour la réponse

    J'ai essayé, mais ça ne fonctionne pas. Il faut bien stopper dans le else ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $(window).scroll(function() {
        if ($(this).scrollTop() >= 50) { // If page is scrolled more than 50px
            $('#return-to-top').fadeIn(200); // Fade in the arrow
            $('.header').animate({ height: "100px" });
     
        } else {
            $('#return-to-top').fadeOut(200); // Else fade out the arrow
            $('.header').stop().animate({ height: "100px" });
     
        }
    });

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 514
    Par défaut
    Dans les deux ...

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2020
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2020
    Messages : 119
    Par défaut
    Je ne comprends pas l'intérêt de stopper l'animation alors qu'il faut la déclencher, lorsque scrollTop >= 50... selon moi il faudrait stopper dans le else, mais ça ne fonctionne pas....

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 514
    Par défaut
    Bonjour,

    La durée de l'animation de jQuery.animate() est de 400 millisecondes par défaut, alors que l'événement scroll n'attendra pas la fin de chaque animation pour passer à l'autre.

    Sinon tu peux diminuer la durée à 20milisecondes pour voir la différence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $(window).scroll(function() {
        let height_="100px"; 
        if ($(this).scrollTop() >= 50) { // If page is scrolled more than 50px
            $('#return-to-top').fadeIn(200); // Fade in the arrow
         } else {
            $('#return-to-top').fadeOut(200); // Else fade out the arrow
            height_="150px";
        }
        $('.header').stop().animate({ "height": height_ },20);
    });

Discussions similaires

  1. Taille en hauteur d'un menu déroulant
    Par LDDL dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 21/07/2007, 08h41
  2. hauteur d'un menu déroulant
    Par LDDL dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 20/07/2007, 09h38
  3. Comment gérer la hauteur d'une page en fonction de la résolution ?
    Par Kenshin86 dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 10/05/2007, 14h55
  4. Menu en fonction des utilisateurs
    Par golnok dans le forum ASP.NET
    Réponses: 4
    Dernier message: 24/04/2007, 17h28
  5. Hauteur d'un menu horizontal adapté à la taille de police
    Par BlackWood dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 01/02/2007, 10h19

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