2016-05-28 16 views
8

Desidero evitare alcuni degli effetti di transizione sull'elemento (ad esempio: opacity). Dovrei usare opacity 0s, perché questo dovrebbe essere il valore predefinito o in altre parole la transizione non avrà alcun effetto su questo. Ma non sta funzionando in questo modo. Questo è quello che ho provato:La transizione CSS 0s (zero secondi) non funziona?

div { 
 
    width: 100px; 
 
    height: 100px; 
 
    opacity: 0.5; 
 
    background: red; 
 
    -webkit-transition: all 2s, opacity 0s; 
 
    transition: all 2s, opacity 0s; 
 
} 
 

 
div:hover { 
 
    width: 300px; 
 
    opacity: 1; 
 
} 
 
<div></div>

div { 
 
    width: 100px; 
 
    height: 100px; 
 
    opacity: 0.5; 
 
    background: red; 
 
    -webkit-transition: all 2s, opacity 0.1s; 
 
    transition: all 2s, opacity 0.1s; 
 
} 
 

 
div:hover { 
 
    width: 300px; 
 
    opacity: 1; 
 
} 
 
<div></div>

Tuttavia, se 0s della opacity cambiato in 0.1s, funzionerà (con una durata di 0,1 secondi), c'è un modo per "disabilitare" l'animazione in qualche altro modo, forse, quindi funzionerà senza nemmeno un piccolo valore come 0.1s?

+0

Grazie Juhana (ho dimenticato un soprannome) per aggiungere uno snippet. Ho seguito il trucco e ho fatto lo stesso con un altro codice, solo per mostrare la differenza di '0s' e' 0.1s' – cathe

+1

Usando 'all' come' 'transition-property' non è molto efficiente; ogni volta che è possibile, si dovrebbe usare la proprietà/i/i cui si desidera effettuare la transizione. Nel caso del tuo esempio sopra, sarebbe semplicemente 'width'. – Shaggy

+0

Domanda molto interessante @cathe e comportamento strano perché la specifica dice questo - * Se una proprietà viene specificata più volte nel valore di 'transition-property' (sia da solo, tramite una scorciatoia che lo contiene, o tramite il 'tutto 'valore), quindi la transizione che inizia utilizza la funzione duration, delay e timing nell'indice corrispondente all'ultimo elemento nel valore di' transition-property 'che richiede l'animazione di quella proprietà. *. Hai provato questo in più browser? Il comportamento è lo stesso? – Harry

risposta

2

Ecco una soluzione per questo

transition: all 2s, opacity 1ms;

Come 0s non è il tempo valido per questo (non so il motivo per cui questo). e 1ms è un tempo molto piccolo probabilità di 0s per occhio umano.

E per il problema corrente è possibile utilizzare anche transition: width 2s che è applicabile solo per width.

Problemi correlati