Ca y'est!!! J'ai enfin réussi à adapter un menu déroulant uniquement en CSS et compatible avec Internet Explorer (IE) et Firefox (FF).
L'astuce est d'écrire 2 fois le menu et sous-menu, 1 fois pour IE (caché de FF) et 1 fois pour FF (caché de IE). Ainsi quelque soit le navigateur, le menu apparaît.
Si pour FF la gestion d'un menu déroulant est un jeu d'enfant, habituellement pour IE, on utilise du javascript.
Toute la difficulté était de trouver une solution pour la gestion du "déroulement" du menu en CSS sous IE. La solution fût de gérer un tableau. Autre difficulté, essayer autant que possible de réduire le nombre de ligne CSS en essayant de rendre communes un maximum de classes et en utilisant le "bypass" d'interprétation de propriété des 2 navigateurs.
Le code CSS et HTML de ce menu n'est pas très compliqué, mais de par l'architecture du blog générée par Over-blog et sur laquelle on ne peut avoir la main, son intégration dans l'entête peut être assez complexe. Donc si c'est la 1ère fois que vous touchez au CSS et à l'HTML, évitez ce menu ;-)
Si vous avez accès au javascript, préféré ce dernier ou utilisé le compromis CSS/javascript d'alsacréations ou le menu "Suckerfish" d'HTMLDog dont on trouve une très belle mise en situation ici . Pourquoi ce conseil? Aller lire le commentaire N°82 laissé sur cet article... je ne veux surtout pas contribuer au non respect des standards et ébranler Internet.
Voili voilou, passons aux choses sérieuses
Ci-dessous, l'exemple avec 2 boutons, vous pouvez aussi allez voir sur mon blog test son intégration dans l'entête:
Ci-dessous le code CSS à insérer tout en bas de votre CSS (j'ai essayé de mettre des noms parlants aux classes afin de comprendre sur quelles parties elles influent :
.menuIE {
display:none !important;
display:block;
}
a.boutonIE, a.boutonIE:link, a.boutonIE:visited, a.boutonIE:active {
color:#000;
width:90px;
height:18px;
display:block;
background:#c33;
border:1px solid #000;
margin-right:1px;
text-align:center;
float:left;
text-decoration:none;
font-family: verdana;
font-size:10px;
line-height:18px;
overflow:hidden;
}
a.boutonIE:hover {
color:#fff;
background:#000;
overflow:visible;}
a.boutonIE:hover table {
display:block;
background:#eee;
border-collapse:collapse;
}
.boutonFF {
color:#000;
width:90px;
height:18px;
display:block !important;
display:none;
background:#c33;
border:1px solid #000;
margin-right:1px;
text-align:center;
float:left;
text-decoration:none;
font-family: verdana;
font-size:10px;
line-height:18px;
overflow:hidden;
}
.boutonFF:hover {
height:auto;
cursor:pointer;
color:#fff;
background:#000;
}
a.SousMenu, a.SousMenu:link, a.SousMenu:visited, a.SousMenu:active {
display:block;
width:90px !important;
width:88px;
height:18px;
border-bottom:1px solid #000;
text-decoration:none;
color:#000;
font-family: verdana;
font-size:10px;
text-align:center;
background:#eee;
}
a.SousMenu:hover {background:#BCCCD2;}
Voici quelques explications pour comprendres le CSS ci-dessus:
.menuIE : affichage du menu pour Internet Explorer, caché pour Firefox grâce à display:none !important; En effet le !important est interprété par Firefox et force ce dernier à utiliser cette propriété alors qu' Internet explorer ne l'interprète pas et prend la propriété suivante. a.boutonIE : style du bouton primaire pour Internet Explorer a.boutonIE:hover : style du bouton primaire au passage de la souris pour Internet Explorer a.boutonIE:hover table : style du tableau (boutons secondaires ou liste déroulante) au passage de la souris pour Internet Explorer .boutonFF : style du bouton primaire pour Firefox. Affichage pour Firefox, caché pour Internet Explorer grâce à display:block !important; En effet le !important est interprété par Firefox et force ce dernier à utiliser cette propriété alors que Internet explorer ne l'interprète pas et prend la propriété suivante. .boutonFF:hover : style du bouton primaire au passage de la souris pour Firefox a.SousMenu : affichage du sous-menu (liste déroulante ou boutons secondaires) aussi bien pour Firefox que pour Internet Explorer.
Ci-dessous le code HTML à insérer dans votre entête en mode source:
<div class="menuIE">
<a class="boutonIE" href="#nogo">Blogs
<table><tr><td>
<a class="SousMenu" href="#nogo">PêUR</a>
<a class="SousMenu" href="#nogo">Zoélie</a>
<a class="SousMenu" href="#nogo">BilboWorld</a>
</td></tr></table>
</a>
<a class="boutonIE" href="#nogo">Aides
<table><tr><td>
<a class="SousMenu" href="#nogo">Francisek</a>
<a class="SousMenu" href="#nogo">La FAQ</a>
<a class="SousMenu" href="#nogo">Self HTML</a>
</td></tr></table>
</a>
</div>
<div class="boutonFF">Blogs<br />
<a class="SousMenu" href="#nogo">PêUR</a>
<a class="SousMenu" href="#nogo">Zoélie</a>
<a class="SousMenu" href="#nogo">BilboWorld</a>
</div>
<div class="boutonFF">Aides<br />
<a class="SousMenu" href="#nogo">Francisek</a>
<a class="SousMenu" href="#nogo">La FAQ</a>
<a class="SousMenu" href="#nogo">Self HTML</a>
</div>
Voici quelques explications pour comprendre le code HTML ci-dessus:
#nogo par l'URL du lien que vous souhaitez. #nogo
Soyez très attentif à la personnalisation de ce menu, en effet quand vous changez une propriété du CSS pensez à vérifier l'impact sous FF et sous IE car cette propriété peut se trouver à 1 endroit pour FF et à un autre pour IE.... soyez homogène. Quelques pistes pour vous aider:
background dans a.boutonIE ET .boutonFF background dans a.boutonIE:hover ET .boutonFF:hover background dans a.boutonIE:hover table ET a.SousMenu background dans a.SousMenu:hover width dans a.boutonIE ET .boutonFF + changer la largeur des menus déroulants via la propriété width:'largeur des boutons primaires'px !important pour FF et width:'largeur des boutons primaires - 2'px pour IE dans a.SousMenu (Hummmm, bon courage!!) height et line-height (qui doivent avoir la même valeur) dans a.boutonIE ET .boutonFF height dans a.SousMenu font-size inférieur à height quelque soit la classe du CSS.
Pour finir, au niveau de l'intégration du menu dans l'entête, vous devez veiller à ce que la hauteur de l'entête soit suffisante pour contenir le "déroulement" du menu. En effet s'il n'est pas assez haut, sous FF, le menu déroulant apparaitra mais ne sera pas cliquable et sous IE le menu primaire sera "rogné"!!!! Pour augmenter la taille de votre entête vous pouvez rajouter la propriété height à l'identifiant de l'entête:
#top { [ne touchez pas ce qui existe dejà]; height:200px; }
200px est donné à titre d'exemple, en effet tout dépend du contenu de votre entête. Si vous n'avez pas d'idée de la hauteur à mettre, procéder par dichotomie: mettre 200px, et augmentez la taille progressivement jusqu'à le menu s'affiche correctement sous IE et FF.
Avec plus de 300 commentaires sur cet article (et oui!!! ce menu n'est pas facile à mettre en oeuvre) les questions que vous vous posez sont sûrement dans les réponses que j'ai faites.
Vous trouverez par exemple:
Bon courage!!!!!!!!!!!!!!!!
Non, c'est bon, j'y arrive, merci beaucoup !!!
![]()
C'était le CTRL + F5 ;-)
ATTENTION, sous FF tu as 2 boutons "Home"
Waoow encore une fois , je suis surpris de ce qu'on peut arriver a faire avec les CSS
![]()
;-)
Bon je viens de lire le truc
Sa a l'air très chaud mais je m'y mettrai ce soir à tête reposé.
merci encore pour tout ce que tu fais
++destroy'
![]()
merci pour ta fidélité ;-)
rooooooo
Je m'incline, le travail que j'attendais temps !!!!!! Merci merci PEUR !!!!
Bon me met au boulot !!!!!!!
je sais que c'est embetant mais o passage: serait il possible de mettre des sous-sous-menus? le code doit etre compliqué et à en vouloir toujours plus... bon aller encore merci !!!
Matéo
![]()
Et puis quoi encore lol.....
;-)
bonjour.(eh oui encore moi !)
En fait je voulais te demander si je pouvais utiliser tes menus pour en mettre sur mon blog. En fait je creerais mes menus sur la base des tiens et les mettrais a disposition des autres. Mais il y aurait plus de choix que sur ton site vu que tu laisse la possibilité de changer les couleurs. ( bien sur je mettrai tous ça sur mon site et le lien direct ici !! natulurellement !!!!!
En esperant que la reponse sera oui...
Matéo
![]()
la réponse est..................... OUI ;-)
le must du must !!!!
Voila suite a une experience raté, j'ai trouvé le moyen de faire des double menus... voila
J'ai remi le meme pavé CSS dans mon CSS en renommant le tout avec un 2. J'ai ensuite coller le pavé HTML en renommant avec 2 (logique)
Et la tindinnnnnnnn resultat= des sous-menus dans les mensu ;-) !!!! Voila j'ai trouvé !!!
Merci pour ta reponde affirmative !!
Matéo
![]()
Félicitation ;-)
JE sais j'envahi ton blog de commentaire dsl... mais je viens mettre le lien vers mon nouveau site. Et j'ai decouvert ( si on appelle ça une decouverte ) le moyen de faire des "pseudos" menus deroulants. Grace a ce menus la que tu a mi sur ton blog. je te di encore un gros merci
Matéo
PS: promis c'est le dernier commentaires !!
![]()
merci pour ta fidélité ;-)
Bah voilà, j'ai succombé à la tentation et me suis aussi fait des menus...
Merci beaucoup à toi! :)
![]()
Très réussi!
ok le problème est résolu ^^
Génialllll
Meki bocu
![]()
Très joli. Une précision, je bosse pour que le menu déroulant se superpose au reste du blog et ne le décale pas ;-) Dès que j'ai la solution (j'approche pour FF c'est bon) je te contacterai et le préciserai dans l'article!!
Rien a voir avec la choucroute (on a les origines qu'on peut, hein), mais ta page d'accueil est vraiment tres tres classe, bravo !
(Et puis elle est utile, ca change de ce qu'on voit habituellement ;) )
Je suis curieuse de voir comment tu as fait, meme si je n'en aurais pas trop l'utilite sur mon blog ...
Biz.
![]()
La prochaine fois tu pourra m'embêter avec la bouillabaise ;-)
Merci pour ton appréciation, venant de toi je suis tout rouge! En fait, c'est très simple... promis un article très vite. Bah tu n'en a pas besoin, ton accueil papilloné est inimitable ;-D
C'est pas que je veux pas dévoiler, c'est juste que je veux pas donner un code qu'il faudra modifier...
Alors pour FF, il faut en mode HTML encapsuler tout ton code par :
<div id="container"><div id="contabs">
l'ancien code
</div></div>
Dans le CSS avant le code du menu tu rajoutes:
#container {
position: relative
}
#contabs{
position:absolute;
z-index:100;
}
Au final le menu se superpose au reste du blog MAIS sous IE il n'est pas cliquable (Merci à Phractale et Francisek pour cette piste)
C'est possible, voir la réponse dans "posez une question", mais tu risques d'avoir sous internet explorer le menu déroulant non cliquable selon la configuration de ton blog ;-)
Ce genre de menu, avec bidouille pour compatibilité avec IE et FF est très délicat à modifier!!!! Si tu souhaites un menu déroulant vertical comme dans mon module "navigation"... tu peux récupérer le CSS et voir les différences (il est basé sur celui de cet article ;-)
Bahhhh oui je TE le colle ;-)
[EDIT ]ton fil étant fermé voici le code:
CSS:
#container {position:relative !important;}
#couche {position:absolute !important;z-index:1000 !important}
.menuIE {
display:none !important;
display:block;
}
a.boutonIE, a.boutonIE:link, a.boutonIE:visited, a.boutonIE:active {
color:#bbb;
width:185px;
height:16px;
display:inline;
background:#446D87;
margin-right:1px;
text-align:left;
float:left;
text-decoration:none;
font-family: verdana;
font-size:10px;
line-height:16px;
overflow:hidden;
}
a.boutonIE:hover {
color:#fff;
background:#557D97;
overflow:visible;}
a.boutonIE:hover table {
display:block;
background:#eee;
border-collapse:collapse;
}
.boutonFF {
color:#bbb;
width:200px;
height:16px;
display:inline!important;
display:none;
background:#446D87;
margin-right:1px;
text-align:left;
float:left;
text-decoration:none;
font-family: verdana;
font-size:10px;
line-height:16px;
overflow:hidden;
}
.boutonFF:hover {
height:auto;
cursor:pointer;
color:#fff;
background:#557D97;
}
a.SousMenu, a.SousMenu:link, a.SousMenu:visited, a.SousMenu:active {
display:block;
width:200px !important;
width:183px;
height:16px;
line-height:12px;
text-decoration:none;
color:#000;
font-family: verdana;
font-size:9px;
text-align:left;
background:#eee;
padding-left:10px;
border-bottom:1px dashed #bbb;
}
a.SousMenu:hover {
background:#BCCCD2;
color:#fff;
border-bottom:1px dashed #bbb
}
HTML
<div class="menuIE">
<a class="boutonIE" href="#nogo">Blogs
<table><tr><td>
<a class="SousMenu" href="#nogo">PêUR</a>
<a class="SousMenu" href="#nogo">Zoélie</a>
<a class="SousMenu" href="#nogo">BilboWorld</a>
</td></tr></table>
</a>
<a class="boutonIE" href="#nogo">Aides
<table><tr><td>
<a class="SousMenu" href="#nogo">Francisek</a>
<a class="SousMenu" href="#nogo">La FAQ</a>
<a class="SousMenu" href="#nogo">Self HTML</a>
</td></tr></table>
</a>
</div><div id=container>
<div id=couche>
<div class="boutonFF">Blogs<br/>
<a class="SousMenu" href="#nogo">PêUR</a>
<a class="SousMenu" href="#nogo">Zoélie</a>
<a class="SousMenu" href="#nogo">BilboWorld</a>
</div>
<div class="boutonFF">Aides<br/>
<a class="SousMenu" href="#nogo">Francisek</a>
<a class="SousMenu" href="#nogo">La FAQ</a>
<a class="SousMenu" href="#nogo">Self HTML</a>
</div></div></div>
Regarde ma réponse à la question précédente, j'ai copié mon CSS et un exemple de code HTML ;-)
Il est légèrement différent de celui de l'article ;-)
Je vais faire un tour de temps à temps sur ton blog pour contrôler ;-)
En fait pour "chepfer" et "Mes potes" il manque à la fin de l'URL: .html
C'est tout ;-)
Il est 21H30 (précision si tu fais des changements ;-) )
Dans ton module, cela fonctionne parfaitement, juste petit soucis, réduire la largeur des boutons et du sous-menu... et ça me paraîtra plus propre (comme le mien)...
;-)
Bonjour baba77350,
dans mon article v1.9: ce qui change tu trouvera où et comment le trouver ;-)
Oui j'ai remarqué, ça ne le fait pas chez moi....
Y a un pb de largeur du sous-menu pour IE qui est peut-être fautif. Dans a.SousMenu il y a 2 largeurs (width) à renseigner, la première avec le !important pour Firefox doit être égale à la largeur des boutonFF (ça c'est bon), par contre la deuxième largeur (celle d'IE) doit être ègale à la largeur des boutonIE moins 2px..... autrement dit 173px au lieu de 175px!!!!!!!
Sinon par rapport au code donné dans le commentaire N°22, il te manque en mode HTML les <div id=container><div id=couche> ... le code pour FF ... </div></div>
;-)
Merci à toi ;-)
Pour l'instant j'ai pas avancé sur le plan horizontal mais à la vertical en modifiant légèrement le code j'arrive à quelque chose d'assez propre (voir mon module "navigation" et le code au commentaire n°22)
PS: la prochaine fois laisse moi l'adresse de ton blog que je vienne y faire un petit coucou ;-)
Merci pour le lien, pourtant fidèle d'Alsacréations je n'avais pas vu cet exemple ;-)
EDIT> en y regardant de plus près le code d'Alsacréations comporte du javascript, et sur Over-Blog c'est pas possible pour les blogs confiance..... Je trouverai ;-)
Peut-être des différences de padding ou margin entre les 2 CSS du côté des modules ou colonne?!?!
Bonne nuit ;-)
non! As-tu modifié la propriété line-height moins haute peut-être que cela fonctionnerait?!?