Salta il menu

[css] Simulare dei pulsanti

Notizia del 12/12/2006

Per questo tutorial sono state usate due piccole gif di 17 pixel di larghezza e 15 di altezza; come si può vedere, i due fiori rappresentati sono l'uno allineato a sinistra e l'altro a destra per meglio creare l'effetto del pulsante premuto:

Due fiori da 17x15 pixel, uno verde e uno arancione per l'effetto OnMouseOver con i CSS

Il codice xhtml usato per il menu è come per l'altro tutorial un normale elenco puntato:

<ul> <li><a href="#">Home</a></li> <li><a href="#">Chi siamo</a></li> <li><a href="#">Progetti</a></li> <li><a href="#">Servizi</a></li> <li><a href="#">Archivio</a></li> <li><a href="#">Contatti</a></li> </ul>

Vediamo il CSS commentato pezzo per pezzo:

* { margin: 0px; padding: 0px; border: 0px; } body { font-family: verdana, arial, helvetica, sans-serif; font-size: 80%; text-align: left; }

Trattandosi di una pagina che non contiene nient'altro che il menu, mi limito a dichiarare i parametri necessari per il font dopo aver azzerato a tutti gli elementi padding, margin e border.

***

ul { width: 150px; list-style: none; }

Unici parametri necessari la larghezza e l'eliminazione del punto elenco

***

ul li { border-bottom: 1px solid #fff; }

Imposto un bordo inferiore minimo a <li> per superare un problema con Internet Explorer che altrimenti distanzierebbe troppo gli elementi a causa del display: block dato ad <a>.

***

ul li a { display: block; height: 20px; color: #006200; background: #aeaeae url(fiore_verde.gif) no-repeat center left; padding-left: 20px; text-decoration: none; font-weight: bold; border-top: 1px solid #cecece; border-right: 1px solid #808080; border-bottom: 1px solid #808080; border-left: 1px solid #cecece; }

La maggior parte della formattazione dev'essere impostata per <a>:

  • display: block; impostando questo valore, il tag <a> normalmente inline, cioé che non costringe quanto viene dopo ad andare a capo e che occupa solo il minimo spazio necessario, diventa un tag blocco, cioé occupa tutto lo spazio a propria disposizione: in questo modo TUTTA la superficie disponibile è attiva (per rendersene conto, è sufficiente passare il mouse sul colore di sfondo lontano dal testo)
  • height: 20px; imposto l'altezza in modo da aumentare la superfice cliccabile; per la misura esatta devo anche tener conto dell'altezza delle immagini che andrò ad usare
  • color: #006200; imposto il colore di sfondo uguale a quello usato per le immagini
  • background: #aeaeae url(fiore_verde.gif) no-repeat center left; imposto il colore di sfondo uguale a quello usato per lo sfondo delle immagini e inserisco il fiore come sfondo del tag a sinistra del testo facendo in modo che non si ripeta (no-repeat)
  • padding-left: 20px; inserisco dello spazio tra il bordo del tag e il testo vero e proprio, in modo da non sovrapporre quest'ultimo all'immagine
  • text-decoration: none; tolgo la sottolineatura dal link: essendo un menu, non ci saranno comunque confusioni
  • font-weight: bold; imposto il grassetto
  • da border-top: 1px solid #cecece; a border-left: 1px solid #808080; per ottenere l'effetto pulsante, formatto i quattro lati del bordo usando in alto e a sinistra una sfumatura più chiara del colore dello sfondo, mentre a destra e in basso uso una [sfumatura più scura

***

ul li a:hover { color: #fff; background: #aeaeae url(fiore_arancione.gif) no-repeat center left; padding-left: 23px; border-top: 1px solid #808080; border-right: 1px solid #cecece; border-bottom: 1px solid #cecece; border-left: 1px solid #808080; }

Per l'effetto "pulsante premuto" vero e proprio modifico i seguenti parametri:

  • color: #fff; cambio il colore del testo per dare maggior risalto alla posizione del mouse
  • background: #aeaeae url(fiore_arancione.gif) no-repeat center left;
  • padding-left: 23px; aumento lo spazio a sinistra del testo per l'effetto "premuto"
  • da border-top: 1px solid #808080; a border-left: 1px solid #808080; per l'hover inverto i colori rispetto a prima: per i due lati che prima erano più scuri userò la tonalità più chiara e viceversa

La somma delle varie modifiche (fiore spostato nell'immagine, maggior spazio tra bordo e testo, inversione dei colori) crea l'impressione di un pulsante premuto e senza usare un solo comando Javascript:

Effetto OnMouseover ottenuto con i CSS anziché con Javascript

Il foglio di stile completo:

body { font-family: verdana, arial, sans-serif; font-size: 80%; text-align: left; } ul { width: 150px; list-style: none; margin: 0px; padding: 0px; } ul li { border-bottom: 1px solid #fff; } ul li a { display: block; height: 20px; color: #006200; background: #aeaeae url(fiore_verde.gif) no-repeat center left; padding-left: 20px; text-decoration: none; font-weight: bold; border-top: 1px solid #cecece; border-right: 1px solid #808080; border-bottom: 1px solid #808080; border-left: 1px solid #cecece; } ul li a:hover { color: #fff; background: #aeaeae url(fiore_arancione.gif) no-repeat center left; padding-left: 23px; border-top: 1px solid #808080; border-right: 1px solid #cecece; border-bottom: 1px solid #cecece; border-left: 1px solid #808080; }

***

Scarica il codice e le immagini che compongono il menu (file zip - 2kb)

Commenti

1 - Scritto da Marco GRAZIA il 01/02/2007 alle 13:35

Ecco cosa succede ad usare ASP :occhi che girano:

Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.

/_private/webasic.vbs, line 868

La pagina è: http://www.rebelia.it/?tutorial+key=installare_ipcop_guida_per_assoluti_principianti

va be che si è principianti :-D

M.

2 - Scritto da reb il 01/02/2007 alle 14:25

mah, piu' che asp e' probabilmente dovuto al fatto che sto facendo da cavia e il blocco e' "sotto stretta osservazione" :)

3 - Scritto da Marco GRAZIA il 01/02/2007 alle 22:04

No, Multiple step, indica che il programma ha tentato più di un accesso simultaneo al database.

E' un problema di lock, ovvero quando il database è usato da un utente, io in quel caso, qualsiasi altro utente lo trova bloccato.

E' un sistema di protezione, per evitare sovrasritture sullo stesso record.

Puoi controllare alla linea 868 di quel file, ma dubito che lo risolvi, ho notato che è un errore che capita spesso con i prodotti Microsoft già dai tempi dell'ASP 3.

4 - Scritto da fabio il 01/02/2007 alle 23:27

Grazie della segnalazione! Quella linea di codice fa parte di una funzione che aggiunge un nuovo record nella tabella delle statistiche... credo cmq di aver risolto :)

Aggiungi il tuo commento

I campi con * sono obbligatori.

Torna a inizio pagina