Rebonjour Smiley smile

alors voilà j'ai une nouvelle question par rapport au menu déroulant vertical.

En fait j'aimerai qu'une partie soit déjà visible à l'ouverture de la page (exemple partie 2 et ses sous menus), et qu'au survol des autres parties on voit les sous menus relatifs apparaître et la partie qui était visible au départ disparaître. Enfin, j'aimerai que lorsque le bouton sors des zones cliquables, la partie initialement visible réaparaisse. J'avais réussi à trouver une solution mais ça ne fonctionne pas sous IE, le menu ne cesse de s'ouvrir et de se fermer Smiley decu Je vais coller mon code ci-dessous, si vous avez une idée je suis preneur.

Merci d'avance


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Menu déroulant vertical</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<script type="text/javascript">
<!--
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';
		document.getElementById('sous').style.display='none';}
}

function montresous() {
	{document.getElementById('sous').style.display='block';
	document.getElementById('smenu3').style.display='none';
	document.getElementById('smenu4').style.display='none';}
}
//-->
</script>


<style type="text/css">
<!-- 
/* CSS issu des tutoriels  http://css.alsacreations.com  */
body {
margin: 0;
padding: 0;
background: white;
font: 80% verdana, arial, sans-serif;
}
dl, dt, dd, ul, li {
margin: 0;
padding: 0;
list-style-type: none;
}
#menu {
position: absolute;
top: 0;
left: 0;
}
dl#menu {
width: 15em;
}
dl#menu dt {
cursor: pointer;
margin: 2px 0;;
height: 20px;
line-height: 20px;
text-align: center;
font-weight: bold;
border: 1px solid gray;
background: #ccc;
}
dl#menu dd {
border: 1px solid gray;
}
dl#menu li {
text-align: center;
background: #fff;
}
dl#menu li a, dl#menu dt a {
color: #000;
text-decoration: none;
display: block;
border: 0 none;
height: 100%;
}

dl#menu li a:hover, dl#menu dt a:hover {
background: #eee;
}

#mentions {
font-family: verdana, arial, sans-serif;
position: absolute;
bottom : 171px;
left : 261px;
color: #000;
background-color: #ddd;
}
#mentions a {text-decoration: none;
color: #222;
}
#mentions a:hover{text-decoration: underline;
}

-->
</style>
</head>

<body>

<dl id="menu">

		<dt onclick="javascript:montre();"><a href="#">Menu 1</a></dt>
			
		<dt>Menu 2</dt>
			<dd id="sous">
				<ul>
					<li><a href="#">Sous-Menu 2.1</a></li>
					<li><a href="#">Sous-Menu 2.2</a></li>

					<li><a href="#">Sous-Menu 2.3</a></li>
				</ul>
			</dd>	

		<dt onmouseover="javascript:montre('smenu3');" onmouseout="javascript:montresous();">Menu 3</dt>
			<dd id="smenu3" onmouseover="javascript:montre('smenu3');" onmouseout="javascript:montresous();">
				<ul>
					<li><a href="#">Sous-Menu 3.1</a></li>
					<li><a href="#">Sous-Menu 3.1</a></li>

					<li><a href="#">Sous-Menu 3.1</a></li>
					<li><a href="#">Sous-Menu 3.1</a></li>
					<li><a href="#">Sous-Menu 3.1</a></li>
					<li><a href="#">Sous-Menu 3.1</a></li>
				</ul>
			</dd>

		<dt onmouseover="javascript:montre('smenu4');" onmouseout="javascript:montresous();">Menu 4</dt>
			<dd id="smenu4" onmouseover="javascript:montre('smenu4');" onmouseout="javascript:montresous();">
				<ul>
					<li><a href="#">Sous-Menu 4.1</a></li>
					<li><a href="#">Sous-Menu 4.1</a></li>
				</ul>
			</dd>

	
</dl>

<div id="mentions">Raphaël GOETTER<br />
  <a href="http://www.alsacreations.com">Alsacréations</a><br />
<a href="http://css.alsacreations.com/Construction-de-menus-en-CSS/Un-menu-deroulant-en-CSS-et-XHTML-vertical-et-horizontal">Retour / Back</a></div>

</body>
</html>

Modifié par dipdipdow (06 Nov 2006 - 15:07)
dipdipdow a écrit :

En fait j'aimerai qu'une partie soit déjà visible à l'ouverture de la page (exemple partie 2 et ses sous menus), et qu'au survol des autres parties on voit les sous menus relatifs apparaître et la partie qui était visible au départ disparaître. Enfin, j'aimerai que lorsque le bouton sors des zones cliquables, la partie initialement visible réaparaisse.

Smiley eek
Waouh !
Ca en fait beaucoup des souhaits à réaliser !

Concernant ton souhait de vouloir avoir une rubrique d'ouverte par défaut au chargement,
tu as deux façons de procéder : soit dans le fichier .js dans la fonction window.onload, soit dans le code css.
Il te suffit d'y spécifier que la rubrique souhaitée ait par défaut display:block; Smiley cligne
Modifié par Cygnus (31 Oct 2006 - 19:13)
Modérateur
Rebonjour,

Sur un menu vertical, évite les onmouseover/onmouseout ... Quelqu'un qui souffre de problèmes de concentration n'arrivera tout simplement pas à naviguer dans ton menu. D'ailleurs, pour avoir tester, c'est énervant pour tout le monde... Préfère de simples onclick. Smiley cligne

Sans compter que tant que tu ne doubles pas ces onmouseover/onmouseout par des onfocus/onblur, la navigation clavier est impossible... cf ce tuto. Smiley smile
Modifié par koala64 (01 Nov 2006 - 10:20)
Modérateur
Tiens, je t'invite quand même à consulter ce sujet où je propose quelquechose de plus fonctionnel, plus sémantique, plus accessible... enfin plus mieux quoi... Smiley lol
Modifié par koala64 (01 Nov 2006 - 11:39)
Merci pour les conseils Smiley smile

J'aimerai quand même savoir si ce que j'aimerai faire est possible sous I.E. Smiley ohwell

J'ai réussi à avoir l'effet voulu, ça marche parfait sous Firefox, par contre sous I.E il me pose problème. Je vais coller mon nouveau code ci-dessous, vous pouvez tester pour voir de quoi je parle, en fait sous I.E le menu saute d'une partie à l'autre sans avoir pu navigué sur toutes les sous parties.

Comme dit, si vous pouvez tester sur Firefow et sous I.E vous verrez de quoi je parle, mon but avoir ce qui se passe sous Firefox dans I.E Smiley smile

Merci


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test</title>

<script type="text/javascript">
<!--
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
	for (var i = -1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';
		document.getElementById('sous').style.display='none';}
}

function montresous() {
	{document.getElementById('sous').style.display='block';
	document.getElementById('smenu2').style.display='none';
	document.getElementById('smenu3').style.display='none';
	document.getElementById('smenu4').style.display='none';
	document.getElementById('smenu5').style.display='none';}
}

//-->
</script>

<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
	background-color: #B10339;
}

#conteneur {
position: relative;
top: 0px;
margin-left: auto;
margin-right: auto;
height: 466px;
width: 200px;
text-align: left;
z-index: 100;
}

dl, dt, dd, ul, li {
margin: 0;
padding: 0;
list-style-type: none;
}

#menu {
	position: absolute;
	bottom: 0px;
}

#menu dl {
width: 200px;
vertical-align: bottom;
}


#menu dt {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size: 12px;
line-height: 24px;
text-align: right;
font-weight: bold;
border: none;
height: 31px;
width: 200px;
border: #FFFFFF 1px solid;
}


#menu dt a { 
cursor: pointer;
font-size: 12px;
line-height: 24px;
text-align: right;
font-weight: bold;
color: #FFFFFF;
display: block;
text-decoration: none;
height: 31px;
border: #FFFFFF 1px;
background-color:#760E10;
}


#menu dt a:hover {
}


#menu dd {
}


#menu li {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
text-decoration: none;
line-height: 20px;
color: #B10339;
text-decoration: none;
min-height: 1px;
text-align: right;
background-color: #EED771;
BORDER-RIGHT: none;
BORDER-TOP: none;
BORDER-LEFT: none;
BORDER-BOTTOM: #B10339 1px solid;
}


#menu li a{
color: #B10339;
font-size: 11px;
text-decoration: none;
display: block;
border: 0 none;
background-color: #FEF3C3;
line-height: 20px;
height: 100%;
padding-right: 8px;
}


#menu li a:hover {
background-color: #EED771;
}


</style>

</head>

<body>


<div id="conteneur">
<dl id="menu">

		<dt><a href="#">Menu 1</a></dt>
			<dd id="sous">
				<ul>
					<li>Menu 1.1</li>
					<li><a href="#">Menu 1.2</a></li>
					<li><a href="#">Menu 1.3</a></li>
					<li><a href="#">Menu 1.4</a></li>
				</ul>
			</dd>
			
		<dt onMouseOver="javascript:montre('smenu2');" onmouseout="javascript:montresous();"><a href="#">Menu 2</a></dt>
			<dd id="smenu2" onMouseOver="javascript:montre('smenu2');" onmouseout="javascript:montresous();">
				<ul>
					<li><a href="#">Menu 2.1</a></li>
					<li><a href="#">Menu 2.2</a></li>
					<li><a href="#">Menu 2.3</a></li>
					<li><a href="#">Menu 2.4</a></li>
					<li><a href="#">Menu 2.5</a></li>
				</ul>
			</dd>
			
		<dt onMouseOver="javascript:montre('smenu3');" onmouseout="javascript:montresous();"><a href="#">Menu 3</a></dt>
			<dd id="smenu3" onMouseOver="javascript:montre('smenu3');" onmouseout="javascript:montresous();">
				<ul>
					<li><a href="#">Menu 3.1</a></li>
					<li><a href="#">Menu 3.2</a></li>
					<li><a href="#">Menu 3.3</a></li>
					<li><a href="#">Menu 3.4</a></li>
				</ul>
			</dd>
		
		<dt onMouseOver="javascript:montre('smenu4');" onmouseout="javascript:montresous();"><a href="#">Menu 4</a></dt>
			<dd id="smenu4" onMouseOver="javascript:montre('smenu4');" onmouseout="javascript:montresous();">
				<ul>
					<li><a href="#">Menu 4.1</a></li>
					
					<li><a href="#">Menu 4.2</a></li>
					<li><a href="#">Menu 4.3</a></li>
					<li><a href="#">Menu 4.4</a></li>
					<li><a href="#">Menu 4.5</a></li>
					<li><a href="#">Menu 4.6</a></li>
					<li><a href="#">Menu 4.7</a></li>
					<li><a href="#">Menu 4.8</a></li>
					<li><a href="#">Menu 4.9</a></li>
				</ul>
			</dd>
		
		<dt onMouseOver="javascript:montre('smenu5');" onmouseout="javascript:montresous();"><a href="#">Menu 5</a></dt>
			<dd id="smenu5" onMouseOver="javascript:montre('smenu5');" onmouseout="javascript:montresous();">
				<ul>
					<li><a href="#">Menu 5.1</a></li>
					<li><a href="#">Menu 5.2</a></li>
					<li><a href="#">Menu 5.3</a></li>
					<li><a href="#">Menu 5.4</a></li>
					<li><a href="#">Menu 5.5</a></li>
					<li><a href="#">Menu 5.6</a></li>
					<li><a href="#">Menu 5.7</a></li>
				</ul>
			</dd>
			
			<dt><a href="#">Menu 6</a></dt>
			
			
</dl>
</div>




</body>
</html>