Creazione Sottomenu con funzione HOVER

di il
11 risposte

Creazione Sottomenu con funzione HOVER

Buonasera,
sono nuovo del forum.
Ho un problema con il CSS per fare in modo che al passaggio del mouse si visualizzino le voci del sottomenu.

Ecco html
<nav>
		<div id="menu">
			<div id="menu ul">
				<ul>
					<li><a href="#">HOME</a>
						<ul> <!-- Lista annidata: voci del sotto-menu -->
							<li><a href="#">Submenu 1</a></li>
							<li><a href="#">Submenu 2</a></li>
						</ul>
					</li>	
					<li><a href="#">MAGLIE PALERMO</a>
						<ul> <!-- Lista annidata: voci del sotto-menu -->
							<li><a href="#">Submenu 1</a></li>
						</ul>
					</li>
					<li><a href="#">MEMORABILIA</a>
						<ul> <!-- Lista annidata: voci del sotto-menu -->
							<li><a href="#">Submenu 1</a></li>
						</ul>
				 	</li>
					<li><a href="#">FOTO STADIO</a>
						<ul> <!-- Lista annidata: voci del sotto-menu -->
							<li><a href="#">Submenu 1</a></li>
						</ul>
					</li>	
					<li><a href="#">CORINI COLLECTION</a>
						<ul> <!-- Lista annidata: voci del sotto-menu -->
							<li><a href="#">Submenu 1</a></li>
						</ul>
					</li>
					<li><a href="#">CONTATTI</a>
						<ul> <!-- Lista annidata: voci del sotto-menu -->
							<li><a href="#">Submenu 1</a></li>
						</ul>
					</li>
				</ul>
			</div>
		</div>
		</nav>
La prova la voglio fare con la voce SUBMENU 1

ecco il css:
#menu{
	width:100%;
	height:60px;
	margin-top:240px;
	background-color:#c5ad39;
	clear:both;/* Impongo che non si affianchi al div superiore */
	border-top: solid 1px;
	border-bottom:solid 1px;
	position:absolute;
}
#menu ul {
	width:100%; /* Dimensioni della barra del menu */
	padding:5px 10px;
	margin-top:15px;
	display:inline-block;
	font-weight: bold;
	list-style-type:none; /* Stile della lista */
	position:absolute;
}
#menu li {
display:inline-block;
}
#menu a {
color:#000; /* Colore del testo */
text-align:center; /* Testo allineato al centro */
text-decoration:none; /* Nessuna decorazione */
background:#c5ad39; /* Colore dello sfondo */
padding:15px 50px; /* Distanza tra le singole voci */ 
}
#menu a:hover {
background:#000; /* Colore dello sfondo */
color: #f7e1e4
}
#menu ul ul {
display:none;
}
#menu ul li:hover ul {
padding:0px;
display:inline-flex;
position:absolute;
margin-top:30px;
}

Il mio problema è che le voci del sottomenu mi vengono visualizzate in orizzontale. Cioè..la voce Submenu1 sotto HOME ma la voce SUBMENU2 mi viene visualizzata accanto la voce SUBMENU1.

Come gliela metto sotto?

11 Risposte

  • Re: Creazione Sottomenu con funzione HOVER

    Guarda che se hai le ultime versioni di, almeno, tre browser: Chrome, Firefox e Internet Explorer, installate sul tuo computer, non esce proprio come dici tu il risultato finale.
    - Su Internet Explorer esce come dici tu.
    - Su Chrome e Firefox, anche la voce Submenu1 viene visualizzata sotto le voci successive del menu' principale. In pratica le voci dei Submenu' cascano sulle voci successive del menu' principale, spostandosi di una casella del menu'.

    Su Internet Explorer questo non accade perche' rispetta molte piu' regole HTML5 dettate dal W3C, mentre Chrome e Firefox le rispettano ma a modo loro, dovresti quindi aggiustare anche questo problema.
  • Re: Creazione Sottomenu con funzione HOVER

    Finalmente leggo del codice ben indentato, bravo.
    Unico appunto, puoi migliorarlo ancora di piu', ad esempio:

    il primo div che hai inserito nel codice HTML, <div id="menu"> ti serve per qualcosa in particolare ?
    Perche' lo hai gia' inserito all'interno del tag <nav> che gia' di per se' e' un contenitore.

    Quindi se togli quel div, e nav lo modifichi in questa maniera: <nav id="menu"> il risultato finale non cambia, ma hai risparmiato un paio di righe di codice, ed hai reso tutto il codice ancora piu' leggibile.
  • Re: Creazione Sottomenu con funzione HOVER

    Grazie,
    ho da poco concluso un corso base di Html CSS e quindi ho tutto molto fresco.
    Essendo base mi mancano degli aspetti che sono venuto qui a chiedervi.
    Provvedo a fare come hai detto tu.
    Ho provato ad aprire la pagina con EDGE e i submenù me li fa vedere sotto la voce HOME del menù ma SUBMENU2 affianco al SUBMENU1 e io invece voglio che il sub2 vada sotto il sub1.
    Se invece apro la pagina con IE Firefox e chrome i sub menù mi si vanno a posizionare sopra la seconda voce del menù e questo non va bene.
    aiutami!!!
  • Re: Creazione Sottomenu con funzione HOVER

    Ok, allora sempre riprendendo il codice HTML, puoi tranquillamente eliminare tutti i div e lasciare solo il Tag <nav>, unico realmente necessario per realizzare un menu' come quello che vuoi fare tu.

    In HTML5 il Tag <nav> e' stato implementato proprio per sostituire totalmente l'uso dei div che possono, invece, essere utilizzati per altri scopi ben precisi.

    Quindi il primo passo da fare, cambiare il codice HTML eliminando i div e lasciando tutto il resto uguale. Ovviamente devi variare il nav come ti avevo indicato io con un precedente post.

    Vedrai che confrontando l'output a video del solo codice HTML anche cosi, il risultato finale sara' uguale... poi dopo realizziamo il CSS
  • Re: Creazione Sottomenu con funzione HOVER

    Ciao,
    eccoti il codice completo in HTML con il suggerimento di togliere il div menu ul
    <!doctype html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>La Maglia Rosanero - Alessandro Vitale Palermo Collection</title> 
    	<meta name="viewport" content="width=device-width, initial-scale=1.0">
    	<meta name="description" content="La Collezione di maglie del Palermo di Alessandro Vitale dal 2000 ad oggi">
    	<meta name="Keyword" content="Alessandro Vitale,Palermo Calcio, #siamoaquile, Maglie da Calcio Palermo">
    	<meta name="author" content="Alessandro Vitale">
    	<link rel="stylesheet" type="text/css" href="style.css">		
    </head>
    <body>
    	<div id= "container">
    		<header>
    			<div id="testata">
    				<div id="logo">
    					<img src= "logo ok@1x.jpg" alt="LOGO LA MAGLIA ROSANERO">
    				</div>
    				<div id="siamoaquile">
    					<img src= "siamoaquile.png" alt="HASHTAGSIAMOAQUILE">
    				</div>
    				<div id="social"> 
    					<img src="youtube.png" alt="Canale Youtube La Maglia Rosanero">
    					<img src="facebook.png" alt="Pagina Facebook La Maglia Rosanero">
    					<img src="instagram.png" alt="Pagina Instagram La Maglia Rosanero">
    				</div>
    			</div>
    		</header>
    		<nav id="menu">
    				<ul>
    					<li><a href="#">HOME</a></li>	
    					<li><a href="#">MAGLIE PALERMO</a>
    						<ul> <!-- Lista annidata: voci del sotto-menu -->
    							<li><a href="#">2000 - 2001 Serie C</a></li>
    							<li><a href="#">2001 - 2002 Serie B</a></li>
    						</ul>
    					</li>
    					<li><a href="#">MEMORABILIA</a>
    						<ul> <!-- Lista annidata: voci del sotto-menu -->
    							<li><a href="#">Submenu 1</a></li>
    						</ul>
    				 	</li>
    					<li><a href="#">FOTO STADIO</a>
    						<ul> <!-- Lista annidata: voci del sotto-menu -->
    							<li><a href="#">Submenu 1</a></li>
    						</ul>
    					</li>	
    					<li><a href="#">CORINI COLLECTION</a>
    						<ul> <!-- Lista annidata: voci del sotto-menu -->
    							<li><a href="#">Submenu 1</a></li>
    						</ul>
    					</li>
    					<li><a href="#">CONTATTI</a>
    						<ul> <!-- Lista annidata: voci del sotto-menu -->
    							<li><a href="#">Submenu 1</a></li>
    						</ul>
    					</li>
    				</ul>
    		</nav>
    		<div id="presentazione">
    			<h2>..:: BENVENUTI IN LA MAGLIA ROSANERO.COM ::..</h2>
    			<p>Questo sito web nasce con il fine ultimo di accomunare tre tra le mie più grandi passioni della mia vita.<br>
    Il Palermo Calcio, le maglie da collezione match worn indossate dai calciatori, le foto scattate allo stadio!<br> 
    La mia collezione è formata da maglie del Palermo dal 2000 ad oggi e da una sezione interamente dedicata al nostro capitano <i>"ad honorem"</i> EUGENIO CORINI.<br> Comprende anche una sezione di Memorabilia dove conservo dei gadgets sul Palermo, dai ritagli di giornale a videocassette, DVD, un polsino firmato da Corini e Toni e tante altre perle di storia Rosanero.<br>
    Mi interesso alle foto sportive dal 2003 e le ho raggruppate nell'archivio fotografico consultabile in questo sito web. La sezione Foto Stadio comprende anche  un' inedita sottosezione con tutte le emozioni vissute in quella magica giornata che è stata il 29/05/2004 con foto e video da me stesso prodotti. I soggetti delle mie foto sono per lo più le tifoserie organizzate come Warriors, Ultras, Brigate, BVS, UCN e anche momenti di puro calcio come le azioni svolte in campo e gli allenamenti pre-partita con le contestuali coreografie all'ingresso dei giocatori in campo.
    Mi piace condividere la mia passione per il Palermo con chiunque per questo ho deciso di raccontare la storia del Palermo Calcio e di aprire un un BLOG dove pubblico i miei articoli e le notizie sul Palermo Calcio.<br> E' presente anche una pagina dove raccolgo tutte le testimonianze di giornali e TV che parlano di me, del mio sito e della mia collezione di maglie.</p>
    		</div>
    	</div>
    		
    </body>
    </html>
    
    mentre il codice css che al momento ho e non credo mi dia errori è questo:
    *{
    	font-family:verdana, "sans serif";
    	padding: 0px;
    	margin: 0px;
    }
    body{
    	background-color:#f7e1e4;
    	margin:0;
    	padding:0;
    }
    /* contenitore generale */
    #container{
    	width:1400px;
    	height:auto;
    	margin:5px auto;
    	display:block;
    }
    /* Header*/
    #testata{
    	width:100%;
    	height:auto;
    }
    #logo{
    	width:auto;
    	height:auto;
    	margin-left:10px;
    	margin-top:30px;
    	float:left;
    }
    #logo img{
    	width:120%;
    }
    #social{
    	width:300px;
    	height:auto;
    	margin-top:40px;
    	margin-left: 600px;
    	float:right;
    	}
    #social img{
    	width:20%;
        float:right;
    }
    #menu{
    	width:100%;
    	height:60px;
    	background-color:#c5ad39;
    	clear:both;/* Impongo che non si affianchi al div superiore */
    	border: solid 1px;
    	
    }
    #menu ul {
    	width:100%; /* Dimensioni della barra del menu */
    	padding:5px 10px;
    	display:inline-block;
    	font-weight: bold;
    	list-style-type:none; /* Stile della lista */
    }
    #menu li {
    	float:left;
    	position:relative;
    	text-align: center;
    	list-style: none;
    }
    #menu a {
    	color:#000; /* Colore del testo */
    	text-align:center;  /*Testo allineato al centro */
    	text-decoration:none; /* Nessuna decorazione */
    	background:#c5ad39; /* Colore dello sfondo */
    	padding:15px 50px;  /*Distanza tra le singole voci */ 
    }
    #menu li a {
    	background-color: #c5ad39;
    	color: #000;
    	padding: 15px 50px;
    	text-decoration: none;
    	display: block;
    	
    }
    #menu a:hover {
    	background:#000; /* Colore dello sfondo */
    	color: #f7e1e4;
    }
    #menu ul ul {
    	position:absolute;
    	display:none;
    }
    #menu ul li:hover ul {
    	font-size: 14px;
    	display:block;
    	position:absolute;
    	margin:0px;
    	padding-left:0px;
    }
    #siamoaquile{
    	float:right;
    	padding-top: 80px;
    	}
    #presentazione{
    	box-sizing: border-box;
    	border: solid #000000 1px;
    	text-align: center;
    	line-height: 35px;
    	padding: 5px 10px;
    	background-image: url(magliapalermoback.png);
    	background-repeat: no-repeat;
        background-position: top;
    }
    
    Ora dovrei creare intanto un foglio di stile per le mediaquery...
    e poi occuparmi di arricchire la home, creare la pagine interne del sito.
  • Re: Creazione Sottomenu con funzione HOVER

    Ma bravo veramente, sei riuscito da solo a risolvere il problema.

    Ps.
    Hai visto che non sempre serve dichiarare <div> se non strettamente necessari ?
    La semplicita' e l'ordine, quando si scrive codice pulito, come il tuo, fanno di uno sviluppatore un vero Wizz kid... negli anno '80 i ragazzi geni venivano definiti in questa maniera.
  • Re: Creazione Sottomenu con funzione HOVER

    Grazie...gli incoraggiamenti, da parte di chi ne sa più ti me, sono il primo successo.
    Credo che, avendo risolto il problema ormai questo topic vada chiuso.
    Provvederò con le mediaquery e se dovessi aver problemi farò altro post.
    Grazie
  • Re: Creazione Sottomenu con funzione HOVER

    Così tanto per provare a mettere online la bozza:
    http://www.la-maglia-rosanero.com/prova
    come ti pare?
    Il box sotto con ULTIME MAGLIE INSERITE è troppo spartano.. come mi consigli di abbellire il layout?
  • Re: Creazione Sottomenu con funzione HOVER

    Fai sempre un passo per volta... risolviti i singoli problemi partendo da uno, poi successivamente passi al secondo... e cosi via fino al completamento del lavoro.

    1) problema: attualmente il tuo layout va' oltre lo schermo in orizzontale, e fa' attivare la barra di scorrimento orizzontale del browser. Considera uno schermo standard per notebook di 1366x768. La tua pagina supera abbondantemente i 1366. Correggi con un CSS sul body.

    Poi dopo potrai pensare ai successivi abbellimenti
  • Re: Creazione Sottomenu con funzione HOVER

    Ho ridotto a 1350 ma non l'ho messo sul body ma nel div contenitore del sito… è corretto o devo farlo nel body?
  • Re: Creazione Sottomenu con funzione HOVER

    Se dai ora un'occhiata alla pagina online mettendo 1350px il body, il container, che ha width 100%, si è spostato tutto a sinistra mentre lo vorrei centrato. Ho messo Margin auto ma nulla.
    e poi correi che l'immagine back del body fosse centrata come il container e non si spostasse se riduco la finestra del browser.
    ecco il codice css
    body{
    	width:1350px;
    	background-color:#f7e1e4;
    	background-image: url(magliapalermoback.png);
    	background-repeat: no-repeat;
            background-position: top fixed;
    }
    /* contenitore generale */
    #container{
    	width:100%;
    	height:auto;
    	margin:auto;
    	display:block;
    }
Devi accedere o registrarti per scrivere nel forum
11 risposte