2015-04-20 13 views
10

Quindi ho questa transizione al passaggio del mouse, che crea un bordo nella parte inferiore dell'elemento su cui si trova il passaggio del mouse. Tutto va bene, ma quando il mouse lascia l'elemento, il bordo semplicemente scompare, mentre io voglio che si "ritragga" di nuovo. CodepenCome fare una transizione CSS "all'indietro"?

HTML:

<div class="object"> 

<p>Object</p> 

</div> 

CSS:

* { 
background-color: #222; 
color: white; 
font-family: sans-serif; 
font-size: 30pt; 
} 

p { 
width: 200px; 
height: 100%; 
margin-top: 70px; 
text-align: center; 
transition: 0.2s border-bottom; 
-webkit-transition: 0.2s border-bottom; 
margin: auto; 
margin-top: 50px; 
} 

p:hover { 
    border-bottom: 5px solid white; 
} 

Come posso fare per fare questo, il più semplice possibile? Grazie 3

risposta

12

Le transizioni funzionano automaticamente in entrambe le direzioni.

Il problema che si verifica è che border-style non è una proprietà che può essere animata in modo che cambi istantaneamente.

Ciò significa che quando si passa il mouse su di esso, diventa solid all'istante e quindi passa il tempo a 5px.

Ma quando lo si individua, diventa none all'istante e non è possibile visualizzare l'animazione della larghezza.

Rendere esplicito lo stato predefinito (non librato) in modo che border-width sia l'unica cosa che cambia quando si passa il mouse su di esso.

Add:

border-bottom: 0px solid white; 

alle regole per p.

+0

Oh, Uhm, imbarazzante. Oh bene, impari qualcosa di nuovo ogni giorno, suppongo. In ogni caso, Grazie; 3 –

+0

Mi ci sono voluti dei graffi per capire cosa stava succedendo lì. – Quentin

0

Aggiungi border-bottom: 0px solid white a p. Css vuole sapere dove tornare a! : D

+0

Non inserire una copia di copia a bassa risoluzione della risposta in alto come propria. – m0meni

+0

Ci scusiamo per questo, ma nel momento in cui ho fatto clic su Aggiungi risposta il primo post non era lì;) –

-1

per la transizione aggiungere una classe animato all'elemento si desidera la transizione

.animate 
{ 
    transition: all .5s; 
    -moz-transition: all .5s; 
    -webkit-transition: all .5s; 
    -o-transition: all .5s; 
    -ms-transition: all .5s; 
} 

Ora, quando si aggiunge questa classe per il vostro elemento farà la transizione sia in hover e librarsi fuori.

+0

Questo non aiuta affatto. Non c'è nulla di speciale nell'avere una classe che applica solo la proprietà di transizione e il codice esistente nella domanda ha già applicato quella proprietà con il resto delle regole per quell'elemento. – Quentin

Problemi correlati