sottomenu stessa altezza di menu con voce attiva evidenziata

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
In un sito ho inserito un menu verticale a tendina. Posizionandosi su una voce del menu principale si apre il sottomenu. Ho due problemi:
1) il sottomenu deve partire dall'inizio della voce del menu principale e non dalla parte centrale
menu.png

2) la voce del menu deve essere evidenziata quando si tratta di quella pagina. Cioè se io sono sulla pagina burro, allora la voce menu "Burro" deve essere evidenziata.

Credo che in entrambi i casi devo agire nel file js, ma avendo una scarsa conoscenza non so dove mettere mano

il codice js è:
Codice:
//SuckerTree Vertical Menu 1.1 (Nov 8th, 06)
//By Dynamic Drive: http://www.dynamicdrive.com/style/

var menuids=["suckertree1"] //Enter id(s) of SuckerTree UL menus, separated by commas

function buildsubmenus(){
for (var i=0; i<menuids.length; i++){
  var ultags=document.getElementById(menuids[i]).getElementsByTagName("ul")
    for (var t=0; t<ultags.length; t++){
    ultags[t].parentNode.getElementsByTagName("a")[0].className="subfolderstyle"
		if (ultags[t].parentNode.parentNode.id==menuids[i]) //if this is a first level submenu
			ultags[t].style.left=ultags[t].parentNode.offsetWidth+"px" //dynamically position first level submenus to be width of main menu item
		else //else if this is a sub level submenu (ul)
		  ultags[t].style.left=ultags[t-1].getElementsByTagName("a")[0].offsetWidth+"px" //position menu to the right of menu item that activated it
    ultags[t].parentNode.onmouseover=function(){
    this.getElementsByTagName("ul")[0].style.display="block"
    }
    ultags[t].parentNode.onmouseout=function(){
    this.getElementsByTagName("ul")[0].style.display="none"
    }
    }
		for (var t=ultags.length-1; t>-1; t--){ //loop through all sub menus again, and use "display:none" to hide menus (to prevent possible page scrollbars
		ultags[t].style.visibility="visible"
		ultags[t].style.display="none"
		}
  }
}

if (window.addEventListener)
window.addEventListener("load", buildsubmenus, false)
else if (window.attachEvent)
window.attachEvent("onload", buildsubmenus)

mentre codice css
Codice:
/*stile font menu */
.suckerdiv {line-height: 250%; font-family: 'Titillium Web', sans-serif; font-weight: bold; text-align: left; font-size:16px; padding-left:50px;}

.suckerdiv ul{margin: 30px 0 0 0; padding: 0; list-style-type: none; width: 200px; /* Width of Menu principale */}
.suckerdiv ul li{position: relative; background: url(pic/bg_prodotti.jpg) no-repeat right top;}

/*menu di secondo livello */
.suckerdiv ul li ul{font-size:14px; position: absolute; width: 120px; background-color:#1b5f82; /*sub menu width*/ top: 0; visibility: hidden;}

/* Stile dei link del menu di secondo livello */
.suckerdiv ul li a{display: block; overflow: auto; /*force hasLayout in IE7 */ color: #FFF; text-decoration: none; padding: 1px 5px; border-bottom: 0;}
.suckerdiv ul li a.active{background: url(pic/prodotti_clic.jpg) repeat right top;}
.suckerdiv ul li a:visited{}
.suckerdiv ul li a:hover{background: url(pic/prodotti_clic.jpg) repeat right top;}

.suckerdiv .subfolderstyle{}

/* Holly Hack for IE \*/
* html .suckerdiv ul li { float: left; height: 1%; }
* html .suckerdiv ul li a { height: 1%; }

codice html
HTML:
			<div class="suckerdiv">
			<h1>I PRODOTTI</h1>
			<ul id="suckertree1">
			   <li><a href="#">Fior di Latte</a>
				  <ul>
					<li><a href="#" class="active">Fior di latte</a></li>
					<li><a href="#">Bocconcini</a></li>
					<li><a href="#">Treccine</a></li>
					<li><a href="#">Ciliegine</a></li>
					<li><a href="#">Nodini</a></li>
				  </ul>			   
			   </li>

			   <li><a href="#">Scamorze</a>
				  <ul>
					<li><a href="#">Scamorza</a></li>
					<li><a href="#">Scamorzina</a></li>
					<li><a href="#">Scam. Affum.</a></li>
				  </ul>			   			   
			   </li>

			  <li><a href="#">Burro</a>
				<ul>
					<li><a href="#">Burro</a></li>
				</ul>
			  </li>		  
			
			</ul>
			</div>
		</div>
 

Allegati

  • menu.jpg
    menu.jpg
    85,3 KB · Visite: 389

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
secondo me puoi risolvere modificando solo il css
per l'altezza prova modificando il top qui
Codice:
.suckerdiv ul li ul{font-size:14px; position: absolute; width: 120px; background-color:#1b5f82; /*sub menu width*/ top: 0; visibility: hidden;}
metti top: -20px; o comunque l'altezza del tag li
 

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
ho risolto l'allineamento del sottomenu con il menu principale agendo sul foglio di stile. Ho azzerato questo margine
HTML:
.suckerdiv ul{margin: 30px 0 0 0; }

agendo su top non ottenevo il risultato.
Ora mi rimane da capire perchè non viene visualizzata la pagina attiva. Penso che bisogna agire sul js dato che eliminando il richiamo, la voce attiva è evidenziata.
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova assegnando la classe active
Codice:
 ultags[t].parentNode.onmouseover = function() {
                    this.getElementsByTagName("a")[0].className = "active";
                    this.getElementsByTagName("ul")[0].style.display = "block"
                }
                ultags[t].parentNode.onmouseout = function() {
                    this.getElementsByTagName("a")[0].className = "";
                    this.getElementsByTagName("ul")[0].style.display = "none"
                }
 
Discussioni simili
Autore Titolo Forum Risposte Data
L mettere un simbolo per capire se è un sottomenu jQuery 2
M sottomenu all hover su voce contattaci jQuery 2
R sottomenu a tendina resta fisso HTML e CSS 2
O Problema Sottomenu HTML e CSS 2
asevenx Gestire posizionamento voci sottomenu che si nascondono HTML e CSS 1
D mostrare nascondere sottomenu Javascript 1
P Effetto a:hover sempre attivo solo se si và su una voce del sottomenu HTML e CSS 1
E [Menu JQuery]: problema click quando il sottomenu si apre sopra un iframe... jQuery 0
S Perchè i sottomenu non si vedono? HTML e CSS 3
M Aggiungere sei sottomenu ad un menu mootools Javascript 0
S Menu e sottomenu client side senza reload della pagina Javascript 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
M Estrarre soltanto i prodotti con stessa descrizione PHP 10
G Invio di più valori con la stessa checkbox PHP 4
S impostare un testo e una img nella stessa riga con jsPDF Javascript 0
M Compilazione automatica campi in input stessa pagina PHP 0
A Raggruppare record con stessa data PHP 13
A 2,4 e 5GHz stessa rete Adsl e Connettività 4
J [PHP] Visualizzare risultato query stessa pagina PHP 3
Tommy03 Due menù nella stessa app Sviluppo app per Android 0
W Come effettuare ripetute chiamate Curl con la stessa connessione autentica [PHP] PHP 0
Domenico_Falco1 Associare una stessa funzione get a due eventi a.click con classi differenti Ajax 6
F [Javascript] Conflitto tra più form nella stessa pagina Javascript 1
M [PHP] Come display data nella stessa pagina PHP 4
U [PHP] Form stessa pagina con qualche complicazione PHP 0
T [Javascript] stessa pagina, stesso script: su un server va, su un altro NO! Javascript 6
MikSkagit [PHP] Risultati a video sulla stessa riga PHP 12
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2
Kolop [HTML] Menu a colonne stessa lunghezza HTML e CSS 7
A [HTML] stessa grandezza campi input safari HTML e CSS 1
S [PHP] Eseguire differenza su dati SQL presenti sulla stessa colonna PHP 1
P [HTML] scrivere il titolo di una pagina nella pagina stessa, si può? HTML e CSS 3
E [PHP] Check tra 2 campi della stessa tabella PHP 14
Daniele450 [Javascript] Linkare ogni sigola voce dello stesso menu ad un div diverso della stessa pagina Javascript 3
M Collegare due NVR nella stessa rete IP Cam e Videosorveglianza 0
L passaggio di valori nella stessa pagina PHP 5
R form html e php nella stessa pagina PHP 4
K richiamare 2 volte stessa funzione Javascript 1
F Immagini stessa altezza e larghezza HTML e CSS 1
R larghezza div rimane sempre la stessa anche aumentando i px HTML e CSS 8
felino Google Maps - Marker con la stessa latitudine e longitudine HTML e CSS 1
F Più chiamate ajax nella stessa pagina Ajax 0
altrove redirect 301 alla stessa pagina con un url rewrite PHP 0
filomeni Due Login con stessa password PHP 1
A [JQUERY] Passare dati stessa finestra (Nyromodal) jQuery 0
mirko.dagata Stessa posizione SERP ma traffico diminuito SEO e Posizionamento 4
P ritagliare immagini della stessa dimensione Webdesign e Grafica 0
S Problema con 2 script nella stessa pagina Javascript 1
F Script php e ajax nella stessa pagina Ajax 1
Elisacau Aprire un link in un div nella stessa pagina!? HTML e CSS 7

Discussioni simili