Meine Schaukel – vor Jahren mal in Flash animiert – wollte ich unbedingt als SVG-Datei zum Leben erwecken. Eigentlich gar nicht so kompliziert mit animate.css. Schwieriger war es, das Ganze in einem WordPress-Post hinzubekommen (Jetzt als CodePen).
AI-Vektorgrafik in SVG-Datei konvertieren
Die Illustrator-Datei kann in Illustrator in eine SVG-Datei umgewandelt werden. Die Vektorgrafik sollte so wenig Ankerpunkte wir möglich haben. Das Konvertieren geht relativ einfach über „Datei speichern“ als .SVG mit diesen Einstellungen:
SVG-Code optimieren
Der so erzeugte SVG-Code (SVG-Datei in einem Editor öffnen) enthält viele überflüssige Elemente und ist noch weit entfernt von sauberem, optimiertem SVG-Code. Tipps für weitere Maßnahmen habe ich
in diesem Smashing-Magazine-Artikel gefunden.
Der SVG-Optimiser von Peter Collingridge ist genial. In einem Vorschaubild kann ich sehen, wie die Einstellungen das Endergebnis aussehen lassen.
petercollingridge.appspot.com/svg-editor
SVG-Code inline in WordPress-Post einbinden
Für die Animation soll der SVG-Code inline eingebunden werden. Wenn ich den Code nicht auf einer Zeile im Editor einfügen kann, fügt WordPress Absätze und Zeilenumbrüche ein. Das zerstört leider meinen schönen SVG-Code und es bleibt nichts als eine leere weiße Fläche.
Einfügen von p- und br-Tags im WordPress-Texteditor verhindern
In der function.php diese Zeilen einfügen:
remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' );
Leben einhauchen – Animation mit animate.css
Natürlich gibt es wie immer unendlich viele Wege und Möglichkeiten, die zum Ziel führen. Diese Slideshow zum Thema kann ich nur empfehlen the-art-of-ui-animations
Für die Schaukel habe ich die CSS-Bibliothek animate.css genutzt.
Im Head-Element muss das Stylesheet eingebunden werden:
<head> <link rel="stylesheet" href="animate.min.css"> </head>
Und schon kann das gewünschte Element per CSS animiert werden:
<svg class="animated swing infinite" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" x="0" y="0" width="251" height="367.3" viewBox="0 0 251 367.3" xml:space="preserve" enable-background="new 0 0 251 367.3">
Ausführlicher wird es hier beschrieben:
http://daneden.github.io/animate.css/
Nachtrag: Die Schaukelanimation war noch nicht optimal mit der Standardvorgabe von animate.css
Mit einem CSS-Generator habe ich die Animation angepasst. Der CSS-Code dazu:
.element-animation{ animation: animationFrames linear 3s; animation-iteration-count: infinite; transform-origin: 0% 0%; -webkit-animation: animationFrames linear 3s; -webkit-animation-iteration-count: infinite; -webkit-transform-origin: 0% 0%; -moz-animation: animationFrames linear 3s; -moz-animation-iteration-count: infinite; -moz-transform-origin: 0% 0%; -o-animation: animationFrames linear 3s; -o-animation-iteration-count: infinite; -o-transform-origin: 0% 0%; -ms-animation: animationFrames linear 3s; -ms-animation-iteration-count: infinite; -ms-transform-origin: 0% 0%; } @keyframes animationFrames{ 0% { transform: rotate(0deg) ; } 34% { transform: rotate(90deg) ; } 67% { transform: rotate(-90deg) ; } 100% { transform: rotate(0deg) ; } } @-moz-keyframes animationFrames{ 0% { -moz-transform: rotate(0deg) ; } 34% { -moz-transform: rotate(90deg) ; } 67% { -moz-transform: rotate(-90deg) ; } 100% { -moz-transform: rotate(0deg) ; } } @-webkit-keyframes animationFrames { 0% { -webkit-transform: rotate(0deg) ; } 34% { -webkit-transform: rotate(90deg) ; } 67% { -webkit-transform: rotate(-90deg) ; } 100% { -webkit-transform: rotate(0deg) ; } } @-o-keyframes animationFrames { 0% { -o-transform: rotate(0deg) ; } 34% { -o-transform: rotate(90deg) ; } 67% { -o-transform: rotate(-90deg) ; } 100% { -o-transform: rotate(0deg) ; } } @-ms-keyframes animationFrames { 0% { -ms-transform: rotate(0deg) ; } 34% { -ms-transform: rotate(90deg) ; } 67% { -ms-transform: rotate(-90deg) ; } 100% { -ms-transform: rotate(0deg) ; } }