Non è così, lo si può verificare subito inserendo tutto il codice in una pagina html:
Così non funziona perchè prima di tutto nascondo gli elementi al primo livello della lista con:codice:<style type="text/css"> ul { list-style:none; display:inline; } ul li { display:none; } ul li:hover { display:block; } </style> <ul class="menu"> [*]1 [*]2 [*] 3 <ul> [*]3.1 [*]3.2 [/list] [*]4[/list]
ul li { display:none;}
mentre semmai dovrei nascondere il secondo livello, così:
ul.menu li ul { display:none;}
ma anche quando ho nascosto il secondo livello, non posso farlo riapparire con un semplice css, in quanto i selettori di stato (:hover, :focus, :active ecc..) il css li applica solo agli elementi interessati allo stato dichiarato (in questo caso gli elementi al primo livello della lista:
ul.menu li:hover) e non ad altri elementi.
Per questo i menu dinamici hanno sempre codice javascript.
Se la lista fosse costruita staticamente in html mi sarebbe facile attribuire delle classi agli elementi di secondo livello e creare l'effetto rollover, ma siccome la lista viene costruita dinamicamente, non posso aggiungere classi e non conosco il numero degli elementi della lista (che possono essere aggiunti o tolti dinamicamente con Joomla) quindi tutto si complica perchè l'unico dato certo è la classe della lista principale.