Faire un menu CSS3

Le problème exposé dans ce sujet a été résolu.

Voici la page de test : formulaire. J'ai élaguée tout le CSS inutile, pour le JS, seule la première fonction est utilisée dans cet exemple.

J'ai laissé les onclick pour le moment, pour aller plus vite 0:)

PS : le bouton qui affiche le sous-menu est celui avec le symbole §.

+0 -0

J'ai réussi à le faire merci :-)
Mais j'ai une petite question, comment faire pour faire disparaître le menu si le bouton perd le focus ? J'ai essayé avec onBlur mais j'ai plusieurs problèmes :

  • Je retombe dans le même cas que le CSS, le menu se ferme avant d'exécuter le bouton du menu. J'ai essayé d'utiliser la fonction setTimeout(), mais ça n'a pas l'air de marcher.
  • Je me retrouve dans le même cas que le onclick, à mettre du JS dans le code HTML.

Merci encore pour ton aide ! :-)

PS: j'ai suivi ce tuto en remplaçant visibility par display.

Codes :

1
<button type="button" title="Titre" class="bt-editeur icon-section" id="bdo-titre" style="margin-left: 30px;" onclick="afficherCacher('bdo-titre-menu')" onblur="setTimeout(cacher('bdo-titre-menu'), 10000);"></button>
1
2
3
4
function cacher(idDiv)
{
    document.getElementById(idDiv).style.display="none";
}
+0 -0

Salut,

Pour écouter des évènements en JS tu peux faire :

1
2
3
4
5
6
7
8
var button = document.getElementById("bdo-titre");
button.addEventListener('click', function(e) {
    // ton action au clic
}, false);
button.addEventListener('blur', function(e) {
    // ton action quand tu perd le focus
}, false);
// etc

Pour t'éviter d'écrire du JS dans le DOM.

Le e est un objet de type Event qui va te permettre de manipuler l'évènement.

1
2
3
4
5
6
7
var button = document.getElementById("bdo-titre");
button.addEventListener('click', function(e) {
    /* Annule l'action du clic, si ton bouton est dans un formulaire,
     * le formulaire ne sera pas soumis.
     */
    e.preventDefault(); 
}, false);
+0 -0

Merci, ça marche de la même façon et c'est plus propre maintenant :p Je pense que je vais continuer mon cours sur le JS quand même pour bien comprendre les évènement.

Par contre je comprend pas pourquoi la fonction setTimeout ne fonctionne pas, même avec 10 secondes c'est instantané :

1
2
3
4
var button = document.getElementById("bdo-titre");
button.addEventListener('blur', function(e) {
    setTimeout(cacher('bdo-titre-menu'), 10000);
}, false);
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte