Nun, der DRY Weg wäre, etwas wie SASS zu verwenden und ein Mixin zu schreiben, dann benutze das, anstatt das Kopieren dieses Codes überall zu kopieren. Ein anderer Vorschlag, den ich machen werde, ist, all
zu vermeiden und stattdessen die Eigenschaften aufzuzählen, die über den linearen Übergang animiert werden sollen. Obwohl dies vielleicht etwas ausführlicher ist, wette ich, dass es viel performanter sein wird, besonders wenn Sie grafisch anspruchsvolle Dinge wie in den Stil des Elements stellen.
Also, während die Art und Weise funktionieren würde, ich fühle mich wie die mehr einzigartige Übergänge Sie haben, desto wertvoller ist diese Formulierung wird:
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);
}
Natürlich habe ich empfohlen Aufzählen Eigenschaften, teuer und unaufgeforderte Animationen zu vermeiden . In diesem Fall macht so etwas wie dies mehr Sinn:
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: wie @BoltClock erwähnt, ich war falsch über alles unter diesem mutigen Text, also bitte ignorieren. Die kommagetrennten Argumente werden wieder in der Reihenfolge angewendet, in der sie ursprünglich angegeben wurden - weder die erste noch die letzte Wiederholung für zusätzliche Werte transition-property
.Ich denke immer noch, was ich über die Verwendung von all
nicht gesagt habe, ist ein wichtiger Ratschlag für die Leistung und die zukunftssichere Festlegung!
Beachten Sie, wie ich die Argumente bestellt: wenn es mehr Argumente für transition-property
als transition-timing-function
, die alle zusätzlichen Eigenschaften wird standardmäßig auf die zunächst für transition-property
als Standard gelistet Wert. Also, setzen Sie ein linear
(default) Wert zuerst, dann aufzuzählen, alle Ihre einzigartige Timing-Funktionen die richtige Eigenschaft entsprechen, und dann alle Eigenschaften ändern Sie an das Ende (wie width
) wird automatisch auf linear
Standard! Also, selbst wenn Sie 5 weitere Eigenschaften am Ende Ihrer Property-Liste hinzufügen, werden nur background
und transform
ihre einzigartigen cubic-bezier
Timing-Funktionen haben. Zum Beispiel:
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);
}
Alles in der oben verwendet die linear
Timing-Funktion außer background
und transform
. Ich denke, das ist ein guter Kompromiss zwischen Performance und DRY CSS. Ich machte eine jsFiddle für Sie die verschiedenen Optionen zu prüfen, um - kommentieren Sie die verschiedenen CSS aus jeder Art und Weise, um zu versuchen:
http://jsfiddle.net/530cumas/4/
definieren „DRY“ ... –
„DRY“ = „Sie Repeat Yourself nicht. " – Jhecht
@AnupamBasak [DRY/Do not Repeat Yourself auf Wikipedia] (http://en.wikipedia.org/wiki/Don%27t_repeat_yourself) In diesem speziellen Fall würde es bedeuten, die Wiederholung der kubischen Bezier-Formel und Dauer vermieden werden. –