Bien entendu, nous reprenons les fichiers créés précédemment. Vous souvenez-vous? Lors de la préparation pour la mise en place des boutons "3D" pour le menu de navigation, nous avions rendu le bloc > sous-menu invisible. Maintenant, il nous faut rendre ce bloc visible tout simplement en supprimant les lignes de code: #menu ul li ol li {display:none;}
N'oubliions pas de créer un nouveau fichier .CSS et de lier à notre fichier .HTML d'exemple.
Maintenant, nous allons donner au bloc > sous-menu (pour nous #menu ul li ol) un aspect se rapprochant du style des boutons "3D". Souvenons nous que la plupart héritent des propriétés de leurs pères; il faudra donc annuler ces propriétés par des background:none;border:0;border-radius:0;box-shadow:0 0 0 0; et pour se simplifier l'existence, n'hésitons pas à copier-coller... Voici le code des sous-menus:
Avant tout:
Vous pouvez remarquer que les sous-menus fonctionnent, mais qu'ils sont fixes.
Sous-menu glissant:
Le but du jeu est d'animer ces sous-menus en donnant l'impression qu'ils sortent des boutons "3D".
Pour cela, lorsque rien de ne passe, rendons le sous-menu (pour nous #menu ul li ol) invisible, tout-petit, caché derrière le bouton "3D" par opacity:0;height:0;margin-top:-30px;z-index:-5; puis lorsque notre souris survole le bouton (pour nous #menu ul li:hover), rendons le sous-menu visible, de bonne taille, placé juste à sa place par opacity:0;height:0;margin-top:-30px;z-index:-5;
Mais il nous faut animer ces effets. Pour ceci créons une transition entre les 2 états du sous-menu par -moz-transition:1s opacity,.5s height,1s margin-top,1s z-index;-webkit-transition:1s opacity,.5s height,1s margin-top,1s z-index;-o-transition:1s opacity,.5s height,1s margin-top,1s z-index;
Le code final des sous-menus sera:
Pour l'aspect, c'est question de choix personnels. Remarquez 2 choses:Pour cela, lorsque rien de ne passe, rendons le sous-menu (pour nous #menu ul li ol) invisible, tout-petit, caché derrière le bouton "3D" par opacity:0;height:0;margin-top:-30px;z-index:-5; puis lorsque notre souris survole le bouton (pour nous #menu ul li:hover), rendons le sous-menu visible, de bonne taille, placé juste à sa place par opacity:0;height:0;margin-top:-30px;z-index:-5;
Mais il nous faut animer ces effets. Pour ceci créons une transition entre les 2 états du sous-menu par -moz-transition:1s opacity,.5s height,1s margin-top,1s z-index;-webkit-transition:1s opacity,.5s height,1s margin-top,1s z-index;-o-transition:1s opacity,.5s height,1s margin-top,1s z-index;
Le code final des sous-menus sera:
- Des petites différences apparaissent entre les différents navigateurs... difficile à tout contrôler.
- Pour Internet Explorer, cela ne fonctionne pas. Les sous-menus apparaissent lors du survol sans animation, ce n'est pas dramatique!