Bonjour à tous,
Voila pas mal de temps que je galere sur un site, que je vous explique le problème En effet, il y a 2 sous menu déroulant, l'un horizontale et l'autre verticale. Le probleme se situe au niveau du sous menu verticale, en effet ce dernier s'affiche sans trop de probleme avec Mozilla en revanche sous IE il n'affiche rien et aucune zone est cliquable. J'ai chercher un peu partt, mais il est vrai que je débute sur la creation de site web voir dans ce cas dans la modification de site web. Voici l'adresse du site
http://www.latherapiefamiliale.com/
Le code CSS
et le fichier java scrypt
merci d'avance pour votre aide[/i][/i]
Voila pas mal de temps que je galere sur un site, que je vous explique le problème En effet, il y a 2 sous menu déroulant, l'un horizontale et l'autre verticale. Le probleme se situe au niveau du sous menu verticale, en effet ce dernier s'affiche sans trop de probleme avec Mozilla en revanche sous IE il n'affiche rien et aucune zone est cliquable. J'ai chercher un peu partt, mais il est vrai que je débute sur la creation de site web voir dans ce cas dans la modification de site web. Voici l'adresse du site
http://www.latherapiefamiliale.com/
Le code CSS
/***** m CSS *****/
@media print {
/*A l'impression on cache le m, marche au moins pour IE, Moz et Opéra.*/
.mg, .ssmg {
visibility:hidden;
}
}
.mg, .ssmg {
color:black;
font-size:12px;
font-weight:bold;
border:0;
padding:0;
/* width et margin sont au cas où le javascript est désactivé. */
width:15em;
margin:1em;
}
/* .m = les cases toujours visibles (comme Fichier, Edition... dans un logiciel) */
.mg {
text-align:center;
}
/* .ssm = Les parties "déroulantes" qui s'affiche au survol d'un .m */
.ssmg {
color:#18472C;
background-color:#DAFFD8;
}
.mg span, .ssmg span {
/* Ne pas toucher
C'est pour cacher les ; en fin de <li>, ce qui permet aux synthèse vocales de prendre une
pause dans l'élocution */
display:none;
}
.ssmg ul, .ssmg li {
/* Ne pas trop toucher.
Les items (les <li>) des sous-ms, notamment pour enlever les puces des liste */
padding:0;
margin:0;
list-style-type:none;
}
.mg a, .ssmg a, .mg a:visited, .ssmg a:visited {
/* Les liens qui ne sont pas sous le curseur. */
font-family:"MS Sans Serif", "sans-serif", Verdana, Arial;
text-decoration:none;
color:#18472C;
padding:2px;
/* Ne pas modifier le block */
display:block;
/* Un width:100% fait planter Mozilla, sans le width:100% c'est IE et Opera... La combinaison
aucun width et height:100% marche sur tous, donc ne pas toucher ces 2 lignes */
/* height:100%;
margin:0px;*/
margin:0px;
width:100%;
}
html>body .mg a, html>body .mg a:visited, html>body .mg a:hover, html>body .mg a:active,
html>body .ssmg a, html>body .ssmg a:visited, html>body .ssmg a:hover, html>body .ssmg a:active {
width:auto;
}
/* spécificité au m image pour ne pas avoir d'espace autour des images...*/
.mg a, .mg a:visited {
padding:0;
}
.ssmg ul:hover, .ssmg a:hover, .ssmg a:focus, .mg a:hover, .mg a:focus {
/* Les liens sous le curseur.
On change les couleurs du texte et de fond, et on enlève le soulignement.
*/
text-decoration:none;
color:#19176F;
}
img {
/* Si on met une image dans un lien (par exemple un logo à gauche du lien), pas de bordure
car c'est vilain :-p */
border:none;
}
.ssmg img {
/* un petit espacement entre l'image et le texte du lien <a href="..."><img.../>blabla</a> */
margin-right:2px;
}
.ssmg img.hr {
/* Encore un peu expérimental, un <hr /> entre deux items pour faire un "séparateur"... */
margin-top:1px;
margin-bottom:1px;
margin-left:0;
margin-right:0;
width:100%;
display:block;
}
@media print {
/*A l'impression on cache le menu, marche au moins pour IE, Moz et Opéra.*/
.menu, .ssmenu {
visibility:hidden;
}
}
.menu, .ssmenu {
font-size:5px;
font-weight:bold;
font-family:"MS Sans Serif", "sans-serif", Verdana, Arial;
padding:1px;
/* width et margin sont au cas où le javascript est désactivé. */
width:15em;
margin:1em;
}
/* .menu = les cases toujours visibles (comme Fichier, Edition... dans un logiciel) */
.menu {
text-align:center;
}
.menu span, .ssmenu span {
/* Ne pas toucher
C'est pour cacher les ; en fin de <li>, ce qui permet aux synthèse vocales de prendre une
pause dans l'élocution */
display:none;
}
.ssmenu ul, .ssmenu li {
/* Ne pas trop toucher.
Les items (les <li>) des sous-menus, notamment pour enlever les puces des liste */
padding:0;
background-color:#C9CAE7;
margin:0;
list-style-type:none;
}
.menu a, .ssmenu a, .menu a:visited, .ssmenu a:visited {
/* Les liens qui ne sont pas sous le curseur. */
color:white;
padding:2px 1px;
text-decoration:none;
/* Ne pas modifier le block */
display:block;
/* Un width:100% fait planter Mozilla, sans le width:100% c'est IE et Opera... La combinaison
aucun width et height:100% marche sur tous, donc ne pas toucher ces 2 lignes */
/* height:100%;
margin:0px;*/
margin:0px;
width:100%;
}
html>body .menu a, html>body .menu a:visited, html>body .menu a:hover, html>body .menu a:active,
html>body .ssmenu a, html>body .ssmenu a:visited, html>body .ssmenu a:hover, html>body .ssmenu a:active {
width:auto;
}
.ssmenu ul:hover, .ssmenu a:hover, .ssmenu a:focus, .menu a:hover, .menu a:focus {
/* Les liens sous le curseur.
On change les couleurs du texte et de fond, et on enlève le soulignement.
*/
background-color:#EFB;
color:black;
text-decoration:none;
}
.ssmenu img {
/* un petit espacement entre l'image et le texte du lien <a href="..."><img.../>blabla</a> */
margin-right:2px;
}
.ssmenu img.hr {
/* Encore un peu expérimental, un <hr /> entre deux items pour faire un "séparateur"... */
margin-top:1px;
margin-bottom:1px;
margin-left:0;
margin-right:0;
width:100%;
display:block;
}
text{
}
body {
background-image:url(images/Site_body.jpg);
background-repeat:no-repeat;
background-color:#fafedf;
}
et le fichier java scrypt
/* true = le m sera verticalg, à gauche.
false = le m sera horizontal, en haut. */
var verticalg = true;
/* TRES IMPORTANT !
Il faut mettre ici le nombre de ms, le script n'est pas capable de compter tout
seul ! :-p Donc si votre code va jusqu'à <p id="m5"...> il faut mettre 5. */
var nbm = 5;
/* Centrer le m ? (true/false).
Centre horizontalement ou verticalgement suivant le mode choisi. */
var centrer_m = false;
/* On est obligé de définir une largeur pour les ms.
Pour mettre des ms de largeurs différentes :
var largeur_m = new Array(largeur m1, largeur m2, largeur m3...)
Il faut faire attention à mettre autant de valeurs que de nombre de m !
Attention, si vous êtes en m verticalg, mettez une largeur fixe (pas de Array) !
*/
var largeur_m = 105;
/* En mode verticalg, on a besoin de connaître la hauteur de chaque m.
Même si les "cases" ne sont pas dimensionnées en hauteur.
Ajustez cette variable si les ms sont trop rapprochés ou espacés en verticalg.
Pour mettre des ms de hauteurs différentes :
var hauteur_m = new Array(hauteur m1, hauteur m2, hauteur m3...)
Il faut faire attention à mettre autant de valeurs que de nombre de m !
Attention, si vous êtes en m horizontal, mettez une largeur fixe (pas de Array) !
*/
var hauteur_m = 20;
/* En mode horizontal.
Largeur des sous-ms, pour IE uniquement, les autres navigateurs respectent la largeur
auto. Mettez "auto" uniquement si vous êtes sûr d'avoir mis des à la place des
espace dans les items !
Pour mettre des sous-ms de largeurs différentes :
var largeur_sous_m = new Array(largeur1, largeur2...).
Il faut faire attention à mettre autant de valeurs que de ms.
Si un m n'a pas de sous-ms, il faut mettre quand même quelque chose !
Il est possible de mettre "auto" dans certaines colonnes, à condition de respecter la
consigne ci-dessus.
*/
var largeur_sous_m = 138;
/* Pour les navigateurs connaissant la largeur automatique (s'adapte au contenu), cette
option (active par défaut) permet d'avoir une largeur automatique. En cas contraire
(false), les sous ms auront la largeur largeur_sous_m. */
var largeur_auto_ssm = false;
/* ... pour mettre un peu d'espace entre les ms ! */
var espace_entre_ms = 15;
/* position du m par rapport au haut de l'écran ou de la page.
0 = le m est tout en haut. en px */
var top_m = 189;
/* En version horizontale.
position des sous-ms par rapport au haut de l'écran ou de la page. Il faut prévoir
la hauteur des ms, donc ne pas mettre 0 et faire "à tâton". en px */
var top_ssm = top_m + 23;
/* Position gauche du m, en px. */
var left_m = 17;
/* En version verticalge.
Position des sous-ms par rapport au bord gauche de l'écran. */
var left_ssm = largeur_m+left_m+5;
/* Quand la souris quitte un sous-m, si le sous-m disparait immédiatement,
cela gêne l'utilisateur. Alors on peut mettre un délai avant disparition du sous-m.
500 ms c'est bien [smile] */
var delaig = 650; // en milliseconde
/* En version horizontale.
Comme le m peut se superposer avec le texte de la page, il est possible de faire
descendre un peu la page (on augmente la marge du haut) pour aérer un peu la page,
une quarantaine de pixel c'est pas mal. en px*/
var marge_en_haut_de_page = top_m + 40;
/* En version verticalge.
On décale le document à droite pour pas que le m le superpose. */
var marge_a_gauche_de_la_page = largeur_m + 10;
/* Mettez à true si vous souhaitez que le m soit toujours visible.
Mettez false si vous ne le souhaitez pas, dans ce cas le m "disparaîtra" quand vous
descendrez dans la page. */
var suivre_le_scrollg=false;
/* Pour IE uniquement, les balises <select> passent toujours au-dessus du m, donc
par défaut on cache les listes déroulantes quand le m est ouvert, puis on les fait
réapparaître à la fermeture du m. Pour empêcher ça, mettre à false. */
var cacher_les_select=true;
var timeoutg; //ne pas toucher, c'est pour déclarer la variable
var agt = navigator.userAgent.toLowerCase();
var isMac = (agt.indexOf('mac') != -1);
var isOpera = (agt.indexOf("opera") != -1);
var IEver = parseInt(agt.substring(agt.indexOf('msie ') + 5));
var isIE = ((agt.indexOf('msie')!=-1 && !isOpera && (agt.indexOf('webtv')==-1)) && !isMac);
var isIE5win = (isIE && IEver == 5);
var isIE5mac = ((agt.indexOf("msie") != -1) && isMac);
var blnOk=true;
//pour enlever les "px" pour faire des calculs...
var reg = new RegExp("px", "g");
// onscrollg pour Internet Explorer, le position:fixed fait ce boulot pour les autres navigateurs
// qui respectent les normes CSS...
window.onscrollg = function()
{
if (blnOk && suivre_le_scrollg && (isIE || isIE5mac))
{
if (isIE5mac) document.getElementById("conteneurm").style.visibility="hidden";
var cumul=0;
for(i=1;i<=nbm;i++)
{
if (!verticalg) {
document.getElementById("m"+i).style.top = document.body.scrollTop + top_m + "px";
if (document.getElementById("ssm"+i))//undefined
document.getElementById("ssm"+i).style.top = document.body.scrollTop + top_ssm + "px";
} else {
document.getElementById("m"+i).style.top = document.body.scrollTop
+(((i-1)*espace_entre_ms)+cumul+1+top_m)+"px";
if (document.getElementById("ssm"+i))//undefined
document.getElementById("ssm"+i).style.top = document.body.scrollTop
+(((i-1)*espace_entre_ms)+cumul+1+top_m)+"px";
cumul += isFinite(hauteur_m)?hauteur_m:hauteur_m[i-1];
}
}
if (isIE5mac) document.getElementById("conteneurm").style.visibility="visible";
}
}
function Chargementg() {
if (!blnOk) {
if(document.body.style.backgroundColor!="") { blnOk=false; }
if(document.body.style.color!="") { blnOk=false; }
if(document.body.style.marginTop!="") { blnOk=false; }
if(document.getElementById) {
with(document.getElementById("conteneurm").style) {
if(position!="" || top!="" || left!=""
|| width!="" || height!="" || zIndex!=""
|| margin!="" || visibility!="") {
blnOk=false;
}
}
}
else{
blnOk=false;
}
}
if(blnOk)
{
document.getElementById("conteneurm").style.visibility="hidden";
trimespacesg();
with(document.body.style) {
if (!verticalg) marginTop=marge_en_haut_de_page+"px";
else marginLeft=marge_a_gauche_de_la_page+"px";
}
positionneg();
Cacherms();
}
// comme on a évité le clignotement, maintenant on fait apparaître le m [cligne]
document.getElementById("conteneurm").style.visibility='';
}
window.onresize = Chargementg;
/*
* Place les éléments du m correctement, au Chargementg, au scroll, au redimensionnement
* de la fenêtre
*/
function positionneg() {
var largeur_fenetre = (isIE?document.body.clientWidth:window.innerWidth);
var hauteur_fenetre = (isIE?document.body.clientHeight:window.innerHeight);
if (centrer_m) {
if (!verticalg) {
var largeur_totale = espace_entre_ms * (nbm-1);
if (isFinite(largeur_m))
largeur_totale += largeur_m * nbm;
else {
for (i = 1; i <= nbm; i++)
largeur_totale += largeur_m[i-1];
}
left_m = (largeur_fenetre - largeur_totale)/2;
} else {
var hauteur_totale = espace_entre_ms * (nbm-1);
if (isFinite(hauteur_m))
hauteur_totale += hauteur_m * nbm;
else {
for (i = 1; i <= nbm; i++)
hauteur_totale += hauteur_m[i-1];
}
top_m = (hauteur_fenetre - hauteur_totale)/2;
}
}
//ms
var cumul = 0;
for(i=1;i<=nbm;i++) {
with(document.getElementById("m"+i).style) {
if (!verticalg) {
top=top_m+"px";
//left=(((i-1)*(largeur_m+espace_entre_ms))+1+left_m)+"px";
left=(((i-1)*espace_entre_ms)+cumul+1+left_m)+"px";
} else {
//top=(((i-1)*(hauteur_m+espace_entre_ms))+1+top_m)+"px";
top=(((i-1)*espace_entre_ms)+cumul+1+top_m)+"px";
left=left_m+"px";
}
if (!suivre_le_scrollg || isIE || isIE5mac)
position="absolute";
else position="fixed";
//if (verticalg) height=hauteur_m+"px";
margin="0";
zIndex="2";
if (verticalg || isFinite(largeur_m))
width=largeur_m+"px";
else
width=largeur_m[i-1]+"px";
if ((!verticalg && isFinite(largeur_m)) || (verticalg && isFinite(hauteur_m))) {
cumul += (!verticalg?largeur_m:hauteur_m);
}
else {
cumul += (!verticalg?largeur_m[i-1]:hauteur_m[i-1]);
if (verticalg) height=hauteur_m[i-1]+"px";
}
}
}
//Sous-ms
cumul = 0;
for(i=1;i<=nbm;i++) {
if (document.getElementById("ssm"+i))//undefined
{
with(document.getElementById("ssm"+i).style) {
if (!suivre_le_scrollg || isIE || isIE5mac)
position="absolute";
else position="fixed";
if (!verticalg) {
top=top_ssm+"px";
//left=(((i-1)*(largeur_m+espace_entre_ms))+1+left_m)+"px";
left=(((i-1)*espace_entre_ms)+cumul+1+left_m)+"px";
} else {
left=left_ssm+"px";
//top=(((i-1)*(hauteur_m+espace_entre_ms))+1+top_m)+"px";
top=(((i-1)*espace_entre_ms)+cumul+1+top_m)+"px";
}
if (isIE || isOpera || isIE5mac || !largeur_auto_ssm) {
if (isFinite(largeur_sous_m))
width = largeur_sous_m+(largeur_sous_m!="auto"?"px":"");
else
width = largeur_sous_m[i-1]+(largeur_sous_m[i-1]!="auto"?"px":"");
}
else width = "auto";
if (!verticalg && !isIE5mac) {
//repositionnegment si déborde à droite
if ((width != "auto")
&& ((left.replace(reg,'').valueOf()*1 + width.replace(reg,'').valueOf()*1) > largeur_fenetre))
left = (largeur_fenetre-width.replace(reg,'').valueOf())+"px";
}
margin="0";
zIndex="3";
}
}
if ((!verticalg && isFinite(largeur_m)) || (verticalg && isFinite(hauteur_m))) {
cumul += (!verticalg?largeur_m:hauteur_m);
}
else {
cumul += (!verticalg?largeur_m[i-1]:hauteur_m[i-1]);
}
}
}
function Montrerm(strm) {
if(blnOk) {
AnnulerCacherg();
Cacherms();
if (document.getElementById(strm))//undefined
with (document.getElementById(strm).style)
visibility="visible";
}
SelectVisibleg("hidden",document.getElementsByTagName('select'));
}
function CacherDelaig() {
if (blnOk) {
timeoutg = setTimeout('Cacherms()',delaig);
}
}
function AnnulerCacherg() {
if (blnOk && timeoutg) {
clearTimeout(timeoutg);
}
}
function Cacherms() {
if(blnOk) {
for(i=1;i<=nbm;i++) {
if (document.getElementById("ssm"+i))//undefined
with(document.getElementById("ssm"+i).style)
visibility="hidden";
}
}
SelectVisibleg("visible",document.getElementsByTagName('select'));
}
function trimespacesg() {
//Contourne un bug d'IE5/win... il ne capte pas bien les css pour les <li>, donc on les vire !
if(blnOk&&isIE5win) {
for(i=1;i<=nbm;i++) {
if (document.getElementById("ssm"+i))//undefined
with(document.getElementById("ssm"+i))
innerHTML = innerHTML.replace(/<LI>|<\/LI>/g,"");
}
}
}
function SelectVisibleg(v,elem) {
if (blnOk && cacher_les_select && (isIE||isIE5win))
for (var i=0;i<elem.length;i++) elem[i].style.visibility=v;
}
/* true = le menu sera vertical, à gauche.
false = le menu sera horizontal, en haut. */
var vertical = false;
/* TRES IMPORTANT !
Il faut mettre ici le nombre de menus, le script n'est pas capable de compter tout
seul ! :-p Donc si votre code va jusqu'à <p id="menu5"...> il faut mettre 5. */
var nbmenu = 5;
/* Centrer le menu ? (true/false).
Centre horizontalement ou verticalement suivant le mode choisi. */
var centrer_menu = false;
/* On est obligé de définir une largeur pour les menus.
Pour mettre des menus de largeurs différentes :
var largeur_menu = new Array(largeur menu1, largeur menu2, largeur menu3...)
Il faut faire attention à mettre autant de valeurs que de nombre de menu !
Attention, si vous êtes en menu vertical, mettez une largeur fixe (pas de Array) !
*/
var largeur_menu = new Array(41,43,51,47,60);
/* En mode vertical, on a besoin de connaître la hauteur de chaque menu.
Même si les "cases" ne sont pas dimensionnées en hauteur.
Ajustez cette variable si les menus sont trop rapprochés ou espacés en vertical.
Pour mettre des menus de hauteurs différentes :
var hauteur_menu = new Array(hauteur menu1, hauteur menu2, hauteur menu3...)
Il faut faire attention à mettre autant de valeurs que de nombre de menu !
Attention, si vous êtes en menu horizontal, mettez une largeur fixe (pas de Array) !
*/
var hauteur_menu = 18;
/* En mode horizontal.
Largeur des sous-menus, pour IE uniquement, les autres navigateurs respectent la largeur
auto. Mettez "auto" uniquement si vous êtes sûr d'avoir mis des à la place des
espace dans les items !
Pour mettre des sous-menus de largeurs différentes :
var largeur_sous_menu = new Array(largeur1, largeur2...).
Il faut faire attention à mettre autant de valeurs que de menus.
Si un menu n'a pas de sous-menus, il faut mettre quand même quelque chose !
Il est possible de mettre "auto" dans certaines colonnes, à condition de respecter la
consigne ci-dessus.
*/
var largeur_sous_menu = 150;
/* Pour les navigateurs connaissant la largeur automatique (s'adapte au contenu), cette
option (active par défaut) permet d'avoir une largeur automatique. En cas contraire
(false), les sous menus auront la largeur largeur_sous_menu. */
var largeur_auto_ssmenu = true;
/* ... pour mettre un peu d'espace entre les menus ! */
var espace_entre_menus = 15;
/* position du menu par rapport au haut de l'écran ou de la page.
0 = le menu est tout en haut. en px */
var top_menu = 94;
/* En version horizontale.
position des sous-menus par rapport au haut de l'écran ou de la page. Il faut prévoir
la hauteur des menus, donc ne pas mettre 0 et faire "à tâton". en px */
var top_ssmenu = top_menu + 23;
/* Position gauche du menu, en px. */
var left_menu = 353;
/* En version verticale.
Position des sous-menus par rapport au bord gauche de l'écran. */
var left_ssmenu = largeur_menu-20;
/* Quand la souris quitte un sous-m, si le sous-m disparait immédiatement,
cela gêne l'utilisateur. Alors on peut mettre un délai avant disparition du sous-m.
500 ms c'est bien [smile] */
var delai = 650; // en milliseconde
/* En version horizontale.
Comme le menu peut se superposer avec le texte de la page, il est possible de faire
descendre un peu la page (on augmente la marge du haut) pour aérer un peu la page,
une quarantaine de pixel c'est pas mal. en px*/
marge_en_haut_de_page = top_menu + 40;
/* En version verticale.
On décale le document à droite pour pas que le menu le superpose. */
marge_a_gauche_de_la_page = largeur_menu + 10;
/* Mettez à true si vous souhaitez que le menu soit toujours visible.
Mettez false si vous ne le souhaitez pas, dans ce cas le menu "disparaîtra" quand vous
descendrez dans la page. */
var suivre_le_scroll=false;
var timeout; //ne pas toucher, c'est pour déclarer la variable
agt = navigator.userAgent.toLowerCase();
isMac = (agt.indexOf('mac') != -1);
isOpera = (agt.indexOf("opera") != -1);
IEver = parseInt(agt.substring(agt.indexOf('msie ') + 5));
isIE = ((agt.indexOf('msie')!=-1 && !isOpera && (agt.indexOf('webtv')==-1)) && !isMac);
isIE5win = (isIE && IEver == 5);
isIE5mac = ((agt.indexOf("msie") != -1) && isMac);
blnOk=true;
//pour enlever les "px" pour faire des calculs...
reg = new RegExp("px", "g");
// onScroll pour Internet Explorer, le position:fixed fait ce boulot pour les autres navigateurs
// qui respectent les normes CSS...
window.onscroll = function()
{
if (blnOk && suivre_le_scroll && (isIE || isIE5mac))
{
if (isIE5mac) document.getElementById("conteneurmenu").style.visibility="hidden";
var cumul=0;
for(i=1;i<=nbmenu;i++)
{
if (!vertical) {
document.getElementById("menu"+i).style.top = document.body.scrollTop + top_menu + "px";
if (document.getElementById("ssmenu"+i))//undefined
document.getElementById("ssmenu"+i).style.top = document.body.scrollTop + top_ssmenu + "px";
} else {
document.getElementById("menu"+i).style.top = document.body.scrollTop
+(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px";
if (document.getElementById("ssmenu"+i))//undefined
document.getElementById("ssmenu"+i).style.top = document.body.scrollTop
+(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px";
cumul += isFinite(hauteur_menu)?hauteur_menu:hauteur_menu[i-1];
}
}
if (isIE5mac) document.getElementById("conteneurmenu").style.visibility="visible";
}
}
function preChargement()
{
if (document.getElementById("conteneurmenu"))
{
document.getElementById("conteneurmenu").style.visibility="hidden";
//IE5 mac a un bug : quand un texte est dans un élément de style float, il n'apparait pas.
/*if (isIE5mac)
{
document.getElementById("conteneurmenu").style="";
}*/
}
if (document.getElementById("conteneurm"))
{
document.getElementById("conteneurm").style.visibility="hidden";
//IE5 mac a un bug : quand un texte est dans un élément de style float, il n'apparait pas.
/*if (isIE5mac)
{
document.getElementById("conteneurmenu").style="";
}*/
}
}
function Chargement() {
if (!blnOk) {
if(document.body.style.backgroundColor!="") { blnOk=false; }
if(document.body.style.color!="") { blnOk=false; }
if(document.body.style.marginTop!="") { blnOk=false; }
if(document.getElementById) {
with(document.getElementById("conteneurmenu").style) {
if(position!="" || top!="" || left!=""
|| width!="" || height!="" || zIndex!=""
|| margin!="" || visibility!="") {
blnOk=false;
}
}
}
else{
blnOk=false;
}
}
if(blnOk)
{
document.getElementById("conteneurmenu").style.visibility="hidden";
trimespaces();
with(document.body.style) {
if (!vertical) marginTop=marge_en_haut_de_page+"px";
else marginLeft=marge_a_gauche_de_la_page+"px";
}
positionne();
CacherMenus();
}
// comme on a évité le clignotement, maintenant on fait apparaître le menu [cligne]
document.getElementById("conteneurmenu").style.visibility='';
}
window.onresize = Chargement;
/*
* Place les éléments du menu correctement, au chargement, au scroll, au redimensionnement
* de la fenêtre
*/
function positionne() {
var largeur_fenetre = (isIE?document.body.clientWidth:window.innerWidth);
var hauteur_fenetre = (isIE?document.body.clientHeight:window.innerHeight);
if (centrer_menu) {
if (!vertical) {
var largeur_totale = espace_entre_menus * (nbmenu-1);
if (isFinite(largeur_menu))
largeur_totale += largeur_menu * nbmenu;
else {
for (i = 1; i <= nbmenu; i++)
largeur_totale += largeur_menu[i-1];
}
left_menu = (largeur_fenetre - largeur_totale)/2;
} else {
var hauteur_totale = espace_entre_menus * (nbmenu-1);
if (isFinite(hauteur_menu))
hauteur_totale += hauteur_menu * nbmenu;
else {
for (i = 1; i <= nbmenu; i++)
hauteur_totale += hauteur_menu[i-1];
}
top_menu = (hauteur_fenetre - hauteur_totale)/2;
}
}
//Menus
var cumul = 0;
for(i=1;i<=nbmenu;i++) {
with(document.getElementById("menu"+i).style) {
if (!vertical) {
top=top_menu+"px";
//left=(((i-1)*(largeur_menu+espace_entre_menus))+1+left_menu)+"px";
left=(((i-1)*espace_entre_menus)+cumul+1+left_menu)+"px";
} else {
//top=(((i-1)*(hauteur_menu+espace_entre_menus))+1+top_menu)+"px";
top=(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px";
left=left_menu+"px";
}
if (!suivre_le_scroll || isIE || isIE5mac)
position="absolute";
else position="fixed";
//if (vertical) height=hauteur_menu+"px";
margin="0";
zIndex="2";
if (vertical || isFinite(largeur_menu))
width=largeur_menu+"px";
else
width=largeur_menu[i-1]+"px";
if ((!vertical && isFinite(largeur_menu)) || (vertical && isFinite(hauteur_menu))) {
cumul += (!vertical?largeur_menu:hauteur_menu);
}
else {
cumul += (!vertical?largeur_menu[i-1]:hauteur_menu[i-1]);
if (vertical) height=hauteur_menu[i-1]+"px";
}
}
}
//Sous-menus
cumul = 0;
for(i=1;i<=nbmenu;i++) {
if (document.getElementById("ssmenu"+i))//undefined
{
with(document.getElementById("ssmenu"+i).style) {
if (!suivre_le_scroll || isIE || isIE5mac)
position="absolute";
else position="fixed";
if (!vertical) {
top=top_ssmenu+"px";
//left=(((i-1)*(largeur_menu+espace_entre_menus))+1+left_menu)+"px";
left=(((i-1)*espace_entre_menus)+cumul+1+left_menu)+"px";
} else {
left=left_ssmenu+"px";
//top=(((i-1)*(hauteur_menu+espace_entre_menus))+1+top_menu)+"px";
top=(((i-1)*espace_entre_menus)+cumul+1+top_menu)+"px";
}
if (isIE || isOpera || isIE5mac || !largeur_auto_ssmenu) {
if (isFinite(largeur_sous_menu))
width = largeur_sous_menu+(largeur_sous_menu!="auto"?"px":"");
else
width = largeur_sous_menu[i-1]+(largeur_sous_menu[i-1]!="auto"?"px":"");
}
else width = "auto";
if (!vertical && !isIE5mac) {
//repositionnement si déborde à droite
if ((width != "auto")
&& ((left.replace(reg,'').valueOf()*1 + width.replace(reg,'').valueOf()*1) > largeur_fenetre))
left = (largeur_fenetre-width.replace(reg,'').valueOf())+"px";
}
margin="0";
zIndex="3";
}
}
if ((!vertical && isFinite(largeur_menu)) || (vertical && isFinite(hauteur_menu))) {
cumul += (!vertical?largeur_menu:hauteur_menu);
}
else {
cumul += (!vertical?largeur_menu[i-1]:hauteur_menu[i-1]);
}
}
}
function MontrerMenu(strMenu) {
if(blnOk) {
AnnulerCacher();
CacherMenus();
if (document.getElementById(strMenu))//undefined
with (document.getElementById(strMenu).style)
visibility="visible";
}
SelectVisible("hidden",document.getElementsByTagName('select'));
}
function CacherDelai() {
if (blnOk) {
timeout = setTimeout('CacherMenus()',delai);
}
}
function AnnulerCacher() {
if (blnOk && timeout) {
clearTimeout(timeout);
}
}
function CacherMenus() {
if(blnOk) {
for(i=1;i<=nbmenu;i++) {
if (document.getElementById("ssmenu"+i))//undefined
with(document.getElementById("ssmenu"+i).style)
visibility="hidden";
}
}
SelectVisible("visible",document.getElementsByTagName('select'));
}
function trimespaces() {
//Contourne un bug d'IE5/win... il ne capte pas bien les css pour les <li>, donc on les vire !
if(blnOk&&isIE5win) {
for(i=1;i<=nbm;i++) {
if (document.getElementById("ssm"+i))//undefined
with(document.getElementById("ssm"+i))
innerHTML = innerHTML.replace(/<LI>|<\/LI>/g,"");
}
}
}
function SelectVisible(v,elem) {
if (blnOk && cacher_les_select && (isIE||isIE5win))
for (var i=0;i<elem.length;i++) elem[i].style.visibility=v;
}
merci d'avance pour votre aide[/i][/i]