Indice del forum Olimpo Informatico
I Forum di Zeus News
Leggi la newsletter gratuita - Attiva il Menu compatto
 
 FAQFAQ   CercaCerca   Lista utentiLista utenti   GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo   Messaggi privatiMessaggi privati   Log inLog in 

    Newsletter RSS Facebook Twitter Contatti Ricerca
* [tutorial] menu con effetto onmouseover senza javascript
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet
Precedente :: Successivo  
Autore Messaggio
rebelia
Dio maturo
Dio maturo


Registrato: 17/07/03 09:22
Messaggi: 7987

MessaggioInviato: 22 Ott 2005 01:54    Oggetto: * [tutorial] menu con effetto onmouseover senza javascript Rispondi citando

costruiamo un menu con effetto onmouseover, usando solo il css

il codice e' il seguente:

Codice:

<html>

<head>
<title>Menu</title>
<style>
#menu {
   font-family: verdana, arial, sans-serif;
   }
   
   #menu ul {
      width: 200px;
      list-style: none;
      margin: 0px;
      padding: 0px;
      background: #FF8C1B;
      border: 3px outset #c0c0c0;
      }
      
      #menu li {
         border: 1px solid #FF8C1B;
         }
      
      #menu a {
         color: #000;
         display: block;
         height: 24px;
         background: #FF8C1B url(butterup.gif) no-repeat center left;
         padding-left: 32px;
         padding-right: 32px;
         text-decoration: none;
         font-weight: bold;
         }
         
         #menu a:hover {
            color: #FF8C1B;
            background: #000 url(butterdown.gif) no-repeat center right;
            text-align: right;
            }
</style>
</head>

<body>
<div id="menu">

<ul>
<li><a href="#">home</a></li>
<li><a href="#">chi sono</a></li>
<li><a href="#">cosa faccio</a></li>
<li><a href="#">tempo libero</a></li>
<li><a href="#">contatti</a></li>
</ul>

</div>
</body>
</html>


le immagini usate sono queste:





nota: la pagina non contiene nient'altro che il menu percio' ho optato per un css in linea per semplicita', ma ricordo che e' sempre molto meglio optare per un css esterno linkato alle pagine soprattutto per comodita d'aggiornamento

commento del css:

Codice:

#menu {
   font-family: verdana, arial, sans-serif;
   }


dichiaro una font; di solito lo faccio nel body, avrei potuto farlo nel link, ho optato per farlo nel div

Codice:
   
   #menu ul {
      width: 200px;
      list-style: none;
      margin: 0px;
      padding: 0px;
      background: #FF8C1B;
      border: 3px outset #c0c0c0;
      }



- determino la larghezza totale del mio menu
- tolgo il pallino ai punti elenco tramite list-style: none;
- tolgo il margine e tolgo il padding: cio' allo scopo di avere la certezza che il pallino non si visualizzi in nessun browser (il semplice list-style infatti non e' sufficiente)
- do uno sfondo arancione
- do un bordo a rilievo

Codice:
      
      #menu li {
         border: 1px solid #FF8C1B;
         }


- do un bordino di un pixel dello stesso colore dello sfondo per sopperire ad un baco di ff che altrimenti aggiungerebbe troppo spazio tra un punto elenco e l'altro; non so per quale motivo, ma con border: 0px non si ottiene lo stesso effetto (ricordo che la lista e' il tag giusto nel quale inserire un menu)

Codice:
      
      #menu a {
         color: #000;
         display: block;
         height: 24px;
         background: #FF8C1B url(butterup.gif) no-repeat center left;
         padding-left: 32px;
         padding-right: 32px;
         text-decoration: none;
         font-weight: bold;
         }


la formattazione piu' corposa, vediamola un punto alla volta:
- color #000: dichiaro di volere un testo di colore nero per i link
- display block: il tag a e' un tag inline, trasformandolo in tag blocco occupo tutto lo spazio del punto elenco ed attivo il link anche nello spazio non direttamente coperto dal testo
- height 24px: e' la misura delle immagini che andro' ad usare; per avere la certezza che siano correttamente visualizzate, do l'altezza ad a
- do un colore di sfondo uguale al colore di sfondo dell'immagine e dichiaro di volere un'immagine da usare come sfondo, da non ripetere e da posizionare al centro nel lato sinistro
- lascio uno spazio a sinistra pari alla larghezza dell'immagine piu' un paio di pixel per evitare l'effetto appiccicaticcio
- idem a destra perche' la seconda immagine comparira' da quel lato
- text-decoration none: serve per togliere la sottolineatura di default dal link
- uso il grassetto

l'uso di a anziche' di a:link fa si che i parametri impostati valgano per tutti gli stati di a

Codice:
      
         #menu a:hover {
            color: #FF8C1B;
            background: #000 url(butterdown.gif) no-repeat center right;
            text-align: right;
            }

modifico alcuni stati di a:hover:
- cambio il colore del testo dal nero iniziale all'arancio usato per lo sfondo di a
- cambio il colore di sfondo dall'arancio di prima al nero ed inserisco un'immagine da visualizzare stavolta al centro sul lato destro
- decido di allineare il testo a destra

et voila': un menu crossbrowsing con tutti i crismi dell'accessibilita' e con effetto onmouseover che restera' funzionante anche se il navigatore ha disabilitato ja*ascr*pt (ricordo che onmouseover e' un gestore di eventi di ja*ascr*pt e come tale disattivabile come tutti gli altri scr*pt)

con un po' di fantasia, e' possibile ottenere menu ben piu' elaborati e gradevoli di quello proposto Smile
Top
Profilo Invia messaggio privato HomePage
kkk2003
Dio minore
Dio minore


Registrato: 11/08/05 07:15
Messaggi: 863
Residenza: Mosca - Russia

MessaggioInviato: 27 Ott 2005 08:40    Oggetto: Rispondi citando

Bello, grazie di questi preziosi aiuti!

E... se volessimo creare un sottomenu' a comparsa? Ad esempio... quando il mouse va su "cosa faccio", si apre un sottomenu', ed il resto va ad abbassarsi, tipo
cosa faccio
la mattina
il pomeriggio
la sera
la notte
tempo libero
....

E' una cosa complicata?
Top
Profilo Invia messaggio privato HomePage Yahoo
rebelia
Dio maturo
Dio maturo


Registrato: 17/07/03 09:22
Messaggi: 7987

MessaggioInviato: 27 Ott 2005 13:48    Oggetto: Rispondi citando

kkk2003 ha scritto:
Bello, grazie di questi preziosi aiuti!

E... se volessimo creare un sottomenu' a comparsa? Ad esempio... quando il mouse va su "cosa faccio", si apre un sottomenu', ed il resto va ad abbassarsi, tipo
cosa faccio
la mattina
il pomeriggio
la sera
la notte
tempo libero
....

E' una cosa complicata?


mh.. no, qualcosa ti trovo Smile
Top
Profilo Invia messaggio privato HomePage
rebelia
Dio maturo
Dio maturo


Registrato: 17/07/03 09:22
Messaggi: 7987

MessaggioInviato: 27 Ott 2005 23:44    Oggetto: Rispondi citando

mi sa che con i soli css non riesci a fare quel che vorresti; ti serve obbligatoriamente uno script lato client o lato server, sorry Sad
Top
Profilo Invia messaggio privato HomePage
kkk2003
Dio minore
Dio minore


Registrato: 11/08/05 07:15
Messaggi: 863
Residenza: Mosca - Russia

MessaggioInviato: 28 Ott 2005 16:20    Oggetto: Rispondi citando

fa niente, era solo un'idea, e se fattibile con css, era un altro utile tutorial!!
Top
Profilo Invia messaggio privato HomePage Yahoo
juzo kun
Dio maturo
Dio maturo


Registrato: 19/04/04 09:32
Messaggi: 1853
Residenza: tra la tastiera e la sedia

MessaggioInviato: 29 Ott 2005 21:26    Oggetto: Rispondi citando

Qualcosa del genere esiste. Peccato che come al solito Internet Explorer non collabori.

Cià
JK
Top
Profilo Invia messaggio privato HomePage
rebelia
Dio maturo
Dio maturo


Registrato: 17/07/03 09:22
Messaggi: 7987

MessaggioInviato: 29 Ott 2005 21:30    Oggetto: Rispondi citando

juzo kun ha scritto:
Qualcosa del genere esiste. Peccato che come al solito Internet Explorer non collabori.

Cià
JK


fiigo! Shocked

edit: e pure taggato giusto! Drool

ri-edit: in effetti bastava pensarci; ho fatto una prova e ci si riesce facilmente con li:hover... che ie non supporta Basta Toilet
Top
Profilo Invia messaggio privato HomePage
rebelia
Dio maturo
Dio maturo


Registrato: 17/07/03 09:22
Messaggi: 7987

MessaggioInviato: 13 Nov 2005 22:37    Oggetto: Rispondi citando

riuppo questo thread, per qualche correzione, su segnalazione di una nuova amica del forum Smile

le inesattezze del lavoro sono due:

la prima e' che il menu non e' completamente accessibile, perche' ho usato misure assolute anziche' in percentuale per la larghezza, la seconda e' che non ho usato un contrasto di colore sufficiente e questo l'ho verificato usando il link segnalato da questa nuova amica del forum; ho sottoposto il css ed il risultato e' stato il seguente:

Citazione:

#menu ul

avvertenza:

* Colore principale: Non specificato
* Colore di sfondo: #FF8C1B


corretto: quando si specifica un colore per il testo, e' opportuno specificare anche un colore di sfondo

Citazione:

#menu a

La differenza di luminosità tra i due colori è sufficiente. Il valore di soglia è 125, e il risultato tra il colore principale ed il colore di sfondo è 161.

La differenza di colore tra i due colori non è sufficiente. Il valore di soglia è 500 e il risultato della differenza tra il colore principale ed il colore di sfondo è 422.

Mentre la differenza tra i colori non è conforme ai valori specificati dal W3C, è conforme ai valori utilizzati da Hewlett Packard. Hewlett Packard raccomanda un limite di differenza di colore di 400.

avvertenza:

* Colore principale: #000
* Colore di sfondo: #FF8C1B url(butterup.gif) no-repeat center left

#menu a:hover

La differenza di luminosità tra i due colori è sufficiente. Il valore di soglia è 125, e il risultato tra il colore principale ed il colore di sfondo è 161.

La differenza di colore tra i due colori non è sufficiente. Il valore di soglia è 500 e il risultato della differenza tra il colore principale ed il colore di sfondo è 422.

Mentre la differenza tra i colori non è conforme ai valori specificati dal W3C, è conforme ai valori utilizzati da Hewlett Packard. Hewlett Packard raccomanda un limite di differenza di colore di 400.

avvertenza:

* Colore principale: #FF8C1B
* Colore di sfondo: #000 url(butterdown.gif) no-repeat center right



anche qua e' corretto; per un controllo diretto del contrasto, vi ripropongo un link a cui fa capo anche la pagina segnalata sopra e dove potete inserire le due tinte da voi scelte per verificare in un attimo se i colori usati sono conformi; il link era stato citato in questa discussione

per riparare a questi due piccoli problemi vi sara' sufficiente - riutilizzando il codice proposto - dare misure in percentuale alla larghezza ed usare colori con un maggior contrasto Smile
Top
Profilo Invia messaggio privato HomePage
vathek
Dio maturo
Dio maturo


Registrato: 06/09/05 16:09
Messaggi: 1559
Residenza: Roma

MessaggioInviato: 13 Nov 2005 22:41    Oggetto: Rispondi citando

[OT]
e con questo stai a quota 5500... Wink Wink
[/OT]
Top
Profilo Invia messaggio privato HomePage
rebelia
Dio maturo
Dio maturo


Registrato: 17/07/03 09:22
Messaggi: 7987

MessaggioInviato: 13 Nov 2005 22:46    Oggetto: Rispondi citando

Vathek ha scritto:
[OT]
e con questo stai a quota 5500... Wink Wink
[/OT]


Razz
Top
Profilo Invia messaggio privato HomePage
vathek
Dio maturo
Dio maturo


Registrato: 06/09/05 16:09
Messaggi: 1559
Residenza: Roma

MessaggioInviato: 13 Nov 2005 22:54    Oggetto: Rispondi citando

Ti s'è incantata la linguetta??? Razz Wink Wink Wink
Top
Profilo Invia messaggio privato HomePage
rebelia
Dio maturo
Dio maturo


Registrato: 17/07/03 09:22
Messaggi: 7987

MessaggioInviato: 13 Nov 2005 23:24    Oggetto: Rispondi

Vathek ha scritto:
Ti s'è incantata la linguetta??? Razz Wink Wink Wink


no mi si e' incantata la connessione Wink
(basta ot o il gran capo ci fulmina Mr. Green )
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Linguaggi per Internet Tutti i fusi orari sono GMT + 2 ore
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi