Animation im Web: Unterschied zwischen den Versionen
(→Links) |
|||
| (13 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
| − | == Animation mit CSS only== | + | == Quickstart == |
| + | In früheren Zeiten war die Standardantwort für "bewegte" Webseiten ganz einfach Flash. Heutzutage gibt es viele Lösungen um Animationen auf eine Webseite zu bringen. Dieser Artikel soll eine kleine Übersicht bringen. | ||
| + | |||
| + | Stichworte: Anime.js, GSAP, CSS Transform, CSS Keyframes, Snap, Waypoints, Lottie, ScrollMagic | ||
| + | |||
| + | == Links == | ||
| + | Siehe auch in den Sections | ||
| + | [[GSAP]] | ||
| + | [[Scroll-Snap]] | ||
| + | [[Anime.js]] | ||
| + | http://imakewebthings.com/waypoints/guides/getting-started/ | ||
| + | [[Lottie]] | ||
| + | |||
| + | == Überblick == | ||
| + | === GSAP & ScrollMagic === | ||
| + | ScrollMagic ist obsolet es gibt bei GSAP ein eigenes Plugin - ScrollTrigger | ||
| + | [[GSAP]] | ||
| + | Gehört zu den Standardlösungen. GSAP - Greensock Animation Plattform bietet JavaScript Tools für Timeline-basierte Animationen. Ergänzend kann ScrollMagic die Steuerung der Timelines basierend auf der Skrollposition der Webseite steuern. | ||
| + | |||
| + | Vorteil: | ||
| + | * Alle DOM Elemente können animiert werden. Nicht nur in der Bewegung sondern auch in der Farbe, Sichtbarkeit... | ||
| + | * Gute Performance | ||
| + | * Mit ScrollMagic einfaches Steuern beim Scrolling inklusive einfaches Pinning (fixieren während der Animation) | ||
| + | Nachteil: | ||
| + | * Skriptlastig, wobei es nicht so komplex ist wie bei anderen Lösungen. | ||
| + | |||
| + | === Vector + AfterFX + Bodymovin + Lottie === | ||
| + | https://www.youtube.com/watch?v=i6qfQ8QDOfs&feature=emb_rel_end | ||
| + | Ein weiterer vielversprechender Workflow. | ||
| + | * Vektordateien erstellen | ||
| + | * In AfterFX importieren. Hier gibt es mehrere Möglichkeiten. Illustrator Dateine kann man direkt importieren, für Sketch gibt es ein Importtool, das auch die Layer mitnimmt. More to check out... | ||
| + | * Animation in AfterFX erstellen | ||
| + | * Mit dem AfterFX Bodymovin Plugin exportierst du die Animation als JSON File. | ||
| + | * Lottie kann die erstellt Datei rendern. Die Lottie Library gibt es für den Browser, aber auch für iOS und Android - dort werden die Dateien Nativ gerendert. | ||
| + | * Lottie Animationen können auch mit GSAP gesteuert werden. | ||
| + | https://greensock.com/forums/topic/18343-timelinemax-scrollmagic-lottie-web-bodymoving-is-it-possible-is-it-necessary/ | ||
| + | https://www.youtube.com/watch?time_continue=308&v=HeY9qGUT3zQ&feature=emb_logo | ||
| + | |||
| + | Vorteil: | ||
| + | * Einfache Erstellung mit AfterFX | ||
| + | * Natives Rendern in Apps möglich -> gute Performance | ||
| + | Nachteil: | ||
| + | * Keine DOM Elemente | ||
| + | * Player nicht so frei positionierbar. | ||
| + | |||
| + | === Only CSS === | ||
| + | [[CSS Transitions]] | ||
| + | [[CSS Animation]] | ||
| + | CSS3 stellt einfache Möglichkeiten zur Verfügung Elemente (auch SVG Pfade) zu animieren. | ||
| + | Vorteil: | ||
| + | * Ohne JavaScript | ||
| + | * Für einfache Animationen einfach zu realisieren | ||
| + | * Performant wenn Properties verwendet werden, die der Browser nativ rechnen kann (z.B. alle transform Eigenschaften) | ||
| + | Nachteil: | ||
| + | * Komplexe Animationen umständlich | ||
| + | |||
| + | [[JQuery - Animation]] | ||
| + | |||
| + | == Animation mit CSS only == | ||
| + | [[CSS Transitions]] | ||
| + | [[CSS Animation]] | ||
| + | |||
== Animation mit JavaScript,CSS SVG und Canvas == | == Animation mit JavaScript,CSS SVG und Canvas == | ||
=== Cooler Triangles Tiles Effekt === | === Cooler Triangles Tiles Effekt === | ||
Aktuelle Version vom 25. April 2024, 10:04 Uhr
Quickstart[Bearbeiten]
In früheren Zeiten war die Standardantwort für "bewegte" Webseiten ganz einfach Flash. Heutzutage gibt es viele Lösungen um Animationen auf eine Webseite zu bringen. Dieser Artikel soll eine kleine Übersicht bringen.
Stichworte: Anime.js, GSAP, CSS Transform, CSS Keyframes, Snap, Waypoints, Lottie, ScrollMagic
Links[Bearbeiten]
Siehe auch in den Sections GSAP Scroll-Snap Anime.js http://imakewebthings.com/waypoints/guides/getting-started/ Lottie
Überblick[Bearbeiten]
GSAP & ScrollMagic[Bearbeiten]
ScrollMagic ist obsolet es gibt bei GSAP ein eigenes Plugin - ScrollTrigger
GSAP
Gehört zu den Standardlösungen. GSAP - Greensock Animation Plattform bietet JavaScript Tools für Timeline-basierte Animationen. Ergänzend kann ScrollMagic die Steuerung der Timelines basierend auf der Skrollposition der Webseite steuern.
Vorteil:
- Alle DOM Elemente können animiert werden. Nicht nur in der Bewegung sondern auch in der Farbe, Sichtbarkeit...
- Gute Performance
- Mit ScrollMagic einfaches Steuern beim Scrolling inklusive einfaches Pinning (fixieren während der Animation)
Nachteil:
- Skriptlastig, wobei es nicht so komplex ist wie bei anderen Lösungen.
Vector + AfterFX + Bodymovin + Lottie[Bearbeiten]
https://www.youtube.com/watch?v=i6qfQ8QDOfs&feature=emb_rel_end
Ein weiterer vielversprechender Workflow.
- Vektordateien erstellen
- In AfterFX importieren. Hier gibt es mehrere Möglichkeiten. Illustrator Dateine kann man direkt importieren, für Sketch gibt es ein Importtool, das auch die Layer mitnimmt. More to check out...
- Animation in AfterFX erstellen
- Mit dem AfterFX Bodymovin Plugin exportierst du die Animation als JSON File.
- Lottie kann die erstellt Datei rendern. Die Lottie Library gibt es für den Browser, aber auch für iOS und Android - dort werden die Dateien Nativ gerendert.
- Lottie Animationen können auch mit GSAP gesteuert werden.
https://greensock.com/forums/topic/18343-timelinemax-scrollmagic-lottie-web-bodymoving-is-it-possible-is-it-necessary/ https://www.youtube.com/watch?time_continue=308&v=HeY9qGUT3zQ&feature=emb_logo
Vorteil:
- Einfache Erstellung mit AfterFX
- Natives Rendern in Apps möglich -> gute Performance
Nachteil:
- Keine DOM Elemente
- Player nicht so frei positionierbar.
Only CSS[Bearbeiten]
CSS Transitions CSS Animation
CSS3 stellt einfache Möglichkeiten zur Verfügung Elemente (auch SVG Pfade) zu animieren. Vorteil:
- Ohne JavaScript
- Für einfache Animationen einfach zu realisieren
- Performant wenn Properties verwendet werden, die der Browser nativ rechnen kann (z.B. alle transform Eigenschaften)
Nachteil:
- Komplexe Animationen umständlich
Animation mit CSS only[Bearbeiten]
CSS Transitions CSS Animation
Animation mit JavaScript,CSS SVG und Canvas[Bearbeiten]
Cooler Triangles Tiles Effekt[Bearbeiten]
http://codepen.io/mistic100/pen/JobPLK (2016-12)
<div id="tiles"></div>
<p>Enhancement of my original <a href="http://codepen.io/mistic100/pen/GFHkm">Colorful Tiles</a> with truly random animation.</p>
<p>At the end of each cycle (49 steps) a new Perlin noise map is generated.</p>
body { background:#111; }
#tiles { margin:0 auto; }
p { max-width:680px; margin:10px auto; color:white; font:16px "Calibri", sans-serif; }
a { color:#3E7289; }
(function(){
if (!SVG.supported) {
alert('SVG not supported !');
return;
}
// parameters
var size = { x: 680, y: 400, tile: 40 },
speed = 50,
tile_nb = { x: Math.ceil(size.x/size.tile)+1, y: Math.ceil(size.y/size.tile)+1 },
colors = ["#ED1156", "#ED194E", "#ED2247", "#ED2B3F", "#EE3438", "#EE3D31", "#EE4529", "#EF4E22", "#EF571A", "#EF6013", "#F0690C", "#E8720E", "#E17B10", "#D98512", "#D28E14", "#CB9816", "#C3A118", "#BCAA1A", "#B4B41C", "#ADBD1E", "#A6C721", "#96C62F", "#87C53E", "#78C44D", "#69C35C", "#5AC26B", "#4AC17A", "#3BC089", "#2CBF98", "#1DBEA7", "#0EBDB6", "#0EBAB0", "#0EB8AA", "#0EB5A4", "#0EB39E", "#0EB098", "#0EAE92", "#0EAB8C", "#0EA986", "#0EA680", "#0EA47B", "#269376", "#3F8372", "#58736E", "#71626A", "#895266", "#A24262", "#BB315E", "#D4215A"],
objects = [],
values = [],
nb_colors = colors.length;
// function to generate simplex noise map
function generateValues(add) {
var values = [], foo,
simplex = new SimplexNoise();
for (var l=0; l<tile_nb.y; l++) {
for (var c=0; c<tile_nb.x; c++) {
foo = Math.round((simplex.noise(c/10, l/10)+1) / 2 * nb_colors) + add;
values.push(foo, foo+1, foo+2, foo+3);
}
}
return values;
}
// init canvas
var container = document.getElementById('tiles');
container.style.width = size.x+'px';
container.style.height = size.y+'px';
var paper = SVG(container).size(size.x, size.y),
pos, cmd,
counter = 0;
// draw tiles
for (var l=0; l<tile_nb.y; l++) {
for (var c=0; c<tile_nb.x; c++) {
pos = { x: c*size.tile, y: l*size.tile };
// tile 1
cmd = pos.x +','+ pos.y +' '+ (pos.x+size.tile) +','+ pos.y +' '+ (pos.x+size.tile/2) +','+ (pos.y+size.tile/2);
objects.push(paper.polygon(cmd, true));
// tile 2
cmd = (pos.x+size.tile) +','+ (pos.y+size.tile) +' '+ pos.x +','+ (pos.y+size.tile) +' '+ (pos.x+size.tile/2) +','+ (pos.y+size.tile/2);
objects.push(paper.polygon(cmd, true));
// tile 3
cmd = pos.x +','+ pos.y +' '+ (pos.x+size.tile/2) +','+ (pos.y+size.tile/2) +' '+ (pos.x-size.tile/2) +','+ (pos.y+size.tile/2);
objects.push(paper.polygon(cmd, true));
// tile 4
cmd = pos.x +','+ (pos.y+size.tile) +' '+ (pos.x+size.tile/2) +','+ (pos.y+size.tile/2) +' '+ (pos.x-size.tile/2) +','+ (pos.y+size.tile/2);
objects.push(paper.polygon(cmd, true));
}
}
// cycle colors
values[0] = generateValues(0);
values[1] = generateValues(nb_colors);
setInterval(function() {
var idx;
for (var i=0, l=objects.length; i<l; i++) {
idx = Math.round((values[1][i]-values[0][i]) * counter/(nb_colors-1) + values[0][i]);
if (idx >= nb_colors) idx = idx%nb_colors;
objects[i].fill(colors[idx]);
}
counter++;
if (counter == nb_colors) {
counter = 1;
values[0] = values[1].map(function(v) { return v-nb_colors; });
values[1] = generateValues(nb_colors);
}
}, speed);
// bug in svg.js
var temp = document.getElementById('SvgjsSvg1002');
temp.parentNode.removeChild(temp);
}());