Pages :
Bonjour,

J'ai utilisé le menu vertical du tuto Un menu déroulant en CSS et XHTML (horizontal et vertical)

Mon souhait serait que quand on clic sur un sous menu le menu parent ne se referme pas. Après plusieurs tests je n'y suis pas arrivé. Je ne peux malheureusement pas donner le lien du site car je ne travaille qu'en local puisque j'attends mon hébergement.

Je vous remercie pour vos réponses
Modifié par Yavimaya (04 Sep 2007 - 18:11)
bonjour,

Si tu donners ton code modifier cela serai plus simple car la en aveugle... je dirai utilise une variable Smiley biggol
autant pour moi

voila le code que j'ai modifié pour mon site

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></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';}
}
//-->
</script>


<style type="text/css">
<!--
#Logo {
	position:fixe;
	left:0;
	top:20;
	width:800px;
	height:90px;
	z-index:1;
	margin-right: auto;
	margin-left: auto;
}
#Centre {
	position:relative;
	left:0px;
	top:0px;
	width:800px;
	height:500px;
	z-index:2;
	margin-right: auto;
	margin-left: auto;
	visibility: visible;
}
#Pied_de_page {
	position:fixe;
	left:0;
	top:612;
	width:800px;
	height:24px;
	z-index:3;
	margin-right: auto;
	margin-left: auto;
}
#navigation {
	position:absolute;
	left:0px;
	top:0px;
	width:160px;
	height:500px;
	z-index:5;
	background-color: #9999CC;
	margin-right: auto;
	margin-left: auto;
	visibility: visible;
}
#Contenu {
	position:absolute;
	left:181px;
	top:0px;
	width:619px;
	height:500px;
	z-index:6;
	background-color: F7DEBB;
	margin-right: auto;
	margin-left: auto;
	visibility: visible;
}
.Style4 {font-size: small
}
-->
</style>
<link href="CSS/Feuille-1.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="Logo"><img src="Images/Logo.jpg" width="800" height="90" /></div>
<div id="Centre">

    <dl id="menu" name="menu">
	   <dt onclick="javascript:montre();"><a href="Index.html">Accueil</a></dt>
			
		<dt onclick="javascript:montre('smenu2');">Endene</dt>
			<dd id="smenu2">
				<ul>
					<li><a href="Bio.html">Bio</a></li>
					<li><a href="Gouts.html">Goûts</a></li>
					<li><a href="Palmares.html">Palmarès</a></li>
					<li><a href="Stats.html">Stats</a></li>
				</ul>
			</dd>	

		<dt onclick="javascript:montre('smenu3');">Equipe</dt>

			<dd id="smenu3">
				<ul>
					<li><a href="Club.html">Club</a></li>
					<li><a href="Competitions.html">Compétitions</a></li>
					<li><a href="Calendrier.html">Calendrier</a></li>
					<li><a href="Classements.html">Classements</a></li>
					<li><a href="Equipe_nationale.html">Equipe nationale</a></li>
				</ul>
			</dd>

		<dt onclick="javascript:montre();"><a href="Infos.html">Infos</a></dt>

		<dt onclick="javascript:montre('smenu4');">Goodies</dt>

			<dd id="smenu4">
				<ul>
					<li><a href="Photos.html">Photos</a></li>
					<li><a href="Videos.html">Vidéos</a></li>
					<li><a href="Interviews.html">Interviews</a></li>
					<li><a href="Endene_vu_par.html">Endene vu par ...</a></li>
					<li><a href="Vu_par_Endene.html">... vu par Endene</a></li>
					<li><a href="Questions-reponses.html">Questions / Réponses</a></li>
				</ul>
			</dd>
		<dt onclick="javascript:montre();"><a href="Liens.html">Liens</a></dt>

		<dt onclick="javascript:montre();"><a href="Contact.html">Contact</a></dt>	
  </dl>
  

  <div id="Contenu">Acceuil</div>
</div>
<div id="Pied_de_page">
  <p align="center"><span class="Style4"><strong></strong> © 2007 Tous droits réservés.</span></p>
</div>
</body>
</html>


et voila ma feuille CSS

.Menu_site {
	font-family: Geneva, Arial, Helvetica, sans-serif;
	font-size: large;
	font-style: normal;
	line-height: normal;
	font-weight: bolder;
	color: #FFFFFF;
}
.Sous_menu_site {
	font-family: Geneva, Arial, Helvetica, sans-serif;
	font-size: medium;
	font-style: italic;
	line-height: normal;
	font-weight: normal;
	color: #FFFFFF;
}

body {
margin: 0;
padding: 0;
background: #FFDBA9;
font: 100% verdana, arial, sans-serif;
}
dl, dt, dd, ul, li {
margin: 0;
padding: 0;
list-style-type: none;
}
#menu {
	position: absolute;
	top: 0;
	left: 0px;
	height: 500;
	width: 160;
	visibility: visible;
	z-index: 6;
}
#menu dt {
cursor: pointer;
margin: 2px 0;
height: 20px;
line-height: 20px;
text-align: center;
font-weight: bold;
border: 1px solid gray;
background: #F4BE74;
}
#menu dd {
border: 1px solid gray;
}
#menu li {
text-align: center;
background: #ffdba9;
}
#menu li a, #menu dt a {
color: #000;
text-decoration: none;
display: block;
border: 0 none;
height: 100%;
}
#menu li a:hover, #menu dt a:hover {
background: #F8D588;
}


ne sachant pas exactement de quoi tu a besoin j'ai mis tout mon code, d'un coté j'ai fait que de positionner mes calques et faire le menu pour mon site donc tout doit plus ou moins être intéressant Smiley cligne
Modifié par Yavimaya (01 Nov 2007 - 18:59)
Salut!

Si j'ai bien compris ton problème, au passage de la souris sur ton sous-menu, celui-ci se ferme; il me semble que au lieu de

<dd id="smenu1">
, code qui correspond à ta partie sous-menu,tu devrais mettre:


//...
<dd id="smenu1" onmouseover="javascript:montre('smenu1');" onmouseout="javascript:montre('');">
//Tu dis ici, qu'au survol de ton sous-menu tu montre ce sous-menu, et que tu le caches, lorsque la souris le quitte


J'espère avoir répondu à ton problème, sinon désolé... Smiley ravi

@+!
Modifié par Neomcdn (24 Aug 2007 - 10:54)
En fait c'est le contraire ce que je veux faire. Je viens essayer de reformuler autrement ma demande.

Au début le menu est fermé. Par exemple je veux aller sur la page sous menu 2.1 donc pour cela je clic sur le menu 2 pour qu'il se développe puis clic sur le sous menu 2.1. Quand j'arrive sur la page correspondant mon menu se referme et revient à son état initial.

Ce que j'aurais voulu faire c'est que le menu correspondant au sous menu appelé reste développé le temps que je navigue sur le même menu donc dans mon exemple que le menu 2 reste développé le temps que je suis sur des pages du menu 2.X.

J'espère que j'ai mieux expliqué cette fois.

Sinon par pure curiosité j'ai appliqué ton code et maintenant quand j'affiche la page je ne vois même plus mon menu Smiley eek . J'ai remis comme avant et ça ne change rien. Il doit falloir remettre la variable à zéro mais je ne sais pas comment il faut faire.

Merci quand même de ta proposition
Salut!

J'espère avoir compris, mais je ne suis pas sûr. Si tu veux que au clic sur l'un des sous-menus, tu ouvres une nouvelle page (tu passes de index.htm à questions-reponses.htm), et que le sous-menu reste ouvert sur cette nouvelle page,... là je ne pourrai pas t'aider: est-ce possible? oui sans doute, mais je ne sais pas faire. D'autres pourront sans doute te venir en aide.

Une idée peut-être: passer la valeur de ta page en variable en php et mettre une condition pour afficher un background-color, sur le bon dt.??? C'est peut-être pas clair là. (rapproche toi d'une communauté php dans ce cas).

Par contre, normalement le code que je t'ai donné devrait fonctionné.

J'utilise le survol de la souris et non pas le clic (si tu veux le clic remplace le "onmouseover" par un "onclick") et pense aussi vérifier le nom de tes sous-menus...

@+!
Modifié par Neomcdn (25 Aug 2007 - 11:12)
Neomcdn a écrit :
Salut!

J'espère avoir compris, mais je ne suis pas sûr. Si tu veux que au clic sur l'un des sous-menus, tu ouvres une nouvelle page (tu passes de index.htm à questions-reponses.htm), et que le sous-menu reste ouvert sur cette nouvelle page,... là je ne pourrai pas t'aider: est-ce possible? oui sans doute, mais je ne sais pas faire. D'autres pourront sans doute te venir en aide.


tu as bien compris

Neomcdn a écrit :
Par contre, normalement le code que je t'ai donné devrait fonctionné.

J'utilise le survol de la souris et non pas le clic (si tu veux le clic remplace le "onmouseover" par un "onclick") et pense aussi vérifier le nom de tes sous-menus...

@+!


bah ca n'a pas marché, je vais reessayer de tout re-modifier cet aprem mais je n'y crois pas trop Smiley decu
Modérateur
Salut,

Je pense que ce menu devrait t'intéresser. Smiley cligne

Toutes les instructions JS sont externalisées dans un fichier, la structure du menu est un peu différente et pour avoir un sous-menu ouvert, il suffit d'ajouter la classe CSS "Montre" sur le "ul" de ton choix.
Modifié par koala64 (26 Aug 2007 - 07:25)
merci bien pour le menu mais pourrais tu préciser un peu ton histoire d'instructions JS externalisées dans un fichier car je viens de m’apercevoir que c’est mes instructions JS au début de ma page qui font disparaître le menu quand j’affiche la page dans un navigateur et ca m’arrive que depuis que j’ai mis la partie de code de Neomcdn et même si je l’ai enlevé depuis j’ai toujours le même probleme.

Merci pour la réponse

La partie JS de ma page pour rappel

<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';}
}
//-->
</script>
Modérateur
a écrit :
La partie JS de ma page pour rappel
Il n'y a pas que ça. Tu as aussi des instructions du type :
<dt onclick="javascript:montre();"><a href="Index.html">Accueil</a></dt>
Lorsque je te dis que le code JS est externalisé, c'est qu'il n'y a aucune instruction JS dans la partie XHTML au sein du menu que je te propose, ce qui facilite la maintenance... tout comme c'est le cas lorsque tu mets tes styles dans une feuille de style CSS plutôt qu'en direct dans le XHTML. Par ailleurs, la structure est meilleure (les listes descriptives n'étant pas adaptées) et tu as bien moins de chances d'avoir des conflits avec ce code.

Le tuto d'Alsa' concernant les menus déroulants est maintenant dépassé.
D'accord je vais essayer ce soir

et pour le tuto dépassé, j'avais vu sa date mais je le croyais tjs d'actualité Smiley cligne
Je vais peut etre passer pour un boulet mais j'ai un peu de mal avec les instructions JS et ou les placer

Serait il possible d'avoir un exemple ou une petite explication un peu plus détailler afin que je puisse avoir un début de piste pour mieux comprendre et que je puisse finir le menu

merci d'avance
Modérateur
Il n'y a aucune instruction JS à ajouter.
Tu récupères le script, tu le lies à ton fichier (x)html et tu respectes la structure du menu, c'est tout. Smiley cligne

Après, ça marche tout seul. Smiley smile

<edit>
Il faut aussi que tu ajoutes ceci dans ton code CSS :
.Cache
{
	display: none;
}
.Montre
{
	display: list-item;
}
</edit>
Modifié par koala64 (26 Aug 2007 - 23:01)
me revoilou après une petite soirée de tests infructueux malheureusement Smiley decu

j'ai essayé de faire comme tu m'as dis mais j'ai du raté une étape malheureusement

après avoir tout retapé j'obtiens ca

mon code html

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


<style type="text/css">
<!--
#Logo {
	position:fixe;
	left:0;
	top:20;
	width:800px;
	height:90px;
	z-index:1;
	margin-right: auto;
	margin-left: auto;
}
#Centre {
	position:relative;
	left:0px;
	top:0px;
	width:800px;
	height:500px;
	z-index:2;
	margin-right: auto;
	margin-left: auto;
	visibility: visible;
}
#Pied_de_page {
	position:fixe;
	left:0;
	top:612;
	width:800px;
	height:24px;
	z-index:3;
	margin-right: auto;
	margin-left: auto;
}
#navigation {
	position:absolute;
	left:0px;
	top:0px;
	width:160px;
	height:500px;
	z-index:5;
	background-color: #9999CC;
	margin-right: auto;
	margin-left: auto;
	visibility: visible;
}
#Contenu {
	position:absolute;
	left:181px;
	top:0px;
	width:619px;
	height:500px;
	z-index:6;
	background-color: F7DEBB;
	margin-right: auto;
	margin-left: auto;
	visibility: visible;
}
.Style4 {font-size: small
}
-->
</style>
<link href="CSS/Feuille-1.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="Menu.js"></script>
</head>

<body>
<div id="Logo"><img src="Images/Test logo Endy.jpg" width="800" height="90" /></div>
<div id="Centre">

<ul id="menus">
		<li>Acceuil
		</li>

		<li>Endene
			<ul class="Montre">
				<li><a href="Bio.html">Bio</a></li>
				<li><a href="Gouts.html">Goûts</a></li>
				<li><a href="Palmares.html">Palmarès</a></li>	
				<li><a href="Stats.html">Stats</a></li>

			</ul>
		</li>
		<li>Equipe
			<ul>
				<li><a href="Club.html">Club</a></li>
				<li><a href="Competitions.html">Compétitions</a></li>
				<li><a href="Calendrier.html">Calendrier</a></li>
				<li><a href="Classements.html">Classements</a></li>
				<li><a href="Equipe_nationale.html">Equipe nationale</a></li>
			</ul>
		</li>
		<li>Goodies
			<ul>
				<li><a href="Photos.html">Photos</a></li>
				<li><a href="Videos.html">Vidéos</a></li>
				<li><a href="Interviews.html">Interviews</a></li>
				<li><a href="Endene_vu_par.html">Endene vu par ...</a></li>
				<li><a href="Vu_par_Endene.html">... vu par Endene</a></li>
				<li><a href="Questions-reponses.html">Questions / Réponses</a></li>
			</ul>
		</li>
	</ul>


   <div id="Contenu">Acceuil</div>
</div>
<div id="Pied_de_page">
  <p align="center"><span class="Style4"><strong></strong> &copy; 2007 Tous droits r&eacute;serv&eacute;s.</span></p>
</div>
</body>
</html>


mon code CSS (avec ton edit de rajouté)

.Menu_site {
	font-family: Geneva, Arial, Helvetica, sans-serif;
	font-size: large;
	font-style: normal;
	line-height: normal;
	font-weight: bolder;
	color: #FFFFFF;
}
.Sous_menu_site {
	font-family: Geneva, Arial, Helvetica, sans-serif;
	font-size: medium;
	font-style: italic;
	line-height: normal;
	font-weight: normal;
	color: #FFFFFF;
}

body {
margin: 0;
padding: 0;
background: #FFDBA9;
font: 100% verdana, arial, sans-serif;
}
dl, dt, dd, ul, li {
margin: 0;
padding: 0;
list-style-type: none;
}
#menu {
	position: absolute; /* placement du menu, à modifier selon vos besoins */
	top: 0;
	left: 0px;
	height: 500;
	width: 160;
	visibility: visible;
	z-index: 6;
}
#menu dt {
cursor: pointer;
margin: 2px 0;
height: 20px;
line-height: 20px;
text-align: center;
font-weight: bold;
border: 1px solid gray;
background: #F4BE74; /* Acceuil, Endene, Equipe, Infos, Goodies, Liens, Contact */
}
#menu dd {
border: 1px solid gray;
}
#menu li {
text-align: center;
background: #ffdba9; /* Fond des sous menus (fff -> blanc à l'origine)*/
}
#menu li a, #menu dt a {
color: #000; /* titre menu et sous menu */
text-decoration: none;
display: block;
border: 0 none;
height: 100%;
}
#menu li a:hover, #menu dt a:hover {
background: #F8D588; /* surbrillance sur le menu (eee à l'origine) */
}

.Cache
{
	display: none;
}

.Montre
{
	display: list-item;
}


et enfin mon code JS (je pense que mon problème vient de là)

// JavaScript Document


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';}
}

<dt onclick="javascript:montre();"><a href="Index.html">Accueil</a></dt>
<dt onclick="javascript:montre('smenu2');">Endene</dt>
<dt onclick="javascript:montre('smenu3');">Equipe</dt>
<dt onclick="javascript:montre();"><a href="Infos.html">Infos</a></dt>
<dt onclick="javascript:montre('smenu4');">Goodies</dt>
<dt onclick="javascript:montre();"><a href="Liens.html">Liens</a></dt>
<dt onclick="javascript:montre();"><a href="Contact.html">Contact</a></dt>


j'ai externalisé tout le JS mais maintenant je ne sais plus quoi mettre quand dans mon menu ca revoit directement à une page et non un sous menu (ex : pour envoyer à la page d'acceuil)

j'ai aussi peut etre mal lié mon fichier JS a ma page html

Après j'ai perdu tout la "mise en page" qu'il y avait dans le menu (pb CSS ? pas de compatibilité entre les 2 menus ?)

enfin voila j'avoue que plus ca va plus j'ai du mal deja que je partais pas de bien haut Smiley decu

en tout cas merci bien pour cette aide et j'espere ne pas trop t'agacer avec mes pb Smiley cligne
Modifié par Yavimaya (01 Nov 2007 - 19:00)
Modérateur
Concernant ton fichier JS, il est bien lié mais... tu n'as pas le bon code. Smiley murf

Donc, remplace-le par celui-ci :

http://koalnet.com/divers/menu-alsa-vertical-v2/scriptMenu.js

Et fait-moi un retour ensuite. Smiley cligne

Il se peut que tu aies des problèmes si ta mise en page est hasardeuse. (Je n'ai pas vérifié)
Dans ce cas, tu peux peut-être repartir de la feuille de style d'origine qui se trouve là :

http://koalnet.com/divers/menu-alsa-vertical-v2/styleMenu.css

et l'adapter à tes besoins.
Salut Koala 64!!!

As-tu testé ton menu sous Firefox?

Car pour mois, ça fonctionne sous ie mais pas sous FF!!

Qu'en penses-tu?

Neomcdn
Modérateur
Salut,

Neomcdn a écrit :
As-tu testé ton menu sous Firefox?

oui, bien sûr... Je remets le lien vers la page test. Smiley cligne
Modifié par koala64 (27 Aug 2007 - 14:23)
Toooo!

Hey Bart! Vient voir; y'a Koala qu'arrive à faire fonctionner ton menu sous FF! Smiley ravi

Bon, je ne comprends pas ce qui se passe!

J'essaie avec pleins de menus différents et il y a toujours un grain de sable (soit sous ie soit sous FF). Je croyais que ça pouvait venir d'autres javascript (ouverture popup ou anim flash), mais a priori c'est pas çà.

Je me demande si ça ne pose pas de problème au dessus de 10 sous-menus. A 9, ça fonctionne, à 10, one ne peut plus le sélectionner...

bizarre!!

[EDIT]

Ok, pb entre animations flash et le menu (menu passait en-dessous) : un petit coup en absolute et çà fonctionne mieux!!

Smiley cligne

@+! [/EDIT]
Modifié par Neomcdn (27 Aug 2007 - 17:59)
koala64 a écrit :
Et fait-moi un retour ensuite. Smiley cligne


pas pu tout tester ce soir, je fini demain si pas de pb et te tiens au courant
Modérateur
Salut,

Neomcdn a écrit :
Je me demande si ça ne pose pas de problème au dessus de 10 sous-menus. A 9, ça fonctionne, à 10, one ne peut plus le sélectionner...
Sur l'exemple que je donne, il n'y a aucune limitation quant au nombre de sous-menus. En revanche, c'est le cas sur le tuto effectivement.
Pages :