2008-10-24 30 views
5

Desde hace muchos años, un estándar de GUI son las barras de menú de las aplicaciones con menús emergentes, si hace clic o desplaza una entrada en la barra de menús. Algunos sitios web implementan esta característica también, pero están usando Javascript, hasta donde puedo ver. Por diferentes razones, Javascript puede ser un problema, entonces la pregunta: ¿Es posible implementarlo sin Javascript, solo usando HTML y CSS?¿Cómo puedo crear un menú en HTML sin usar Javascript?

Respuesta

12

He hecho algo así antes, y es un truco quitado colocando los elementos del menú en etiquetas de ancla, con los submenús en divs ocultos DENTRO de esas etiquetas de anclaje. El truco de CSS es hacer que el div interno aparezca durante el evento a: hover.

Parece algo así como:

<style> 
    A DIV { display: none; } 
    A:hover DIV { display: block; } 
</style> 
<a href="blah.htm"> 
    Top Level Menu Text 
    <div><ul> 
     <li><a href="sub1.htm">Sub Item 1</a></li> 
     <li><a href="sub2.htm">Sub Item 2</a></li> 
     <li><a href="sub3.htm">Sub Item 3</a></li> 
    </ul></div> 
</a> 

Su kilometraje puede variar ...

EDIT: Internet Explorer 6 e inferiores no se admite el: hover pseudo-clase de otros elementos además A. En navegadores más 'modernos', se acepta poder usar este truco con LI, TD, DIV, SPAN y la mayoría de las etiquetas.

+0

Gracias por esta gran ayuda e incluso mencionar el IE6. Como utilizo Linux, ni siquiera probaría IE6. ¿O debería romper el sitio para IE6 a propósito, para mantener a las personas motivadas para cambiar a un navegador moderno? ;-) – Mnementh

+0

En mi experiencia, es mejor evitar romper cualquier navegador cuando se está diseñando una aplicación web para consumo masivo –

1

Puede utilizar la pseudoclass: pase el mouse para obtener un efecto de desplazamiento.

a:link { 
color: blue; 
} 

a:hover { 
    color: red; 
} 

puedo dar un ejemplo más extenso, pero no en este momento (necesidad de llevar a los niños al dentista).

+1

Espera, espera ... déjame entender esta historia. Tuviste una cita con un dentista para niños inminente, los niños con abrigos para ese frío otoñal de finales de octubre, y, con las llaves en mano, decidieron: "Espera, es mejor que revise Stack Overflow antes de irnos ... podría haber una pregunta de CSS que podría responder ! " Esto me divierte ... –

+0

@Yadyn: lo sé, es ridículo. ... ¿Qué pasó con enviar a los niños sin abrigos para endurecerlos ...? – Shog9

6

Eche un vistazo a CSS Menu Maker.

+0

Guau ... He estado buscando algo como esto. Buena publicación :). – Abbas

+0

Sitio muy bueno ...agregado a Delicious thx –

+0

Interesante ... Miré este: http://www.cssmenumaker.com/builder/menu_info.php?menu=007# en IE6 y no funcionó, a pesar del hecho de que la barra lateral dice que es compatible con IE6. El comprador tenga cuidado. – mmacaulay

2

considerar el uso de los métodos de CSS como una copia de seguridad para cuando JavaScript no está disponible. JavaScript puede * proporcionar una mejor experiencia de usuario para los menús desplegables porque puede agregar algunos factores de retardo para detener los menús que desaparecen inmediatamente si el mouse abandona brevemente su área de desplazamiento. Los menús Pure-CSS a veces pueden ser un poco difíciles de usar, especialmente si los objetivos de desplazamiento son pequeños.

*: Por supuesto, no todas las secuencias de comandos de menú en realidad se molestan en hacer esto ...

1

También hay Eric Meyer 's artículo original en pure CSS menus.

Seguramente habrá otras versiones más robustas y modernas que otros mencionaron, pero pensé que lo mencionaría para la posteridad. :)

Cuestiones relacionadas