Bene, il modo più SAREBBE sarebbe utilizzare qualcosa come SASS e scrivere un mixin, quindi usarlo invece di copiare il codice incollato ovunque. Un altro suggerimento che farò è di evitare l'uso di all
, e invece di enumerare le proprietà che desideri animate tramite la transizione lineare. Anche se questo potrebbe essere più prolisso, sono disposto a scommettere che sarà molto più performante, specialmente se tu metti nello stile dell'elemento qualcosa come lo box-shadow
.
Così, mentre il tuo modo avrebbe funzionato, mi sento come le transizioni più unico che hai, il più prezioso questa formulazione diventa:
element {
transition-duration: 2s;
transition-property: all, background, transform;
transition-timing-function: linear, cubic-bezier(0.4, 0.25, 0.14, 1.5), cubic-bezier(0.4, 0.25, 0.14, 1.5);
}
Naturalmente, ho raccomandato enumerare le proprietà, al fine di evitare le animazioni costosi e non richiesti . In questo caso, qualcosa di simile ha più senso:
element {
transition-duration: 2s;
transition-property: height, background, transform, width;
transition-timing-function: linear, cubic-bezier(0.4, 0.25, 0.14, 1.5), cubic-bezier(0.4, 0.25, 0.14,1.5), linear;
}
Edit: come detto da @BoltClock, mi sono sbagliato su tutto sotto di questo testo in grassetto, quindi per favore non tenerne conto. Gli argomenti separati da virgola vengono nuovamente applicati all'ordine in cui sono stati originariamente specificati, né la prima né l'ultima ripetizione per ulteriori valori transition-property
.Continuo a pensare che quello che ho detto di non usare all
sia un consiglio importante per le prestazioni e l'ambito futuro a prova di effetti!
prendere atto di come ho ordinato gli argomenti: se ci sono più argomenti per transition-property
di transition-timing-function
, il tutte le proprietà aggiuntivi imposterà il valore prima elencato per transition-property
come il loro default. Quindi, prima inserisci un valore linear
(predefinito), quindi enumera tutte le funzioni di temporizzazione univoche per far corrispondere la proprietà corretta, quindi tutte le proprietà modificate fino alla fine (ad esempio width
) verranno automaticamente impostate su linear
! Pertanto, anche se aggiungi altre 5 proprietà alla fine dell'elenco delle proprietà, solo background
e transform
avranno le loro uniche funzioni di cronometraggio cubic-bezier
. Ad esempio:
element {
transition-duration: 2s;
transition-property: height, background, transform, width, oneProp, twoProp, threeProp, etcProp;
transition-timing-function: linear, cubic-bezier(0.4, 0.25, 0.14, 1.5), cubic-bezier(0.4, 0.25, 0.14,1.5);
}
Tutto nella precedente utilizza la funzione di temporizzazione linear
tranne background
e transform
. Credo che questo sia un buon compromesso tra prestazioni e CSS ASCIUTTI. Ho fatto un jsFiddle per voi per controllare le varie opzioni - commenta il diverso CSS per provare ogni modo:
http://jsfiddle.net/530cumas/4/
Definire "DRY" ... –
"SECCO" = "Non ripeterti. " – Jhecht
@AnupamBasak [DRY/Non ripetersi su Wikipedia] (http://en.wikipedia.org/wiki/Don%27t_repeat_yourself) In questo caso particolare, vorrebbe dire evitare la ripetizione della formula e delle durate del cubo-bezier. –