2008-10-24 19 views
5

Da molti anni uno standard GUI sono le barre dei menu delle applicazioni con i menu che spuntano, se si fa clic o si passa sopra una voce nella barra dei menu. Alcuni siti web implementano anche questa funzione, ma stanno usando Javascript, per quanto posso vedere. Per diversi motivi, Javascript può essere un problema, quindi la domanda: è possibile implementare senza Javascript, usando solo HTML e CSS?Come posso creare un menu in HTML senza usare Javascript?

risposta

12

Ho già fatto qualcosa del genere, ed è un trucco ottenuto posizionando gli elementi del menu nei tag di ancoraggio, con i sottomenu nelle div nascoste DENTRO quelle etichette di ancoraggio. Il trucco CSS consiste nel far apparire il div interno durante l'evento a: hover.

Sembra qualcosa di simile:

<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> 

tua situazione potrebbe essere diversa ...

EDIT: Internet Explorer 6 e inferiori non supportano il: hover pseudo-classe su altri elementi oltre A. più browser 'moderni', si accetta di essere in grado di utilizzare questo trucco con LI, TD, DIV, SPAN e la maggior parte dei tag.

+0

Grazie per questo grande aiuto e anche menzionare l'IE6. Poiché uso Linux, non testerei nemmeno per IE6. O dovrei interrompere il sito per IE6 di proposito, per mantenere le persone motivate a passare a un browser moderno? ;-) – Mnementh

+0

Nella mia esperienza, è meglio evitare di rompere qualsiasi browser quando si progetta un'applicazione web per il consumo di massa –

1

È possibile utilizzare la pseudoclass: passa il mouse per ottenere un effetto di passaggio del mouse.

a:link { 
color: blue; 
} 

a:hover { 
    color: red; 
} 

posso dare un più ampio esempio, ma non in questo momento (necessità di ottenere i bambini dal dentista).

+1

Aspetta, aspetta ... fammi raccontare questa storia. Avevi un appuntamento da dentista per bambini imminente, i bambini in cappotti per quel gelido autunnale di fine ottobre, e, con le chiavi in ​​mano, ha deciso "Aspetta, meglio controllare Stack Overflow prima di andare ... potrebbe esserci una domanda CSS a cui potrei rispondere !" Questo mi diverte ... –

+0

@Yadyn: lo so, è ridicolo. ... Che cosa mai è successo a mandare i bambini senza cappotto per rinforzarli ...? – Shog9

6

Dai un'occhiata allo CSS Menu Maker.

+0

Wow ... Ho cercato qualcosa esattamente come questo. Ottimo post :). – Abbas

+0

Sito molto interessante ...aggiunto a Delicious thx –

+0

Interessante ... Ho guardato questo: http://www.cssmenumaker.com/builder/menu_info.php?menu=007# in IE6 e non ha funzionato, nonostante il fatto che la barra laterale sostiene la compatibilità con IE6. Compratore stai attento. – mmacaulay

2

considerare l'utilizzo di metodi CSS come backup per quando JavaScript non è disponibile. JavaScript può * fornire un'esperienza utente migliore per i menu a discesa perché è possibile aggiungere alcuni fattori di ritardo per interrompere i menu che scompaiono immediatamente se il mouse lascia brevemente la propria area al passaggio del mouse. I menu Pure-CSS a volte possono essere un po 'complicati da usare, specialmente se i target hover sono piccoli.

*: ovviamente, non tutti gli script di menu in realtà si preoccupano di fare questo ...

1

C'è anche Eric Meyer s' Articolo originale su pure CSS menus.

Ci sono sicuramente molto più robusti e moderni che vengono portati là fuori ora citati da altri, ma ho pensato di parlarne per i posteri. :)

Problemi correlati