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 :

Logo qui change au scroll


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    vendeur de sable dans le desert
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations professionnelles :
    Activité : vendeur de sable dans le desert
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Par défaut Logo qui change au scroll
    Bonjour,

    J'utilise un script pour changer mon logo lorsque je scroll ma page. Le logo s'accorde avec la couleur du background suivant l'id de la section. Il est inclus dans ma navbar.

    Mon soucis est que le logo change bien au fur et a mesure que je scroll ma page mais si je remonte tout en haut, sur l'id "first" le logo reste le logo de l'id "one". C'est a dire que logo.png ne saffiche pas et que logo1.png reste comme si c'etait la section avec l'id "one"

    Voici mon script:

    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
    26
    27
    28
    29
    30
    31
    32
    33
    $(window).on("scroll", function() {
     
       var currentPos = $(window).scrollTop();
     
       $('section').each(function() {
         var sectionLink = $(this);
     
         if (sectionLink.position().top <= currentPos && sectionLink.offset().top + sectionLink.height() > currentPos) {
           if (sectionLink.attr("id") == "first") {
             var src = "logo.png";
             $("#logo").attr("src", src);
           }
          else if (sectionLink.attr("id") == "one") {
             var src = "logo1.png";
             $("#logo").attr("src", src);
           }
        else if (sectionLink.attr("id") == "two") {
             var src = "logo2.png";
             $("#logo").attr("src", src);
           }
           else if (sectionLink.attr("id") == "showreel") {
             var src = "logo.png";
             $("#logo").attr("src", src);
           }
        else if (sectionLink.attr("id") == "last") {
             var src = "logo.png";
             $("#logo").attr("src", src);
           }
     
         }
       });
     
     });
    Et ci-dessous le html de la navbar:
    Code html : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <nav id="topNav" class="navbar navbar-default navbar-fixed-top">
            <div class="container-fluid">
                <a class="navbar-brand page-scroll logo" href="#" id="logo"><img src="logo.png" alt="logo" /></a>
     
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-navbar">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                </div>
                <div class="navbar-collapse collapse" id="bs-navbar">
     
                    <ul class="nav navbar-nav navbar-right">
     
                        <li>
                            <a class="page-scroll" href="#one"><i class="icon-md ion-information-circled"></i><span>XXXXX</span></a>
                        </li>
                        <li>
                            <a class="page-scroll" href="#two"><i class="icon-md ion-settings"></i><span>XXXXX</span></a>
                        </li>
                        <li>
                            <a class="page-scroll" href="#showreel"><i class="icon-md ion-film-marker"></i><span></span></a>
                        </li>
                        <li>
                            <a class="page-scroll" href="#three"><i class="icon-md ion-images"></i><span>XXXXX</span></a>
                        </li>
                        <li>
                            <a class="page-scroll" href="#last"><i class="icon-md ion-chatbubble-working"></i><span>XXXXX</span></a>
                        </li>
     
                    </ul>
                </div>
            </div>
        </nav>

    Et la structure de la page en html:

    Code html : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <header id="first"  style="margin-top:120px">
     
     
     </header>
     
     
     <section class="bg-primary container-fluid" id="one">
         <div class="container text-center">
             <div class="row">
     
     
             </div>
         </div>  
     </section>
     
     
     <section class="bg-secundary container-fluid" id="two">
         <div class="container">
     
     
         </div>
     </section>
     
     
     
     <section class="bg-primary" id="showreel">
         <div class="container text-center ">
     
         </div>
     
     </section>
     
     
     
    <section id="three" class="no-padding bg-secundary container-fluid">
         <div class="container-fluid text-center">
             <div class="row no-gutter">
     
     
     
             </div>   
         </div>
     </section>
     
     
     <section class="bg-white container-fluid" id="last">
         <div class="container">
             <div class="row">
     
             </div>
     
             <div class="text-center text-muted purple" style="margin-top: 30px">
             </div>
     
         </div>
     </section>
     <footer id="footer">
         <div class="container-fluid">
         </div>
     </footer>


    Peut-être un conflit avec un autre script dans ma page... ou une erreur dans ce script.... Merci d'avance pour votre aide car j'ai un peu tourné dans tous les sens l'histoire et je suis planté !!

  2. #2
    Membre du Club
    Homme Profil pro
    vendeur de sable dans le desert
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations professionnelles :
    Activité : vendeur de sable dans le desert
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Par défaut
    Je viens d'identifier mon problème !!!

    Le id "first" est dans le header qui n'est pas une balise "section" et donc le script ne le reconnait pas. Si je remplace la balise header par section, cela fonctionne. Le problème, c'est que cela me met le bordel dans ma page d'accueil, et de plus, je ne suis pas certain que de se passer d'une balise header soit l'ideal pour le SEO...
    Mais le logo marche et le script s’exécute parfaitement.

    J'ai essaye de rajouter header dans mon script mais ca ne marche pas et mon faible niveau en javacript me fait bloquer. Help SVP

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $('section, header').each
    ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre du Club
    Homme Profil pro
    vendeur de sable dans le desert
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations professionnelles :
    Activité : vendeur de sable dans le desert
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Par défaut
    Salut SpaceFrog,

    Merci pour ta réponse mais ca ne marche pas. En tous cas, merci de te pencher sur mon soucis, car il n'y pas foule !!

    J'ai essayé plusieurs variantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $('section, header').each
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $('section', 'header').each
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $'section' 'header'.each
    J'ai trouve un tricks en rajoutant une section vide dans mon header. Le validator HTML de W3c ne me l'annonce pas comme erreur mais c'est plus un tricks qu'une solution...

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 208
    Par défaut
    Bonjour,
    J'ai essayé plusieurs variantes:
    il n'y a pas 3600 façons de faire, celle indiquée par SpaceFrog
    Multiple Selector (“selector1, selector2, selectorN”)

Discussions similaires

  1. Réponses: 7
    Dernier message: 18/10/2005, 12h50
  2. Image qui change lorsqu'on clique
    Par marsupilami34 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/08/2005, 17h28
  3. Variable qui change après un DispatchMessage
    Par SekYo dans le forum Windows
    Réponses: 9
    Dernier message: 30/09/2004, 16h22
  4. Réponses: 3
    Dernier message: 22/07/2002, 14h19

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