Effetto dissolvenza su Hover Link?


134

su molti siti, come ad esempio http://www.clearleft.com , noterai che quando i collegamenti vengono posizionati sopra, si dissolveranno in un colore diverso rispetto al passaggio immediato, l'azione predefinita.

Suppongo che JavaScript sia usato per creare questo effetto, qualcuno sa come?


1
Grazie. Ora capisco come creare collegamenti hover, è solo che sto cercando di capire come creare un effetto più fluido per i miei collegamenti hover.
Miles Henrichs,

Risposte:


327

Al giorno d'oggi le persone usano solo le transizioni CSS3 perché è molto più facile che scherzare con JS , il supporto del browser è ragionevolmente buono ed è semplicemente estetico, quindi non importa se non funziona.

Qualcosa del genere fa il lavoro:

a {
  color:blue;
  /* First we need to help some browsers along for this to work.
     Just because a vendor prefix is there, doesn't mean it will
     work in a browser made by that vendor either, it's just for
     future-proofing purposes I guess. */
  -o-transition:.5s;
  -ms-transition:.5s;
  -moz-transition:.5s;
  -webkit-transition:.5s;
  /* ...and now for the proper property */
  transition:.5s;
}
a:hover { color:red; }

Puoi anche trasferire specifiche proprietà CSS con differenti tempi e funzioni di allentamento separando ogni dichiarazione con una virgola, in questo modo:

a {
  color:blue; background:white;
  -o-transition:color .2s ease-out, background 1s ease-in;
  -ms-transition:color .2s ease-out, background 1s ease-in;
  -moz-transition:color .2s ease-out, background 1s ease-in;
  -webkit-transition:color .2s ease-out, background 1s ease-in;
  /* ...and now override with proper CSS property */
  transition:color .2s ease-out, background 1s ease-in;
}
a:hover { color:red; background:yellow; }

Demo qui


@AndreiCristof: Fortunatamente funziona in IE10 ! Neanche un prefisso del fornitore richiesto (che è strano).
Marcel,

Ho provato entrambi e spero di aver trovato la ragione corretta per cui il modo CSS non è fluido e fluido come il modo jQuery. Per favore correggimi se sbaglio.
Q Master

Sei forte! Ben spiegato, mi ha aiutato molto vedendolo.
plast1K,

Il mio test è con un'immagine, non un collegamento.
Felipe,

@FelipeMicaroniLalli meglio per pubblicare una domanda, immagino, sembra sicuramente un problema di sintassi.
Marcel,

9

So nella domanda che affermi "Suppongo che JavaScript sia usato per creare questo effetto" ma si può usare anche CSS, un esempio è sotto.

CSS

.fancy-link {
   color: #333333;
   text-decoration: none;
   transition: color 0.3s linear;
   -webkit-transition: color 0.3s linear;
   -moz-transition: color 0.3s linear;
}

.fancy-link:hover {
   color: #F44336;
}

HTML

<a class="fancy-link" href="#">My Link</a>

Ed ecco un JSFIDDLE per il codice sopra!


Marcel in una delle risposte sottolinea che puoi "trasferire più proprietà CSS" e puoi anche usare "tutto" per effettuare l'effetto con tutti i tuoi stili: passa il mouse come di seguito.

CSS

.fancy-link {
   color: #333333;
   text-decoration: none;
   transition: all 0.3s linear;
   -webkit-transition: all 0.3s linear;
   -moz-transition: all 0.3s linear;
}

.fancy-link:hover {
   color: #F44336;
   padding-left: 10px;
}

HTML

<a class="fancy-link" href="#">My Link</a>

Ed ecco un JSFIDDLE per l'esempio "tutto"!


6

Puoi farlo con JQueryUI:

$('a').mouseenter(function(){
  $(this).animate({
    color: '#ff0000'
  }, 1000);
}).mouseout(function(){
  $(this).animate({
    color: '#000000'
  }, 1000);
});

http://jsfiddle.net/dWCbk/


non hai bisogno di jqueryui per questo, solo jquery
Juan,

6
@Juan No, jQuery può solo animare "singoli valori numerici" che i colori non sono (vedi api.jquery.com/animate/#animation-properties ). Ma in realtà non hai bisogno dell'intera libreria jQueryUI, ma solo del plugin jQuery.Color, che sembra essere incorporato in jQueryUI.
Niclas Sahlin,

@Niclas Sahlin. Ho trovato il tuo violino alla ricerca di transizioni CSS. La tua transizione JQuery-UI è molto più fluida, sono sicuro che gli utenti lo noteranno.
RubyRube,

1
Esistono soluzioni con CSS, che è molto più semplice da implementare
mhenkel,

2

Prova questo nel tuo CSS:

.a {
    transition: color 0.3s ease-in-out;
}
.a {
    color:turquoise;
}
.a:hover {
    color: #454545;
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.