2013-09-28 2 views
3

J'ai un blog http://fraldasdamaria.blogspot.pt/ et je voudrais mettre les sous-menus en mode rollover. Je peux faire fonctionner correctement le sous-menu; mais quand je mets la condition débordement: caché dans le sous-menu, le sous-menu disparaît. Quelqu'un peut-il m'aider s'il-vous-plaît?CSS Dropdown Problèmes de débordement du menu

Le code CSS est:

`#menuWrapper { 
width:100%; /* Ancho del menú */ 
height:35px; /* Altura da barra principal */ 
padding-left:15px; 
background:#1F151E; /* Color de fondo */ 
border-radius:20px; /* Bordes redondeados de la barra principal */ 
} 
.menu { 
padding:0; 
margin:0; 
list-style:none; 
height:35px; 
position:relative; 
z-index:5; 
font-family:"Lucida Sans Unicode", "Trebuchet Unicode MS", "Lucida Grande",sans-serif; 
} 
.menu li a:hover{background:#2580a2; color:#fff; /* Cor do Separador principal ao passar cursor */ 
transition: background 0.5s linear 0s; 
} 
.menu li.top {display:block; float:left;} 
.menu li a.top_link { 
display:block; 
float:left; 
height:35px; 
line-height:34px; 
color:#FFFFFF; 
text-decoration:none; 
font-family:"Lucida Sans Unicode", "Trebuchet Unicode MS", "Lucida Grande",sans-serif; 
font-size:13px; /* Tamaño de la fuente */ 
font-weight:none; 
padding:0 0 0 12px; 
cursor:pointer; 
} 
.menu li a.top_link span { 
float:left; 
display:block; 
padding:0 24px 0 12px; 
height:35px; 
} 
.menu li a.top_link span.down { 
float:left; 
display:block; 
padding:0 24px 0 12px; 
height:35px; 
} 
.menu li a.top_link:hover, .menu li:hover > a.top_link {color:#fff; } 
.menu li:hover {position:relative; z-index:2;} 
.menu ul, 
.menu li:hover ul ul, 
.menu li:hover ul li:hover ul ul, 
.menu li:hover ul li:hover ul li:hover ul ul, 
.menu li:hover ul li:hover ul li:hover ul li:hover ul ul 
{position:absolute; left:-9999px; top:-9999px; width:0; height:0; margin:0; padding:10px 5px 10px 10px; list-style:none;} 
.menu li:hover ul.sub { 
left:0; 
top:35px; 
background:#1F151E; /* Color de fondo del submenú */ 
padding:3px; 
white-space:nowrap; 
width:200px; /* Largura do submenu */ 
height:auto; 
max-height:900px; 
z-index:100; 
font-size:12px; /* Tamanho fonte submenu */ 
border-radius: 0px 0px 20px 20px; /* Bordes redondeados del submenú */ 
transition-property: max-height; 
transition: max-height 2s ease; 

} 
.menu li:hover ul.sub li { 
display:block; 
height:36px; /* Altura de cada linha do submenu */ 
position:relative; 
float:left; 
width:200px; 
font-weight:9px; 
} 
.menu li:hover ul.sub li a{ 
display:block; 
line-height:30px; 
text-indent:5px; 
color:#FFFFFF; 
text-decoration:none; 
padding:4px 0px 4px 8px; /* Margem interna de cada linha do submenu */ 
border-radius: 0px 0px 20px 20px; /* Bordes redondeados del submenú */ 
} 
.menu li ul.sub li a.fly { 
/* Color de fondo del submenú */ 
background:#1F151E url(https://lh4.googleusercontent.com/_dsEG33PDaHw/TZ0rcSPpqlI/AAAAAAAABSc/RseHiYluzAM/arrow_over.gif) 185px 10px no-repeat;} 
.menu li:hover, .menu li:hover ul.sub li a:hover { 
background:#2580a2; /* Color de fondo al pasar el cursor */ 
transition: background 0.5s linear 0s; 
color:#FFFFFF; 
border-radius: 0px 0px 20px 20px; 
text-shadow: 3px 3px #1F151E; 
} 
.menu li:hover ul.sub li a.fly:hover, .menu li:hover ul li:hover > a.fly { 
/* Color de fondo al pasar el cursor */ 
background:#2580a2 url(https://lh4.googleusercontent.com/_dsEG33PDaHw/TZ0rcSPpqlI/AAAAAAAABSc/RseHiYluzAM/arrow_over.gif) 185px 10px no-repeat; color:#fff;} 
.menu li:hover ul li:hover ul, 
.menu li:hover ul li:hover ul li:hover ul, 
.menu li:hover ul li:hover ul li:hover ul li:hover ul, 
.menu li:hover ul li:hover ul li:hover ul li:hover ul li:hover ul { 
left:200px; 
top:0px; 
background: #1F151E; /* Color de fondo del submenú */ 
padding:3px; 
white-space:nowrap; 
width:200px; /* Largura do subsubmenu */ 
z-index:4; 
height:auto; 
max-height:900px; 
overflow:hidden; 
border-radius: 0px 0px 20px 20px; /* Bordes redondeados del subsubmenú */ 
transition-property: max-height; 
transition: max-height 2s ease; 
} 

Répondre

0

C'est parce que votre sous-menu (#crosscol ul) a width:200px défini lors mousehovered et si vous appliquez overflow:hidden - tout le reste de ce 200px est censé être caché.

Je vois aussi que vous utilisez la très ancienne méthode des menus déroulants en utilisant left: -9999px, simplement un affichage: block/none peut être utilisé pour n'importe quel niveau de dropdowns imbriqués.

EDIT Voici un exemple de liste déroulante utilisant display: block/none et qui est assez simple.

http://jsfiddle.net/shekhardesigner/KhFzh/