Salut,
Tu peux générer les liens via JS afin que l'utilisateur qui ne dispose pas de ce langage ne se retrouve pas avec des liens inutiles...
Personnellement, je procède ainsi :
->
http://koalnet.com/divers/menu-alsa-vertical/
XHTML
<!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>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<title>Menu vertical Alsacréations (version alpha 0.000001) - koala64</title>
<link rel="stylesheet" type="text/css" href="styleMenu.css" media="screen, projection" />
<script type="text/javascript">//<![CDATA[
// Fonction qui doit être chargée en entête de page xhtml et
// qui élimine l'apparition subite des listes du menu
// au chargement de la page
var CacheRapide = function()
{
document.write('<'+'style type="text/css">');
document.write('@media screen, projection {');
document.write('ul li ul { display: none; }');
document.write('}');
document.write('<'+'/style>');
}
CacheRapide();
//]]></script>
<script type="text/javascript" src="scriptMenu.js"></script>
</head>
<body>
<!--
.oO° Navigation clavier °Oo.
Fx et IE -> shift+tab : lien précédent / tab : lien suivant
Opera -> a : lien précédent / q : lien suivant
-->
<div id="page">
<ul id="menus">
<li>menu1
<ul>
<li><a href="#">lien1</a></li>
<li><a href="#">lien2</a></li>
<li><a href="#">lien3</a></li>
<li><a href="#">lien4</a></li>
</ul>
</li>
<li>menu2
<ul>
<li><a href="#">lien1</a></li>
<li><a href="#">lien2</a></li>
<li><a href="#">lien3</a></li>
</ul>
</li>
<li>menu3
<ul>
<li><a href="#">lien1</a></li>
<li><a href="#">lien2</a></li>
<li><a href="#">lien3</a></li>
<li><a href="#">lien4</a></li>
<li><a href="#">lien5</a></li>
</ul>
</li>
<li>menu4
<ul>
<li><a href="#">lien1</a></li>
<li><a href="#">lien2</a></li>
<li><a href="#">lien3</a></li>
<li><a href="#">lien4</a></li>
</ul>
</li>
</ul>
</div>
</body></html>
CSS
/*
Menu vertical Alsacréations (version alpha 0.000001) - koala64
*/
body
{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 100%;
}
#page
{
position: relative;
width: 100%;
padding: 0;
margin: 0;
}
#menus
{
padding: 0;
margin: 0;
}
#menus *
{
padding: 0;
margin: 0;
list-style-type: none;
}
#menus li
{
display: list-item;
width: 120px;
border: 1px solid #000;
margin-right: 2px;
margin-bottom: 10px;
font-size: .9em;
line-height: 1.3em;
text-align: center;
background-color: #EEE;
}
#menus li ul
{
border-top: 1px solid #000;
}
#menus li ul li
{
clear: both;
width: 120px;
border: 0;
margin: 0;
background-color: #EEE;
text-align: left;
}
#menus li a
{
text-decoration: none;
color: #000;
background-color: #CCC;
display: block;
cursor: pointer;
}
#menus li ul a
{
width: 120px;
height: 1.6em;
line-height: 1.6em;
text-indent: 10px;
background-color: #EEE;
cursor: pointer;
}
#menus li ul a:hover
{
background-color: #58F;
}
/* Classes nécessaires au code Javascript */
.Cache
{
display: none;
}
.Montre
{
display: list-item;
}
Javascript
/*
Menu vertical Alsacréations (version alpha 0.000001) - koala64
*/
var oO =
{
// Test de passage d'un argument
_Test:
function()
{
var iI = arguments.length - 1;
for(iI; iI >= 0; iI--) if(!arguments[iI]) return false;
return true;
},
// Ajout d'une action sur un événement
_Connect:
function(oElem, sEvType, fn, bCapture)
{
oElem.addEventListener ?
oElem.addEventListener(sEvType, fn, bCapture):
oElem.attachEvent ?
oElem.attachEvent('on' + sEvType, fn):
oElem['on' + sEvType] = fn;
},
// Affichage des menus
_Montre:
function()
{
oO._Cache();
var oList = this.parentNode.getElementsByTagName('ul')[0];
oList.className = 'Montre';
this.onclick = oO._Cache;
return false;
},
// Masquage des menus
_Cache:
function()
{
var oMenus = document.getElementById('menus'),
oUl = oMenus.getElementsByTagName('ul'),
iI = oUl.length - 1;
for(iI; iI >= 0; iI--) oUl[iI].className = 'Cache';
this.onclick = oO._Montre;
return false;
},
// Initialisation du menu
_Menu:
function()
{
oO._Cache();
var oMenus = document.getElementById('menus'),
oItem = oMenus.getElementsByTagName('li'),
iI = oItem.length - 1;
for(iI; iI >= 0; iI--)
{
if(oItem[iI].parentNode.getAttribute('id') == 'menus')
{
var oA = document.createElement('a'),
sTxtLi = oItem[iI].firstChild.nodeValue,
oTxtA = document.createTextNode(sTxtLi);
oA.setAttribute('href', '#');
oA.appendChild(oTxtA);
oItem[iI].replaceChild(oA, oItem[iI].firstChild);
oA.onclick = oO._Montre;
}
}
}
};
// Test des méthodes du script et lancement si c'est bon...
oO._Test(document.getElementById, document.getElementsByTagName, document.createElement, document.createTextNode) ?
oO._Connect(window, 'load', oO._Menu, false):
false;
Modifié par koala64 (01 Nov 2006 - 11:25)