Bienvenue
sur
Never-Utopia

Tu es déconnecté.

Never-Utopia

Forum de graphisme, codage et game design proposant des tutoriels, astuces, libres services et commandes dans les domaines de l'infographie amateur, de l'intégration web (HTML et CSS essentiellement) ainsi que dans la conception de RPG sur forum.


    Navigation en forme d'horloge

    Partagez
    FémininAge : 22Message(s) : 2473

    Les Guildes
    Guilde des Conteurs:
    0/10  (0/10)
    Guilde des Illusionnistes:
    1/10  (1/10)
    Guilde des Architectes:
    13/20  (13/20)
    Onyx
    le Lun 23 Juin 2014 - 22:25
    Rappel du premier message :


    Navigation en forme d'horloge




    Salut !

    Voici un petit LS d'une barre de navigation en forme d'horloge dont l'aiguille pointe sur les liens survolés qui a été fait pour la demande de Dastan.

    Pour l'aperçu, c'est juste ici : http://img15.hostingpics.net/pics/503280Navigationhorloge.png

    Ce code est en trois parties.
    • Tout d'abord, nous allons supprimer l'ancienne navigation et la remplacer par la notre dans le template "Overhall Header".
    • Ensuite, nous allons mettre notre navigation en forme en allant ajouter certains éléments dans le CSS.
    • Enfin, nous allons ajouter un petit javascript pour savoir qu'un nouveau message privé est arrivé dans notre messagerie. D'ailleurs, pour cette partie, je me suis servie de ce tuto : http://www.school-of-pub.net/t11850-fa-totalement-personnaliser-la-barre-de-nav.


    Mettre un crédit vers Never-Utopia est obligatoire si vous utilisez ce LS.


    Merci de laisser un message pour donner vos impressions/commentaires/remerciements ^^



    1. Corps de la navigation (Template Overhall_Header)


    Pour commencer, nous allons devoir nous débarrasser de la navigation normale afin qu'elle arrête de nous traîner dans les jambes.
    Comment?
    Nous allons carrément la supprimer.

    Elle devrait normalement se trouver entre les lignes 273 et 277. Voici à quoi elle ressemble :
    Code:
    <table cellspacing="0" cellpadding="0" border="0" align="{MENU_POSITION}">
     <tr>
     <td align="{MENU_POSITION}"{MENU_NOWRAP}>{GENERATED_NAV_BAR}</td>
     </tr>
     </table>


    Une fois que c'est fait, il est temps d'ajouter notre propre navigation. Du coup, au même endroit où était positionné l'ancienne barre de navigation, nous allons venir mettre le code suivant :
    Code:
    <table cellspacing="0" cellpadding="0" border="0" align="left">
     <tr>
                                              <td align="left">
       <div class="nav_bloc" align="center">
        <div class="navv" id="accueil"><a href="/forum"><img src="http://img11.hostingpics.net/pics/578802accueil.png" alt="Accueil" /></a></div>
        <div class="navv" id="rechercher"><a href="/search"><img src="http://img11.hostingpics.net/pics/896295rechercher.png" alt="Rechercher" /></a></div>
        <div class="navv" id="membres"><a href="/memberlist"><img src="http://img11.hostingpics.net/pics/618481membres.png" alt="Membres" /></a></div>
        <div class="navv" id="groupes"><a href="/groups"><img src="http://img11.hostingpics.net/pics/826427groupes.png" alt="Groupes" /></a></div>
                                                        <div class="navv" id="profil"><a href="/profile?mode=editprofile"><img src="http://img11.hostingpics.net/pics/446898profil.png" alt="Profil" /></a></div>
          <!-- BEGIN switch_user_logged_in -->
        <div class="navv" id="mp"><a href="/privmsg?folder=inbox"><img src="http://img11.hostingpics.net/pics/860693messagerie1.png" alt="MP" id="mpO" /></a></div>
                                                        <div class="navv" id="off"><a href="/login?logout"><img src="http://img11.hostingpics.net/pics/225491onoff.png" alt="Déconnexion" /></a></div>
          <!-- END switch_user_logged_in -->
          <!-- BEGIN switch_user_logged_out -->
                                                        <div class="navv" id="s_inscrire"><a href="/register"><img src="http://img11.hostingpics.net/pics/693663sinscrire.png" alt="S'inscrire" /></a></div>
                                                        <div class="navv" id="on"><a href="/login"><img src="http://img11.hostingpics.net/pics/225491onoff.png" alt="Connexion" /></a></div>
          <!-- END switch_user_logged_out -->
                                                        <div class="navv" id="nav_aiguille"></div>
                                                        <div style="visibility: hidden;">{GENERATED_NAV_BAR}</div>
          </div></td>
     </tr>
     </table>

    Donc, histoire de comprendre un peu ce qu'on a fait, nous allons regarder un peu le code que nous venons de rajouter :

    • Au tout début, il y a une table qui nous permet de positionner notre navigation, de la même façon qu'avec la navigation normale.
    • Ensuite, nous avons une "div" avec la class "nav_bloc". C'est le bloc avec l'image de l'horloge en background qui contient tous les liens de la navigation.
    • Puis, nous avons diverses "div" avec les liens de notre navigation. C'est séparé en trois parties :
      • Les liens que tout le monde peut voir.
      • Les liens entre le "BEGIN switch_user_logged_in" et "END switch_user_logged_in" que seuls les membres connectés peuvent voir.
      • Les liens entre "BEGIN switch_user_logged_out" et le "END switch_user_logged_out" que seuls les invités peuvent voir.
    • En avant dernier, nous avons l'aiguille qui tourne selon le lien sur lequel notre curseur est placé.
    • Enfin, nous avons l'ancienne navigation "GENERATED_NAV_BAR" qui est invisible mais qui nous sera utile pour récupérer le code des nouveaux MPs.

    À l'exeption des images de l'aiguille et de l'horloge, toutes les images des liens peuvent être modifiées à cette étape.



    2. Mise en forme (CSS)


    Si vous avez installé le code dans le template, vous voyez sans doute tout de suite que ce n'est pas super du tout pour le moment.

    Du coup, nous allons mettre en forme notre navigation à l'aide du code suivant que j'expliquerai ensuite :
    Code:
                  /*NAVIGATION*/

    /*Bloc de l'horloge*/
    .nav_bloc {
      background-image: url('http://img15.hostingpics.net/pics/909229montre2.png');
      width: 300px;
      height: 300px;
      position: relative;
      display: block;
      margin-top: -190px;
      margin-left: 30px;
    }

    /*Trucs pour les liens*/
    .navv {
      position: absolute;
      display: block;
      z-index: 2;
    }

    /*Aiguille*/
    #nav_aiguille {
      background-image: url('http://img15.hostingpics.net/pics/418642aiguille.png');
      width: 14px;
      height: 244px;
      bottom: 32px;
      left: 140px;
      -webkit-transform: rotate(0deg);
      transform: rotate(0deg);
      transition: 0.5s;
      -webkit-transition: 0.5s;
      z-index: 1;
    }

    /*Positionnement des liens*/
    #accueil {
      width: 100px;
      height: 27px;
      bottom: 260px;
      left: 101px;
      -webkit-transform:rotate(1deg);
      transform:rotate(1deg);
    }
    #rechercher {
      width: 131px;
      height: 35px;
      bottom: 200px;
      left: 184px;
      -webkit-transform:rotate(57deg);
      transform:rotate(57deg);
    }
    #membres {
      width: 94px;
      height: 28px;
      bottom: 100px;
      left: 218px;
      -webkit-transform:rotate(109deg);
      transform:rotate(109deg);
    }
    #groupes {
      width: 99px;
      height: 32px;
      bottom: 21px;
      left: 144px;
      -webkit-transform:rotate(157deg);
      transform:rotate(157deg);
    }
    #profil {
      width: 79px;
      height: 28px;
      bottom: 25px;
      left: 55px;
      -webkit-transform:rotate(205deg);
      transform:rotate(205deg);
    }
    #mp {
      width: 115px;
      height: 39px;
      bottom: 120px;
      left: -31px;
      -webkit-transform:rotate(265deg);
      transform:rotate(265deg);
    }
    #off, #on {
      width: 80px;
      height: 31px;
      bottom: 225px;
      left: 26px;
      -webkit-transform:rotate(315deg);
      transform:rotate(315deg);
    }
    #s_inscrire {
      width: 107px;
      height: 37px;
      bottom: 120px;
      left: -27px;
      -webkit-transform:rotate(263deg);
      transform:rotate(263deg);
    }

    /*Mouvement de l'aiguille selon le lien survolé*/
    #accueil:hover ~ #nav_aiguille {
      -webkit-transform:rotate(2deg);
      transform:rotate(2deg);
    }
    #rechercher:hover ~ #nav_aiguille {
      -webkit-transform:rotate(57deg);
      transform:rotate(57deg);
    }
    #membres:hover ~ #nav_aiguille {
      -webkit-transform:rotate(109deg);
      transform:rotate(109deg);
    }
    #groupes:hover ~ #nav_aiguille {
      -webkit-transform:rotate(157deg);
      transform:rotate(157deg);
    }
    #profil:hover ~ #nav_aiguille {
      -webkit-transform:rotate(205deg);
      transform:rotate(205deg);
    }
    #mp:hover ~ #nav_aiguille {
      -webkit-transform:rotate(265deg);
      transform:rotate(265deg);
    }
    #s_inscrire:hover ~ #nav_aiguille {
      -webkit-transform:rotate(263deg);
      transform:rotate(263deg);
    }
    #on:hover ~ #nav_aiguille, #off:hover ~ #nav_aiguille {
      -webkit-transform: rotate(315deg);
      transform: rotate(315deg);
    }

                   /*FIN NAVIGATION*/


    Maintenant, pour ceux qui veulent comprendre ce qu'ils font à la place de faire du copier/coller, nous allons découper certaines parties de ce CSS afin de comprendre comment cela fonctionne.

    Premièrement, le bloc de l'horloge :
    Code:
    /*Bloc de l'horloge*/
    .nav_bloc {
      background-image: url('http://img15.hostingpics.net/pics/909229montre2.png');
      width: 300px;
      height: 300px;
      position: relative;
      display: block;
      margin-top: -190px;
      margin-left: 30px;
    }

    • Le "background-image" est image de l'horloge.
    • Le "width" est la largeur de l'image de l'horloge et est importante puisque cela délimite la largeur du bloc également.
    • Le "height" est la hauteur de l'image de l'horloge et est importante puisque cela délimite la hauteur du bloc également.
    • La "position: relative" indique que s'il y a d'autres div à l'intérieur du bloc, leur position sera définie par rapport à la largeur et à la hauteur du bloc de l'horloge.
    • Le "display: block;" indique que le bloc de l'horloge est un bloc.
    • Le "margin-top: -190px" permet de déplacer le bloc de 190px vers le haut, à savoir sur la bannière.
    • Le "margin-left: 30px" permet de déplacer le bloc de 30px vers la droite.



    Deuxièmement, certaines caractéristiques des liens :
    Code:
    /*Trucs pour les liens*/
    .navv {
      position: absolute;
      display: block;
      z-index: 2;
    }

    • La "position: absolute" veut dire que la position des liens sont automatiquement liés aux bordures du bloc de l'horloge.
    • Le "display: block" indique que les liens sont des blocs.
    • Le " z-index: 2" indique que les liens sont au-dessus des éléments qui ont un "z-index" inférieur à 2 et en-dessous des éléments qui ont un "z-index" supérieurs à 2.



    Troisièmement, l'aiguille comme elle est initialement :
    Code:
    /*Aiguille*/
    #nav_aiguille {
      background-image: url('http://img15.hostingpics.net/pics/418642aiguille.png');
      width: 14px;
      height: 244px;
      bottom: 32px;
      left: 140px;
      -webkit-transform: rotate(0deg);
      transform: rotate(0deg);
      -webkit-transition: 0.5s;
      transition: 0.5s;
      z-index: 1;
    }

    • Le "background-image" est image de l'aiguille.
    • Le "width" est la largeur de l'image de l'aiguille et est importante puisque cela délimite la largeur du bloc également.
    • Le "height" est la hauteur de l'image de l'aiguille et est importante puisque cela délimite la hauteur du bloc également.
    • Le "bottom" indique que le bloc de l'aiguille est à 32px du bas du bloc de l'horloge.
    • Le "left" indique que le bloc de l'aiguille est à 140px du côté gauche du bloc de l'horloge.
    • Le "transform: rotate(0deg);" indique que le bloc de l'aiguille reste droit.
    • Le "transition: 0.5s;" indique que les mouvements de l'aiguille seront d'une durée de 0,5 seconde.
    • Le " z-index: 1" indique que les liens sont au-dessus des éléments qui ont un "z-index" inférieur à 1 et en-dessous des éléments qui ont un "z-index" supérieurs à 1.



    Quatrièmement, le positionnement des liens de la navigation. Comme ils sont tous basés sur le même principe, je prendrai le lien de "rechercher" comme exemple :
    Code:
    #rechercher {
      width: 131px;
      height: 35px;
      bottom: 200px;
      left: 184px;
      -webkit-transform:rotate(57deg);
      transform:rotate(57deg);
    }

    • Le "width" est la largeur de l'image de rechercher et est importante puisque cela délimite la largeur du bloc également.
    • Le "height" est la hauteur de l'image de rechercher et est importante puisque cela délimite la hauteur du bloc également.
    • Le "bottom" indique que le bloc de rechercher est à 200px du bas du bloc de l'horloge.
    • Le "left" indique que le bloc de rechercher est à 184px du côté gauche du bloc de l'horloge.
    • Le "transform: rotate(57deg);" indique que le bloc de rechercher est tourné de 57 degrés vers la droite.



    Dernièrement, le déplacement de l'aiguille en fonction du lien survolé. Comme ils sont tous basés sur le même principe, je prendrai le lien de "rechercher" comme exemple :
    Code:
    #rechercher:hover ~ #nav_aiguille {
      -webkit-transform:rotate(57deg);
      transform:rotate(57deg);
    }

    • Le "#rechercher:hover ~ #nav_aiguille" veut dire que quand le bloc "#rechercher" (bloc de rechercher) est survolé, il y a l'effet suivant sur le bloc "#nav_aiguille" (bloc de l'aiguille).
    • Le "transform: rotate(57deg);" indique que le bloc de l'aiguille tourne de 57 degrés vers la droite. Normalement, la rotation devrait être la même que celle qui a été appliquée sur le bloc rechercher.


    J'ai modifié tous les liens des images et tout est décalé! Qu'est-ce que je fais maintenant?
    Premièrement, va lire les explications du CSS si tu ne l'as pas fait.
    Ensuite, il va falloir repositionner chaque lien modifié avec leurs attributs "bottom", "left" et "rotate".
    N'oublie pas d'aller ajuster la rotation de l'aiguille avec la nouvelle rotation de tes liens !
    Enfin... bonne chance pour ce casse-tête Twisted Evil 



    3. Nouveau MP (Javascript)


    Avec la navigation de base, il y a une image différente que celle de la messagerie normale lorsqu'il y a un nouveau message. Seulement, ce n'est pas une fonction automatique si on fait sa propre barre de navigation. Du coup, nous allons reproduire cet effet !

    Pour cela, nous allons aller dans :
    > PANNEAU D'ADMINISTRATION
    > > MODULES
    > > > HTML & JAVASCRIPT
    > > > > GESTION DES CODES JAVASCRIPT

    À ce même endroit, si vous n'avez pas activé la gestion des javascripts, il faut le faire avant de faire tout autre chose.

    Ensuite, nous allons "créer un nouveau javascript".
    Il va falloir lui choisir un nom. Ex: "Nouveau MP"
    Ensuite, il va falloir cocher le Placement "Sur toutes les pages".

    Puis, on va y coller le code suivant :
    Code:
    jQuery().ready(function(){
            
            /* On prend l'élément du menu de base pour savoir s'il y a un nouveau message */
            var e= $("#i_icon_mini_new_message");
            
            /* Si il y en a pas, on s'arrête là */
            if(!e.length) return;
            
            /* S'il y en a, l'image changera pour l'image de nouveau message*/
            $("#mpO").attr('src','http://img15.hostingpics.net/pics/795760messagerie2.png');
          
          
            });

    Cette partie de code est expliquée directement dans le code alors on va en rester là ^^




    C'est tout! Si jamais vous avez des problèmes avec ce LS, n'hésitez pas à passer dans Un problème avec mon code ou Personnalisations si vous voulez personnaliser le LS et que vous avez besoin d'aide.

    À plus !


    Dernière édition par Onyx le Ven 30 Sep 2016 - 22:11, édité 2 fois
    FémininAge : 22Message(s) : 51
    Hebi
    le Sam 30 Aoû 2014 - 23:04
    Wow... c'est superbe ! En plus ça colle tellement bien avec les forums ayant un côté un peu plus "retro" ! Merci beaucoup :)
    FémininAge : 20Message(s) : 152
    Zarwins
    le Dim 31 Aoû 2014 - 10:24
    J'adore l'idée ! Ö
    Ça me plais énormément !
    Unnn grand merci !


    FémininAge : 26Message(s) : 92
    SunshineD
    le Dim 31 Aoû 2014 - 16:24
    C'est vraiment génial! Original et magnifique. J'aodre! cheers
    FémininAge : 20Message(s) : 150
    EAVENN
    le Lun 1 Sep 2014 - 8:03
    Merci !
    FémininAge : 22Message(s) : 40
    Dezaia
    le Lun 1 Sep 2014 - 16:58
    C'est vraiment beau et original !


    FémininAge : 25Message(s) : 48
    Lola Aino
    le Lun 1 Sep 2014 - 19:50
    Mercii **
    FémininAge : 19Message(s) : 76
    Junior.
    le Lun 1 Sep 2014 - 20:25
    Super original, merci beaucoup ! **
    FémininAge : 22Message(s) : 28
    ShamRock
    le Lun 1 Sep 2014 - 22:11
    C'est super, merci =D
    FémininAge : 24Message(s) : 476

    Les Guildes
    Guilde des Conteurs:
    0/0  (0/0)
    Guilde des Illusionnistes:
    0/0  (0/0)
    Guilde des Architectes:
    0/0  (0/0)
    Skyleen
    le Mar 2 Sep 2014 - 19:31
    Super !!! Merci beaucoup


    2013 ▬
    Commandes en cours : 0    ▬ Commandes finis : 2
    FémininAge : 24Message(s) : 49
    DixieM.
    le Jeu 4 Sep 2014 - 15:37
    C'est trop classe :love: Merci !
    MasculinAge : 21Message(s) : 55
    Merino
    le Sam 6 Sep 2014 - 17:36
    Merci beaucoup !! C'est super original
    FémininAge : 21Message(s) : 180
    Saia
    le Sam 6 Sep 2014 - 20:09
    Très originale et vraiment très beau!! *^*


    FémininAge : 18Message(s) : 53
    Laetizya
    le Dim 7 Sep 2014 - 13:18
    Je viens voir. >3< Merci beaucoup. *^*
    FémininAge : 17Message(s) : 147
    Layla4
    le Dim 7 Sep 2014 - 17:51
    Merci **
    FémininAge : 24Message(s) : 30
    Calliste
    le Dim 7 Sep 2014 - 19:02
    J'adore c'est vraiment trop jolie merci =).
    MasculinAge : 17Message(s) : 167

    Les Guildes
    Guilde des Conteurs:
    0/0  (0/0)
    Guilde des Illusionnistes:
    0/0  (0/0)
    Guilde des Architectes:
    0/0  (0/0)
    tamanegeek
    le Jeu 11 Sep 2014 - 17:18
    C'est juste superbe ! *-*
    FémininAge : 28Message(s) : 30
    Kânon
    le Dim 14 Sep 2014 - 11:56
    Merci :3
    FémininAge : 27Message(s) : 36
    Lenalee
    le Dim 14 Sep 2014 - 13:18
    merci beaucoup j'adore
    Age : 51Message(s) : 415
    picka234
    le Jeu 18 Sep 2014 - 15:38
    merci
    FémininAge : 19Message(s) : 7
    Lissandra
    le Ven 19 Sep 2014 - 20:12
    Très beau rendu. Merci !
    FémininAge : 23Message(s) : 14
    tess444
    le Dim 21 Sep 2014 - 4:21
    merci^^
    MasculinAge : 26Message(s) : 1216

    Les Guildes
    Guilde des Conteurs:
    0/10  (0/10)
    Guilde des Illusionnistes:
    0/10  (0/10)
    Guilde des Architectes:
    1/10  (1/10)
    Ayfoth
    le Mer 24 Sep 2014 - 0:12
    Très original j'achète !


    FémininAge : 23Message(s) : 142
    Rodeuse
    le Ven 26 Sep 2014 - 13:07
    Super original merci du partage ^^
    FémininAge : 27Message(s) : 34
    Ikigami
    le Dim 28 Sep 2014 - 1:24
    C'est vraiment original... merci :)
    FémininAge : 27Message(s) : 4

    Les Guildes
    Guilde des Conteurs:
    0/0  (0/0)
    Guilde des Illusionnistes:
    0/0  (0/0)
    Guilde des Architectes:
    0/0  (0/0)
    Marilyn M.
    le Dim 28 Sep 2014 - 15:33
    Merci pour le tutoriel. Wink


    Ça viendra avec le temps ...
    Contenu sponsorisé
    Aujourd'hui à 17:46

      La date/heure actuelle est Sam 1 Oct 2016 - 17:46