Wenn Sie eine Transition auf ein Element für eine bestimmte unterstützte Eigenschaft anwenden und sich diese Eigenschaft *jemals* ändert, wird diese Transition verwendet. Wenn sich ein Klassenname auf diesem Element ändert und die neue Klasse diese Eigenschaft ändert, wird eine Transition durchgeführt (vorausgesetzt, was die Klasse tut, entfernt nicht die Transition). Wenn JavaScript die Stil-Eigenschaft buchstäblich ändert, wird eine Transition durchgeführt.
Ebenso, wenn eine neue Media Query wirksam wird und diese Media Query etwas enthält, das diese Eigenschaft auf diesem Element ändert, wird eine Transition durchgeführt. Daher gibt es eigentlich keine „animierte Media Query“ an sich, sondern vielmehr Elemente, die einfach wie erwartet animiert werden, wenn eine neue Media Query beginnt, die Seite zu beeinflussen.
Einfaches Beispiel
.thing-that-moves {
position: absolute;
width: 100px;
height: 100px;
background: red;
top: 0;
left: 0;
transition: left 0.5s; /* BYO prefixes */
}
@media (min-width: 400px) {
left: 50px;
}
@media (min-width: 600px) {
left: 100px;
}
Wenn Sie die Größe Ihres Browserfensters über diese Breakpoints hinaus ändern würden, würden Sie einen roten Quadrat sehen, der sich als Reaktion darauf bewegt.
Etwas komplexeres Layout-Beispiel
Vor einigen Versionen auf CSS-Tricks hatte ich ein Suchformular, das sich mit dieser genauen Technik langsam in Position schwebte. Ich habe es hier in einem etwas einfachen Layout neu erstellt, in dem sich auch einige andere Dinge animieren.
Sehen Sie den Pen Animierte Media Queries von Chris Coyier (@chriscoyier) auf CodePen
Sie haben möglicherweise die besten Ergebnisse, wenn Sie es in der Vollbildansicht ausprobieren.
Animiertes GIF davon, wie es funktioniert

PS. LICEcap ist sehr nützlich, um solche GIFs zu erstellen.
Was kann ich noch tun?
Der Himmel ist die Grenze. Das ist nur CSS. Ändern und animieren Sie, was Sie wollen. In einer anderen Version von CSS-Tricks habe ich Mike den Frosch von Treehouse aus einfachen CSS-Formen gezeichnet. Wenn verschiedene Media Queries erreicht wurden, würde Mike die Form, Farbe, Ausdruck und Position ändern – sich langsam in den nächsten Zustand verwandeln durch Übergänge. Das kam gut an!
Was ist die Browserunterstützung?
IE 9+ für Media Queries. IE 10+ für Transitions. Ich würde mir wegen der Transitions keine Sorgen machen, da sie streng genommen nur "funcandy" sind (wenn sie nicht animiert werden, spielt das keine Rolle, sie bewegen sich trotzdem). Wenn Sie eine tiefere Unterstützung für Media Queries benötigen, gibt es immer Respond.js.
Gibt es einen tatsächlichen Grund dafür?
Zum Spaß. Das ist rein zum Vergnügen. Es kann eine kleine Geste sein, um Ihrer Website etwas Leben einzuhauchen. Es wäre schwierig, einen geschäftlichen Fall dafür zu machen, aber wenn Ihr Performance-Budget nicht ein paar Bytes für Spaß übrig hat, tut es mir leid für Sie, mein Freund.
Gibt es etwas zu beachten?
Wenn die Stylesheet schnell genug geparst wird und die Übergänge auf ein Element angewendet werden, während die Seite noch im Layout ist, können diese Übergänge ziemlich aufdringlich sein. Sie möchten sie vielleicht erst nach dem Laden der Seite anwenden.
Danke! Das sieht gut und nützlich aus..
Ich habe versucht, das vor einiger Zeit zu tun, ich fand es super cool. Aber es ist einfach unpraktisch, wer nutzt seinen Browser wirklich bei < 500px, es sei denn, man testet Media Queries? Sobald es auf der Seite in der gewünschten Breite geladen ist, hat man keinen Effekt mehr. Immer noch cool.
Die Anwendung auf Ereignisse zur Ausrichtungsänderung gibt meiner Meinung nach einen schönen Effekt auf Mobilgeräten.
Ich stimme zu, ich sehe niemanden, der das jemals sehen würde, außer anderen Entwicklern, die prüfen, ob eine Website responsiv ist...
Der Punkt von Drazen gefällt mir allerdings gut.
Ich denke, eine Abfrage unter 600-700 Pixel ist immer nützlich, falls jemand den Browser nebeneinander mit etwas anderem laden möchte. Aber es hängt letztendlich davon ab, wofür Ihre Website gedacht ist :)
Ich liebe diesen Trick und freue mich, dass das Beispiel eine spezifische
transition-propertyanstelle vonallverwendet. Die besten MQ-basierten Übergänge sind spezifisch und kontrolliert. Die Verwendung vonallkann zu verwirrenderen (und viel ruckeligeren) Übergängen führen, da viele Eigenschaften gleichzeitig animiert werden.Betreff: ^^ <– dieser Beitrag. – wie würde man den Browser die Stylesheet zuletzt laden lassen?
Ich glaube, das würde cool aussehen, wenn man die Media Queries nach dem Laden der normalen Seite aktivieren könnte? Ist das möglich?
Völlig unproduktiver Kommentar: Ich liebe es, dass Sie „Cow Farted“ und „Cow Farted Again“ als Überschriften verwendet haben, und auch „funcandy“. Guter Artikel, gute Worte.
Lustiger Effekt. Vielleicht etwas schneller für die Übergänge http://codepen.io/grayghostvisuals/pen/jsite. Ich frage mich auch, ob translate genauso gut funktionieren würde, da die gesamte Seite und ihre Teile jedes Mal neu gezeichnet werden müssen, wenn sich die Browsergröße ändert (in diesem Pen habe ich translate für die Suchleiste anstelle von left verwendet. fühlt sich immer noch wie Willy Wonka an und ich denke, es braucht den translateZ-Hack, um auf einer eigenen Ebene platziert zu werden und das Zeichnen zu vermeiden).
Übrigens, diese Kuh braucht eine ordentliche Dosis Pepto. Hier ist ein guter Artikel für die Kuh zu diesem Thema http://drbenkim.com/articles-gas.html. Verdauungsstörungen und Blähungen sind keine Lachnummer.
Ich mag es sehr, wenn die verschiedenen Teile unterschiedliche Timings haben, sodass sie alle zu unterschiedlichen Zeiten an ihren Platz fallen.
Aber warum brauche ich einen Übergangseffekt bei Media Queries? Leute öffnen die Seite auf einem Desktop, Tablet oder Mobilgerät. Was ist der Nutzen eines Animationseffekts? Er ist überall nutzlos, außer vielleicht auf Desktop-Versionen, wenn man den Browser zieht. Liege ich falsch? Danke
Wenn Sie Ihr Telefon drehen, ändert sich die Breite des Viewports, und dann sehen Sie diese Animation.
Sie liegen nicht falsch. Sehen Sie den Abschnitt „Gibt es einen tatsächlichen Grund dafür?“ im obigen Artikel.
Nehmen wir zum Beispiel einen Benutzer, der Windows 7 verwendet. Sie haben Ihre Seite am Rand angeheftet (und sie sieht immer noch gut aus, weil sie responsiv ist) und ein anderes Programm am anderen Rand. Vielleicht schließen sie die andere Anwendung und machen ihren Browser im Vollbildmodus und sehen eine schöne Übergang von wachsenden oder sich bewegenden Elementen, oder was auch immer. Es ist für ihre Erfahrung nicht unbedingt notwendig, aber es ist schön (obwohl ich Animation und Interaktion „innerhalb der Seite“ für eine erfolgreiche, ansprechende Erfahrung für entscheidend halte).
Schöner Trick, ich habe das Vergnügen, Media Query-Übergänge täglich zu nutzen! :)
Ich schätze, ein möglicher geschäftlicher Fall könnte sein, dass Sie darauf hinweisen, wohin sich ein wichtiges Element (in diesem Fall die Suchleiste) auf der Seite bewegt. Insbesondere wenn wir beginnen, komplexe Layouts mit CSS Regions/Flexbox usw. zu erzielen, sehen die Dinge bei verschiedenen Bildschirmgrößen sehr unterschiedlich aus, und dies könnte Verwirrung bei den Benutzern mildern. Eher unwahrscheinlich aber.
Schöne Augenweide!
Ich werde definitiv etwas Ähnliches in meinem nächsten responsiven Projekt programmieren.
Meiner Meinung nach gibt es einen einfacheren Weg
Screencast: hier
Nur ein bisschen spezifischer,
Das funktioniert wunderbar, ich freue mich darauf, es für die Änderung der Handy-Ausrichtung zu verwenden.
Und für diejenigen, die eine CSS-Transition auf ALLE Elemente legen wollen, würde ich sagen, das ist viel zu viel und führt nur zu einem sehr verlangsamten visuellen Erlebnis.
Es ist bei einigen Elementen nützlich, aber wenn sich alles eine halbe Sekunde oder länger für eine Transition Zeit nimmt, habe ich das Gefühl, dass die Benutzeroberfläche in einer Art „Slow-Motion“-Effekt aussehen würde.
Ich habe schon ein paar Mal versucht, „Layout“-Media-Queries (Spaltenbreiten/Abstände/Ränder usw.) zu animieren/transitionieren und festgestellt, dass bei Geräteausrichtungsänderungen die Übergänge oft das Layout brechen, ich nehme an, es liegt daran, dass die Zeit, die die Ausrichtungsänderung dauert, mit der Übergangszeit kollidiert.
Aus diesem Grund verwende ich sie nicht oder deaktiviere sie für Geräte, die eine Ausrichtungsänderung unterstützen.
Erster Kommentar, ich liebe Ihre Seite, großer Fan, etc...
Ich habe mich während des gesamten Artikels gefragt: „Wozu ist das gut?“ und am Ende habe ich „Zum Spaß, Mann.“ gesehen, also war ich erleichtert, dass ich nicht der Einzige bin, der Dinge tut, die keinen wirklichen Nutzen haben. L'art pour l'art.
Das scheint jedoch nicht bei Flexbox-Eigenschaften zu funktionieren. Ich habe versucht, es bei der Änderung von
flex-direction: rowzucolumnbei kleineren Viewports zu tun, aber es funktionierte nicht.Übergänge/Animationen funktionieren normalerweise nur bei Eigenschaften mit Werten, die Zahlen, Längen oder Farben sind. http://oli.jp/2010/css-animatable-properties/
interessante Arbeit!!!
Ja.. Ich bin mir nicht sicher, für wen das ist? Ändert der Durchschnittsnutzer den Browser so oft, dass er einen Effekt wie diesen braucht?
Oder ist das nur für Entwickler?
Schauen Sie sich den Abschnitt Gibt es einen tatsächlichen Grund dafür? im obigen Artikel an.
Ich würde hinzufügen
.search input {width: 100%;
}