Css/javascript/xhtml pour faire menu deplié

jjaco Messages postés 534 Date d'inscription   Statut Membre Dernière intervention   -  
math 2000 Messages postés 2605 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, pour faire un menu qui se déplie au passage de la souris
j'ai crée une feuille de style:css

.conteneur
{
top:10px;
background-color:#ffffff;
position:absolute;
width:860px;
height:725px;
left: 50px;
right: 50px;
bottom: 50px;
}


.entete
{
height: 115px;
width: 860px;
left: 15px;
top: 15px;
right: 15px;
bottom: 15px;
text-align: center;
background-attachment: fixed;
background-color: red;
background-position center;
color: #ffffff;
margin: 0px;
padding: 0px;
border: thick outset #FFFFFF;
}
.gauche
{
float:left;
height:550;
width:150;
}
.menutop
{
float:left;
height: 100;
width:150;
background-color:#cccccc;
border-bottom: solid 2px #ffffff;
}

ul#menu
{
float:left;
height:450px;
overflow:scroll;
background-color:#cccccc;
width: 150px;
margin: 0;
padding: 5;

}
ul#menu ol {
text-align:left;
margin: 0;
padding-left: 20px;
padding-top:10px;
}
ul#menu li,
ul#menu a {
font-family: Comic Sans MS, Arial, MS Serif, Microsoft Sans Serif;
font-size: 10px;
color: #003399;
}
ul#menu li
{
border-bottom: solid 2px #ffffff;
line-height: 20px;
}
ul#menu ol li
{
border-bottom: none;
}
ul#menu ol li:before {
content: "- ";
}
ul#menu a {
text-decoration: none;
outline: none;
}
ul#menu a:hover {
color: #00ccff;
}
ul#menu a.active {
color: #be5028;
}

.corps
{
background-color:#cccccc;
width:707px;
height:550px;
overflow:scroll;
}
.pied
{
width:860;
height:50px;
background-color:#c0c0c0;
}


que je place comme ceci dans head:<link href="style.css" rel="stylesheet" type="text/css">
en dessous toujours dans head, je place le script :
<script type="text/javascript">
/*
Created by: Travis Beckham :: http://travisbeckham.com | http://travisbeckham.com/
version date: 06/02/03 :: If want to use this code, feel free to do so,
but please leave this message intact. (Travis Beckham)
*/
// Node Functions

if(!window.Node){
var Node = {ELEMENT_NODE : 1, TEXT_NODE : 3};
}

function checkNode(node, filter){
return (filter == null || node.nodeType == Node[filter] || node.nodeName.toUpperCase() == filter.toUpperCase());
}

function getChildren(node, filter){
var result = new Array();
var children = node.childNodes;
for(var i = 0; i < children.length; i++){
if(checkNode(children[i], filter)) result[result.length] = children[i];
}
return result;
}

function getChildrenByElement(node){
return getChildren(node, "ELEMENT_NODE");
}

function getFirstChild(node, filter){
var child;
var children = node.childNodes;
for(var i = 0; i < children.length; i++){
child = children[i];
if(checkNode(child, filter)) return child;
}
return null;
}

function getFirstChildByText(node){
return getFirstChild(node, "TEXT_NODE");
}

function getNextSibling(node, filter){
for(var sibling = node.nextSibling; sibling != null; sibling = sibling.nextSibling){
if(checkNode(sibling, filter)) return sibling;
}
return null;
}
function getNextSiblingByElement(node){
return getNextSibling(node, "ELEMENT_NODE");
}

// Menu Functions & Properties

var activeMenu = null;

function showMenu() {
if(activeMenu){
activeMenu.className = "";
getNextSiblingByElement(activeMenu).style.display = "none";
}
if(this == activeMenu){
activeMenu = null;
} else {
this.className = "active";
getNextSiblingByElement(this).style.display = "block";
activeMenu = this;
}
return false;
}

function initMenu(){
var menus, menu, text, a, i;
menus = getChildrenByElement(document.getElementById("menu"));
for(i = 0; i < menus.length; i++){
menu = menus[i];
text = getFirstChildByText(menu);
a = document.createElement("a");
menu.replaceChild(a, text);
a.appendChild(text);
a.href = "#";
a.onmouseover = showMenu;
a.onfocus = function(){this.blur()};
}
}

if(document.createElement) window.onload = initMenu;
</script>

et dans body:....<div class conteneur>...
<ul id="menu">
<li>nouvelle page
<ol>
<li><a href="#">rubrique</a></li>
<li><a href="#">Sub Item 1.2</a></li>
<li><a href="#">Sub Item 1.3</a></li>
<li><a href="#">Sub Item 1.4</a></li>
</ol>
</li>
<li>Menu Item 2
<ol>
<li><a href="#">Sub Item 2.1</a></li>
<li><a href="#">Sub Item 2.2</a></li>
<li><a href="#">Sub Item 2.3</a></li>
</ol>
</li>
<li>Menu Item 3
<ol>
<li><a href="#">Sub Item 3.1</a></li>
<li><a href="#">Sub Item 3.2</a></li>
<li><a href="#">Sub Item 3.3</a></li>
</ol>
</li>
<li>Menu Item 4
<ol>
<li><a href="#">Sub Item 4.1</a></li>
<li><a href="#">Sub Item 4.2</a></li>
<li><a href="#">Sub Item 4.3</a></li>
</ol>
</li>
<li>Menu Item 5
<ol>
<li><a href="#">Sub Item 5.1</a></li>
<li><a href="#">Sub Item 5.2</a></li>
<li><a href="#">Sub Item 5.3</a></li>
</ol>
</li>
</ul>

si je travaille en test sans feuille de style, uniquement dans head <style> ul#menu.../ul <script>....</script>
camarche, les sous-menus s'ouvrent au passage de la souris.
mais comme c'est ici, les menus sont affichés et les sous-menus en listes et sous-listes.
pourquoi et ou est mon errreur?

demain, j'essaierai de remplacer le #menu...div par .menu....class mais je risque de m'embrouiller dans script

un grand merci, c'est pour faire un menu qui se déplie

jjacco
A voir également:

1 réponse

math 2000 Messages postés 2605 Date d'inscription   Statut Membre Dernière intervention   405
 
tu peux faire un menu depliant compatible ie6 sans javascript grâce au css et au if ie
http://bormat2.free.fr/wordpress4/
2