Foros del Web » Programando para Internet » Javascript » Frameworks JS »

menu desplegable

Estas en el tema de menu desplegable en el foro de Frameworks JS en Foros del Web. hola a todos.. pues tengo el siguiente codigo: HTML Código HTML: <div id= "menu" > <ul id= "ulMenu" > <li> Link1 </li> <li> Link2 </li> ...
  #1 (permalink)  
Antiguo 11/02/2010, 20:34
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 2 meses
Puntos: 0
Pregunta menu desplegable

hola a todos..
pues tengo el siguiente codigo:
HTML

Código HTML:
<div id="menu">
<ul id="ulMenu">
    <li>Link1</li>
    <li>Link2</li>
    <li>Link3</li>
    <li>Galeria
        <ul class="submenu">
            <li>Video</li>
            <li>Imagenes</li>
        </ul>
    </li>
</ul>
</div> <!-- fin de #menu--> 
CSS


Código HTML:
#menu {

background: #000; 
height:30px; 
width: 500px; 
margin: 0 auto; 
padding-left:70px; 
}

#ulMenu { 
margin: 0px auto;
padding-top:0px; 
list-style:none; 
}
#ulMenu li { 
float:left; 
}

#ulMenu li{ 
display:block; 
padding:7px 10px; 
text-decoration:none; 
color:#CCCCCC; 
font-weight:bold; 
cursor: pointer;
position:relative;
}

#ulMenu li:hover { 
color:#FFFFFF; 
}

/* Submenu */
#ulMenu ul.submenu {
margin-left:0px; 
margin-top:0px;
padding: 0px; 
border:1px solid #000000; 
position:absolute; 
left:0;
top:30px;
list-style:none; 
background-color:#333333;
}

#ulMenu ul.submenu li { 
display: block;
float:none; 
left: 0px;
text-align: left;
background-image:none; 
border-top:1px solid #999999; 
border-bottom:1px solid #999999; 
width:100px;
}
Código HTML:
<script language="javascript" src="js/jquery-1.3.min.js"></script>
<script type="text/javascript">
function mainmenu(){
// Oculto los submenus
$(" #ulMenu ul ").css({display: "none"});
// Defino que submenus deben estar visibles cuando se pasa el mouse por encima
$(" #ulMenu li").hover(function(){
    $(this).find('ul:first:hidden').css({visibility: "visible",display: "none"}).slideDown(400);
    },function(){
        $(this).find('ul:first').slideUp(400);
    });
}
$(document).ready(function(){
    mainmenu();
});
</script> 
con Firefox y Opera no hay problema, IE7 al salir del submenu hace un efecto medio raroo.....pero el problema que tengo es que no despliega el submenu con safari 3.2

Como le hago para que funcione en Safari.

Muchas gracias de antemano....

saludos!!
  #2 (permalink)  
Antiguo 12/02/2010, 00:38
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Tema movido desde Ajax

No se ve interacción con el servidor, así que no se trata de un tema Ajax... y evidentemente es un problema de la librería.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 12/02/2010, 07:40
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 15 años, 1 mes
Puntos: 101
Respuesta: menu desplegable

Yo aprendí que en jquery es mejor no mezclar css y metodos jquery cuando se trata de mostrar / ocultar:

Entonces, cambiaría esto:
$("#ulMenu ul ").css({display: "none"});

por esto:
$("#ulMenu ul ").hide();

Y luego también modificaría esta línea:
$(this).find('ul:first:hidden').css({visibility: "visible",display: "none"}).slideDown(400);
  #4 (permalink)  
Antiguo 12/02/2010, 08:43
Avatar de juaniquillo
Colaborador
 
Fecha de Ingreso: noviembre-2005
Ubicación: San Juan, Puerto Rico
Mensajes: 5.745
Antigüedad: 18 años, 5 meses
Puntos: 281
Respuesta: menu desplegable

Ese problema me ha pasado varias veces con este tipo de menu, aunque no esté usando javascript. neesitas darle un ancho al ul interior, por ejemplo:

Código css:
Ver original
  1. #ulMenu ul.submenu {
  2.    margin-left:0px;
  3.    margin-top:0px;
  4.    padding: 0px;
  5.    border:1px solid #000000;
  6.    position:absolute;
  7.    left:0;
  8.    top:30px;
  9.    list-style:none;
  10.    background-color:#333333;
  11.    width:120px; /* <----------- aqui aplico el ancho */
  12. }

También apoyo lo que dice mayid. También prefiero usar clases como addClass(), removeClass() y toggleClass() para cambiar la apariencia usando clases que ya existan en tu hoja css. Para menos código yo lo hice así:

Código javascript:
Ver original
  1. $(document).ready(function(){
  2.     //oculto los submenus
  3.     $(" #ulMenu ul ").hide();
  4.    
  5.     //hago el hover
  6.     $(" #ulMenu li").hover(function(){
  7.         $(this).find('ul:first:hidden').slideDown(400);
  8.     },function(){
  9.         $(this).find('ul:first').slideUp(400);
  10.     });
  11.    
  12. });
__________________
Por fin.. tengo algo parecido a un blog
Y por lo visto ya estoy escribiendo...

Etiquetas: desplegable, jquery
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:40.