EDN forum

Documentations et Dossiers » Créer une barre de navigation avec animation HTML5/CSS3/JQuery & Modernizr

Modérateur

rank_modo.png

Avatar

Modérateur(s)

Inscrit le: 17/09/2009

Message: 2274

Commentaires: 25

Le 06/12/2012 à 10h39
Sur votre site internet, la navigation doit être simplifié au maximum afin de rendre le parcours des internautes fluide et intuitif. La nouvelle version de HTML, prévoit la balise <nav> servant à identifier les parties du site utiles à la navigation.

Le tutoriel que je vais présente vient d'un bouquin qui se nomme Savoir tout faire, CSS3, HTML5 & JQuery de Julien Debove éditer chez Oracom Editions

Je vais créer dans
  1. un premier temps une partie horizontal en html
  2. un second temps avec la partie css3
  3. un troisième temps sera consacré aux jquery.


Ouvrez dans templates/votre_theme/ le fichier header.tpl
Ajoutez le lien que voici dans la partie <head>
Code HTML :
 
<link href="{PATH_TO_ROOT}/templates/{THEME}/styles.css" rel="stylesheet" type="text/css" media="screen" />


Toujours dans la partie header.tpl après la balise <body>, ajoutez ceux-ci:
Code HTML :
 
<nav id="menu">
<ul>
<li><a href="#" title="Accueil">Accueil</a></li>
<li><a href="#" title="Actualités">Services</a>
<ul>
<li><a href="#" title="csn">Votre Espace</a></li>
<li><a href="#" title="communaute">Communauté</a></li>
<li><a href="#" title="theme">Themes</a></li>
<li><a href="#" title="docs">Encore +</a></li>
</ul>
</li>
  <li><a href="#" title="réalisations">Nos réalisations</a>
<ul>
<li><a href="#" title="theme">Theme</a></li>
<li><a href="#" title="payant">Theme payant</a></li>
<li><a href="#" title="extra">Extra</a></li>
<li><a href="#" title="modules">Modules</a></li>
</ul>
</li>
  <li><a href="#" title="Contact">Contact</a></li>
  </ul>
</nav>
 


Voici la structure de votre menu qui sera afficher sur votre site web.
Il reste plus qu'à référencer les balises par des liens hypertexte [url=#] sur chaque entrée, je rajoute à cela title="" qui permet de référencer votre lien hypertexte.

Ouvrez pour créez un nouveau document que vous nommerez styles.css

Code CSS :
 
nav { 
display:block; 
margin:0 auto 20px; 
position:relative;
}
nav ul {
height:40px;
padding:0; margin:20px 0 0 0;
border-top:1px solid #2a323f;
border-bottom:1px solid #2a323f;
background: #485160;
background: -moz-linear-gradient(top, #485160 0%, #39414c 100%); 
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#485160), color-stop(100%,#39414c)); 
box-shadow: 0 2px 4px #424346;
-moz-box-shadow: 0 2px 4px #424346;
-webkit-box-shadow: 0 2px 4px #424346;
}
nav li {
position:relative;
float:left;
}
nav ul:before { 
border-top: 1px solid #6d7581;  
content: '';  
width: 100%;  
position: absolute;  
}
nav ul:after {
content:".";
display:block;
height:0;
clear:both;
visibility:hidden;
}
nav ul ul {
display:none;
width:100%;
position:absolute;
left:0;
}
nav ul li {
list-style:none;
float:left;
padding:0; margin:0;
position:relative;
}
nav ul li a {
float:left;
padding:0 20px 0 20px; margin:0;
height:40px;
line-height:40px;
color:#e0e1e3;
font-weight:bold;
text-decoration:none;
text-shadow:0px 1px 1px #101215;
-webkit-transition: color 0.3s ease-in;
-moz-transition: color 0.3s ease-in;
-o-transition: color 0.3s ease-in;
border-right:1px solid #2a323f;
border-left: 1px solid #6d7581;
}
nav li a {
display:block;
}
nav ul li:first-child a {
border-left:none;
}
nav ul li:last-child a {
border-right:none;
}
nav ul li a:hover {
background: #586375;
background: -moz-linear-gradient(top, #586375 0%, #4c5766 100%); 
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#586375), color-stop(100%,#4c5766)); 
color:#fff;
}
nav ul li ul {
position:absolute;
top:40px;
left:0;
border:none;
background:#2a323f;
height:auto;
width:130px;
padding:1px 0 0 0; margin:0;
-moz-border-bottom-right-radius: 10px; 
    -webkit-border-bottom-right-radius: 10px; 
    border-bottom-right-radius: 10px;
-moz-border-bottom-left-radius: 10px; 
    -webkit-border-bottom-left-radius: 10px; 
    border-bottom-left-radius: 10px;
}
nav ul li ul:before { 
border-top: none; 
}
nav ul li ul li a {
color:#a5a5a5;
padding:0 0 0 20px; margin:0;
width:110px; height:30px; line-height:30px;
border:none;
border-top:1px solid #2a323f;
}
nav ul li ul li a:hover {
color:#fff;
background: #b64f40;
background: -moz-linear-gradient(top, #ec6e59 0%, #b64f40 100%); 
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ec6e59), color-stop(100%,#b64f40)); 
border-top:1px solid #f28d7c;
box-shadow: 0 0px 8px #3b3b3b;
-moz-box-shadow: 0 0px 8px #3b3b3b;
-webkit-box-shadow: 0 0px 8px #3b3b3b;
}
nav ul li ul li:last-child a {
-moz-border-bottom-left-radius: 10px; 
-webkit-border-bottom-left-radius: 10px; 
border-bottom-left-radius: 10px;
-moz-border-bottom-right-radius: 10px; 
-webkit-border-bottom-right-radius: 10px; 
border-bottom-right-radius: 10px;
}
 


Tous ceux-ci correspond à la barre du menus, avec la modifications des liens hypertextes sur sa couleur, des coins arrondis, des effets de transition, des bordures, des liens avec leurs sous-menus, des effets de survol.

Maintenant nous devons créer deux fichiers javascript qui se nommeront jquery.js et modernizr.js, vous placerez les deux fichiers dans un dossier nommé js, qui se trouvera à la racine de votre thème.

Téléchargez ceux-ci:
<a href="/upload/js.rar">js.rar[/url]

Dans cette partie de codage, le script javascript ci dessus, vous permet dans votre fichier html d'ouvrir le menu en utilisant l'effet SlideDown, et lorsque la souris n'est au dessus du menu, l'effet SlideUp pour le fermer

Voici l'effet obtenu:


Bon amusement :rolleyes



Edité par hight_tower Le 06/12/2012 à 10h40



Chez Swan Site design Web phpboost3. Membre depuis 2009 & modérateur depuis 2011.
Mail Site web    

CsN Bazooka

rank_3.png

Avatar

Inscrit le: 15/09/2009

Message: 219

Commentaire: 0

Le 04/02/2015 à 19h04
Bonjour je viens de tenter de mettre le menu sur un site en coure de création mes problème j'ai pas l'ouverture des menu je suis sur Pbt 4.1.3 tout a été fait comme dans le tuto mes pas de sous menu le site

http://demo.sebastieng.com/phpboost/

pour le thème c'est DJ-Theswat ( attention il est en coure de création )


Site web    

CsN Missile

rank_6.png

Avatar

Inscrit le: 14/01/2013

Message: 1017

Commentaires: 3

Le 04/02/2015 à 19h07
Bonjour,

jquery ne serait pas en conflit ?

Cordialement, janus57
   

CsN Bazooka

rank_3.png

Avatar

Inscrit le: 15/09/2009

Message: 219

Commentaire: 0

Le 04/02/2015 à 19h41
c'est possible mes la je ne sais pas ce qui cloche je vais tester en le retirant


Site web    

Administrateur

rank_admin.png

Avatar

Administrateur
WebDesigner

Inscrit le: 01/08/2009

Message: 8269

Commentaires: 389

Le 04/02/2015 à 20h42
Bonsoir,

Haa tiens je t'ai raté sur ce sujet .. la 4.1.3 n'est pas censé etre en JQuery déjà ?

Swan :study



- Pas de support par Message Privé, merci.
- Mes badges de compétences.
Youtube    

CsN Missile

rank_6.png

Avatar

Inscrit le: 14/01/2013

Message: 1017

Commentaires: 3

Le 04/02/2015 à 21h58
Swan:
Bonsoir,

Haa tiens je t'ai raté sur ce sujet .. la 4.1.3 n'est pas censé etre en JQuery déjà ?

Swan :study

Bonjour,

non même librairies JS que la V4.0 et la V3.0, et jQuery est connu pour entrer en conflit avec.

Theswat:
c'est possible mes la je ne sais pas ce qui cloche je vais tester en le retirant

Non plus car visiblement ce menu nécessite jQuery

Donc seule solution, mettre l'anti-conflit sur jQuery ou attendre la V4.2 qui sera full UTF-8 + jQuery.

En tout cas de mon côté j'avais des erreurs JS avec jQuery sur ton site et ce thème précis (pas testé les autres).

Cordialement, janus57
   

CsN Bazooka

rank_3.png

Avatar

Inscrit le: 15/09/2009

Message: 219

Commentaire: 0

Le 05/02/2015 à 04h28
Ok donc je suis bloquer avec ce système ce qui ne m’arrange pas beaucoup si quelqu’un connais un menus du style pour la v4.1.3 je prend


Site web    

CsN Missile

rank_6.png

Avatar

Inscrit le: 14/01/2013

Message: 1017

Commentaires: 3

Le 05/02/2015 à 11h30
Bonjour,

qu'est-ce que vous appelé un menu "du style" ?

Car bon de base les menus fait via l'administration peuvent se mettre en menu "drop down" (qui s'affiche au passage de la souris).

Sinon il va falloir être plus explicite sur le type de menu souhaité.

Cordialement, janus57
   

Modérateur

rank_modo.png

Avatar

Modérateur(s)

Inscrit le: 17/09/2009

Message: 2274

Commentaires: 25

Le 05/02/2015 à 17h48
A l'époque j'avais créer ce petit tutoriel en V3. (juste pour l'info)

Sur V4 je ne l'ai pas réalisé



Chez Swan Site design Web phpboost3. Membre depuis 2009 & modérateur depuis 2011.
Mail Site web    

CsN Bazooka

rank_3.png

Avatar

Inscrit le: 15/09/2009

Message: 219

Commentaire: 0

Le 05/02/2015 à 17h56
bien un menu comme celui la mes intégrée directement dans le body et pas en module


Site web    

CsN Bazooka

rank_3.png

Avatar

Inscrit le: 15/09/2009

Message: 219

Commentaire: 0

Le 05/02/2015 à 17h57
hight_tower:
A l'époque j'avais créer ce petit tutoriel en V3. (juste pour l'info)

Sur V4 je ne l'ai pas réalisé

oui je c'est ce que j'ai remarquer a la date mes je l'ai teste et il va pas donc feau que je trouve un autre car le multiple est pas bon pour ce que je veux faire ( celui ci ) http://evolix-alliance.fr le rouge



Edité par Theswat Le 05/02/2015 à 18h02


Site web    

CsN Missile

rank_6.png

Avatar

Inscrit le: 14/01/2013

Message: 1017

Commentaires: 3

Le 05/02/2015 à 18h29
Theswat:
hight_tower:
A l'époque j'avais créer ce petit tutoriel en V3. (juste pour l'info)

Sur V4 je ne l'ai pas réalisé

oui je c'est ce que j'ai remarquer a la date mes je l'ai teste et il va pas donc feau que je trouve un autre car le multiple est pas bon pour ce que je veux faire ( celui ci ) http://evolix-alliance.fr le rouge

Bonjour,

et pourquoi ne pas récupérer ce menu alors ?
Ou même, pourquoi ne pas surcharger le CSS des menu crée via l'administration ??

Car là en faite le menu présent sur ce site est pour moi une tentative d'intégration d'un menu récupéré ailleurs mais l'intégration n'est pas fait à 100% car le menu qui doit avoir la class "current" ne change jamais (c'est corrigeable en JS, donc peut être normale).

Le but d'utiliser les menus via l'administration (quitte à les surcharger niveau CSS) est de ne pas avoir à toucher au TPL pour chaque modif du menu, tout se fait via l'administration et reste compatible avec les versions futur.

P.S. le menu du site que tu montre est 100% HTML/CSS, tu moins je vois pas de jQuery dans les pages

EDIT :
Ah oui, faut éviter les double posts, on édite, c'est plus propre et permet de gagner de la place.

Cordialement, janus57



Edité par janus57 Le 05/02/2015 à 18h30
   

Administrateur

rank_admin.png

Avatar

Administrateur
WebDesigner

Inscrit le: 01/08/2009

Message: 8269

Commentaires: 389

Le 05/02/2015 à 22h05
Bonsoir,

Tardive à répondre, mais c'était le temps de chercher les menus ...

Voilà un peu le même menu , mais en css3 : http://www.bloggermint.com/2011/06/pure-css3-multi-level-drop-down-navigation-menu/

Tu as aussi celui-ci que je trouve pas mal : http://red-team-design.com/css3-dropdown-menu/


Si vraiment tu veux trouver moulte menu, tu peux aussi tre pencher sur le site CSSPLAY : http://www.cssplay.co.uk/menus/

Voilà, je pense que tu trouveras ton bonheur, et si tu as un soucis d'intégration, hésite pas ^^

Swan :study



- Pas de support par Message Privé, merci.
- Mes badges de compétences.
Youtube    

CsN Bazooka

rank_3.png

Avatar

Inscrit le: 15/09/2009

Message: 219

Commentaire: 0

Le 06/02/2015 à 03h57
Merci swan je regarde ca tento et merci au autre

pour répondre a la question juste avant pourquoi une intégration tpl au lieux du menu de base c'est simple on ne peux le bouger de place ( il reste fixe la ou le codeur la placer ) ça évite les remarque du style le thème ne donne pas la même chose chez moi etc j'ai déjà eu le cas donc cette méthode m’évite ce genre de souci


Site web    
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie

Qui est en ligne ?
Qui est en ligne ?

Qui est en ligne ?

Au total il y a 1 Utilisateur en ligne :: 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
( basées sur les utilisateurs actifs des 5 dernières minutes )
Utilisateur en ligne: Aucun membre connecté

Membres connectés au cours des dernières 24 heures:

Swan, hight_tower, lise, enecowsertraele, arraraeric,

Légende

 [ Administrateur(s) ]   [ Modérateur(s) ]   [ Helpers]   [ WebDesigner(s) ]   [ Membres ]