Pulsanti sfumati in CSS senza usare immagini

11 2010

In questo tutorial vi spiegherò come generare dei bottoni a background sfumato utilizzando il css.

Incominciamo con il dire che purtroppo la bestia nera è sempre IE.
A Redmond gli standard non sono mai piaciuti, e li continuano ad applicare a sighiozzi.

Prima di tutto creiamo il nostro pulsante:

<button class="button orangeButt">Dettagli</button>

Gli ho attribuito due classi distinte per lasciare separati la forma e il colore.

Tutto il resto si fa sul css.
Prima definiamo .button:

.button {
    	display: inline-block; /* opzionale */
    	outline: none;
    	cursor: pointer; /* impostiamo che il cursore diventi mano quando si va sopra il tasto */
    	text-align: center; /* allineiamo il testo al centro */
    	text-decoration: none;  /* senza decorazioni perchè non ci piace :P */
    	font: 14px/100% Arial, Helvetica, sans-serif;  /* definiamo il font */
    	padding: .5em 2em .55em;  /* un pò di padding */
    	text-shadow: 0 1px 1px rgba(0,0,0,.3);  /* attributo css3 per dare un pò di ombra al testo; la "a" di rgba sta per "alfa" con il quale si imposta il livello di trasparenza */
    	-webkit-border-radius: .5em;  /* i bordi impostati per i browser che utilizzano il webkit */
    	-moz-border-radius: .5em;  /* i bordi impostati per mozilla firefox */
    	border-radius: .5em;  /* per tutto il resto (su ie non funziona) */
    	-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.2);  /* un pò di ombra per i browser webkit */
    	-moz-box-shadow: 0 1px 2px rgba(0,0,0,.2);  /* la stessa ombra su firefox */
    	box-shadow: 0 1px 2px rgba(0,0,0,.2);  /* idem per gli altri browser (tranne IE) */
    }

infine definiamo il colore del nostro tasto:

.orangeButt {
    	color: white; /* il colore del testo */
    	border: solid 1px #da7c0c; /* il bordo del colore che vogliamo */
    	background: #f78d1d; /* un background di base */
    	background: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f47a20)); /* Ecco la sfumatura, che parte da "left top" e arriva a "left bottom" "from" il colore "to" l'altro colore  */
    	background: -moz-linear-gradient(top,  #faa51a,  #f47a20); /* stessa cosa per firefox */
    	filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#faa51a', endColorstr='#f47a20'); /* questo codice invece funziona per explorer, anche se richiede il lancio di un ActiveX che di default è settato a true sui IE, ma che potrebbe richiedere la conferma da parte dell'utente */
    }
 
/* poi definiamo il css quando si passa sopra il tasto con il mouse */
.orangeButt:hover {
		background: #faa51a; /* colore più scuro */
		background: -webkit-gradient(linear, left top, left bottom, from(#faa51a), to(#f06015));
		background: -moz-linear-gradient(top,  #faa51a,  #f06015);
		filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#faa51a', endColorstr='#f06015');
	}
/* infine definiamo il css per quando si clicca il tasto */
.orangeButt:active {
		color: #faa51a;
		padding-top:1px;
		background: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#cccccc));
		background: -moz-linear-gradient(top,  #ffffff,  #cccccc);
		filter:  progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffffff', endColorstr='#cccccc');
	}

Questo è il risultato:

Share and Enjoy:
  • Digg
  • del.icio.us
  • Facebook
  • Blogplay
  • Diggita
  • MySpace
  • Technorati

3 comments

  1. Grazie mille! mi piace perchè vai dritto al sodo.
    Senza tanta teoria, ho copiato/incollato e funziona!

  2. Bell’esempio, complimenti.

  3. Stavo proprio cercando una cosa di questo tipo. Grazie.

Leave a Reply