<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.157.23.138</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.157.23.138"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/84.157.23.138"/>
	<updated>2026-05-06T16:10:31Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=GSAP_-_Snippets&amp;diff=25317</id>
		<title>GSAP - Snippets</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=GSAP_-_Snippets&amp;diff=25317"/>
		<updated>2021-04-16T07:31:20Z</updated>

		<summary type="html">&lt;p&gt;84.157.23.138: /* Globale Timeline kontrollieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Links ==&lt;br /&gt;
 [[GSAP]]&lt;br /&gt;
 https://greensock.com/cheatsheet/&lt;br /&gt;
 https://greensock.com/get-started&lt;br /&gt;
 https://codepen.io/GreenSock/&lt;br /&gt;
 https://css-tricks.com/writing-smarter-animation-code/ *****&lt;br /&gt;
 https://greensock.com/forums/topic/17401-multiple-timelinemax-oncomplete-function-help/&lt;br /&gt;
Cool Stuff&lt;br /&gt;
 https://greensock.com/forums/topic/18128-svg-stroke-dasharray-quick-tip/&lt;br /&gt;
Read On&lt;br /&gt;
 https://greensock.com/forums/topic/22793-how-to-work-with-new-labels-object-in-gsap-3/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Einfache Animationen ==&lt;br /&gt;
&lt;br /&gt;
gsap.to(&amp;quot;.logo&amp;quot;, {duration: 2, x: 300}); // Dies nennt sich eine Timeline. 300px nach rechts bewegen in 2s mit Standardwerten (ease out...)&lt;br /&gt;
gsap.to(&amp;quot;.logo&amp;quot;, {duration: 2, x: 300, backgroundColor: &amp;quot;#c2c4c8&amp;quot;}); // CSS Eigenschaften die normal ein - haben, werden als Camelcase geschrieben.&lt;br /&gt;
// Eigenschaften mit Zeichen in Anführungsstrichen. Fast alles lässt sich Animieren.&lt;br /&gt;
gsap.to(&amp;quot;.logo&amp;quot;, {duration: 2, x: 300, backgroundColor: &amp;quot;#c2c4c8&amp;quot;, borderRadius: &amp;quot;50%&amp;quot;, border: &amp;quot;4px solid white&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
=== Ease In Out ===&lt;br /&gt;
&lt;br /&gt;
 https://greensock.com/docs/v3/Eases&lt;br /&gt;
 gsap.to(&amp;quot;.logo&amp;quot;, {duration: 1, x:300, ease: &amp;quot;power2.inOut&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
Ease Möglichkeiten&lt;br /&gt;
&lt;br /&gt;
 //OLD ==&amp;gt; NEW&lt;br /&gt;
 Elastic.easeOut ==&amp;gt; &amp;quot;elastic.out&amp;quot; //or just &amp;quot;elastic&amp;quot; because &amp;quot;.out&amp;quot; is the default flavor&lt;br /&gt;
 Elastic.easeIn ==&amp;gt; &amp;quot;elastic.in&amp;quot;&lt;br /&gt;
 Elastic.easeInOut ==&amp;gt; &amp;quot;elastic.inOut&amp;quot;&lt;br /&gt;
 Elastic.easeOut.config(1, 0.5) ==&amp;gt; &amp;quot;elastic.out(1, 0.5)&amp;quot; //or just &amp;quot;elastic(1, 0.5)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 //and the other configurable eases are much easier!:&lt;br /&gt;
 SteppedEase.config(5) ==&amp;gt; &amp;quot;steps(5)&amp;quot;&lt;br /&gt;
 SlowMo.ease.config(0.5, 0.8) ==&amp;gt; &amp;quot;slow(0.5, 0.8)&amp;quot;&lt;br /&gt;
 RoughEase.ease.config({points:40}) ==&amp;gt; &amp;quot;rough(40)&amp;quot;&lt;br /&gt;
 ExpoScaleEase.config(0.5, 3) ==&amp;gt; &amp;quot;expoScale(0.5, 3)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Staggering ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
gsap.to(&amp;quot;.class&amp;quot;, {&lt;br /&gt;
  x:&amp;quot;+=100&amp;quot;,&lt;br /&gt;
  duration:1,&lt;br /&gt;
  stagger: 0.5 //simple stagger of 0.5 seconds&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
//or get advanced:&lt;br /&gt;
gsap.to(&amp;quot;.class&amp;quot;, {&lt;br /&gt;
  x:&amp;quot;+=100&amp;quot;,&lt;br /&gt;
  duration:1,&lt;br /&gt;
  stagger: {&lt;br /&gt;
    amount:2,&lt;br /&gt;
    from:&amp;quot;center&amp;quot;,&lt;br /&gt;
    grid:&amp;quot;auto&amp;quot;,&lt;br /&gt;
    onComplete: myFunction //define callbacks inside the stagger to make them apply to each sub-tween&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Relative position prefix ==&lt;br /&gt;
Relative “&amp;gt;” and “&amp;lt;” position prefix&lt;br /&gt;
This feature helps with positioning animations in a timeline. It puts a tween relative to the previous tween’s start or end time and removes the need to add labels through your code.&lt;br /&gt;
&lt;br /&gt;
gsap.method(&amp;#039;selector&amp;#039;,{}, &amp;quot;&amp;lt;&amp;quot; ) //Inserts a tween at the start of the previous tween&lt;br /&gt;
&lt;br /&gt;
gsap.method(&amp;#039;selector&amp;#039;,{}, &amp;quot;&amp;gt;&amp;quot; ) //Inserts a tween at the end of the previous&lt;br /&gt;
&lt;br /&gt;
== Keyframes ==&lt;br /&gt;
&lt;br /&gt;
Anstatt mehrerer Tweens kann man auch mehrere TweenProperties als keyframes kombinieren und hat weniger Tipparbeit.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
gsap.to(&amp;quot;.class&amp;quot;, {keyframes: [ //&amp;lt;-- an array of keyframes!&lt;br /&gt;
  {x:100, duration:1},&lt;br /&gt;
  {y:200, duration:1, delay:0.5}, //create a 0.5 second gap&lt;br /&gt;
  {rotation:360, duration:2, delay:-0.25} //overlap by 0.25 seconds&lt;br /&gt;
]});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timelines ==&lt;br /&gt;
=== Reset Timeline ===&lt;br /&gt;
 If you want to set the values to the original position set in the animation you can move the the playhead&amp;#039;s position before you kill it:&lt;br /&gt;
&lt;br /&gt;
 tl.pause(0).kill(true);&lt;br /&gt;
 ScrollTrigger.getById(&amp;quot;trigger1&amp;quot;).kill(true); // you have to do a extra kill for ScrollTrigger if used&lt;br /&gt;
&lt;br /&gt;
If you want to remove all inline styles you can use clearProps:&lt;br /&gt;
&lt;br /&gt;
 tl.kill(true);&lt;br /&gt;
 ScrollTrigger.getById(&amp;quot;trigger1&amp;quot;).kill(true);&lt;br /&gt;
 gsap.set(&amp;quot;#element&amp;quot;, {clearProps: true});&lt;br /&gt;
&lt;br /&gt;
=== Globale Timeline kontrollieren (timeScale)===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
gsap.globalTimeline.timeScale(0.1); //slow everything down&lt;br /&gt;
gsap.globalTimeline.pause(); //stop everything, though you might want to use gsap.exportRoot() instead so that you can exclude delayedCalls()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rotation ==&lt;br /&gt;
=== Richtung der Rotation ===&lt;br /&gt;
 rotation:&amp;quot;270_short&amp;quot; //animates in the shortest direction!&lt;br /&gt;
 rotation:&amp;quot;270_cw&amp;quot;    //animates clockwise&lt;br /&gt;
 rotation:&amp;quot;270_ccw&amp;quot;   //animates counter-clockwise&lt;br /&gt;
&lt;br /&gt;
== Scroll To ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
document.querySelector(&amp;quot;button&amp;quot;).addEventListener(&amp;quot;click&amp;quot;, function() {&lt;br /&gt;
  gsap.to(window, { duration: 0.75, scrollTo: &amp;quot;.target&amp;quot; });&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GSAP Scroll Trigger ==&lt;br /&gt;
Update: Die beste Möglichkeit ist mit dem neuen ScrollTrigger Plugin.&lt;br /&gt;
 https://www.youtube.com/watch?v=X7IBa7vZjmo Intro mit Beispielen&lt;br /&gt;
 https://greensock.com/scrolltrigger Main Page&lt;br /&gt;
 https://greensock.com/docs/v3/Plugins/ScrollTrigger Documentation&lt;br /&gt;
 https://greensock.com/st-mistakes/ Häufige Fehler (auch mit each Schleifen)&lt;br /&gt;
 &lt;br /&gt;
 Obsolet: https://codepen.io/osublake/pen/a633d0c9e6e2b951496d7f1eb4fd8fb6 (ohne ScrollMagic)&lt;br /&gt;
&lt;br /&gt;
== Good Practice and Time Savers ==&lt;br /&gt;
=== Timeline schneller abspielen ===&lt;br /&gt;
 tl.timeScale(3).repeat(2);&lt;br /&gt;
=== Bestimmten Teil abspielen ===&lt;br /&gt;
 tl.play(&amp;quot;myLabel&amp;quot;);&lt;br /&gt;
wobei die Labels so definiert werden:&lt;br /&gt;
 .addLabel(&amp;quot;out3&amp;quot;);&lt;br /&gt;
oder&lt;br /&gt;
 .to(&amp;quot;#myElement&amp;quot;,{duration:1, rotation:90}, &amp;quot;in3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Schleifen ===&lt;br /&gt;
Geeignet für gleiche Animation auf mehreren Elementen hintereinander. Dabei übergeben wir in einer Schleife ein DOM Element und erstellen in einer anonymen Funktion den Tween.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
$(&amp;quot;.fade-in&amp;quot;).each(function(){&lt;br /&gt;
  var tween = gsap.from($(this), {duration: 0.5, scale: 0.7, y: &amp;#039;+=30&amp;#039;, ease: Linear.easeNone });&lt;br /&gt;
  // possible with ScrollMagic&lt;br /&gt;
  var scene = new ScrollMagic.Scene({&lt;br /&gt;
    triggerElement: this,&lt;br /&gt;
  })&lt;br /&gt;
    .setTween(tween);&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Default Werte ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
gsap.timeline({defaults:{ease:&amp;quot;power2.out&amp;quot;, duration:5}})&lt;br /&gt;
    .to(&amp;quot;.selector1&amp;quot;, {x:200})&lt;br /&gt;
    .to(&amp;quot;.selector2&amp;quot;, {y:500}) &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Nesting Timelines ===&lt;br /&gt;
&lt;br /&gt;
=== Functions to create timelines ===&lt;br /&gt;
&lt;br /&gt;
== Responsive Animations &amp;amp; Media Queries==&lt;br /&gt;
 https://greensock.com/forums/topic/18719-how-to-manage-gsap-animation-in-mobile-device/&lt;br /&gt;
 https://greensock.com/forums/topic/18280-truly-responsive-animations/&lt;br /&gt;
 https://greensock.com/docs/v3/Plugins/ScrollTrigger/static.matchMedia()&lt;br /&gt;
&lt;br /&gt;
== Plugins ==&lt;br /&gt;
=== SVGMorph ===&lt;br /&gt;
 gsap.to(&amp;quot;#circle&amp;quot;, {duration: 1, morphSVG:&amp;quot;#hippo&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
== ScrollTrigger ==&lt;br /&gt;
 https://codepen.io/noeldelgado/pen/BaogqYy&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Array erstellen um Animation auf viele Elemente anzuwenden&lt;br /&gt;
    var panels = gsap.utils.toArray(&amp;quot;.panel&amp;quot;);&lt;br /&gt;
    let container = document.querySelector(&amp;#039;.scroll-container&amp;#039;)&lt;br /&gt;
    &lt;br /&gt;
    tl = gsap.timeline();&lt;br /&gt;
    tl.to(panels, { //each panel&lt;br /&gt;
        xPercent: -100 * (panels.length -1), // move complete width i.e. -500%&lt;br /&gt;
        scrollTrigger: {&lt;br /&gt;
            trigger: &amp;quot;.scroll-container&amp;quot;,&lt;br /&gt;
            pin: true,&lt;br /&gt;
            markers: true,&lt;br /&gt;
            end: () =&amp;gt; &amp;quot;+=&amp;quot; + document.querySelector(&amp;quot;.scroll-container&amp;quot;).offsetWidth,&lt;br /&gt;
        }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
// ODER&lt;br /&gt;
&lt;br /&gt;
panels.forEach((panel, i) =&amp;gt; {&lt;br /&gt;
    gsap.to(panel, {&lt;br /&gt;
        //...&lt;br /&gt;
    }&lt;br /&gt;
})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Helpers ==&lt;br /&gt;
=== gsap loader ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
gsap.registerPlugin(ScrollTrigger);&lt;br /&gt;
&lt;br /&gt;
const images = gsap.utils.toArray(&amp;#039;img&amp;#039;);&lt;br /&gt;
const loader = document.querySelector(&amp;#039;.loader--text&amp;#039;);&lt;br /&gt;
const updateProgress = (instance) =&amp;gt; &lt;br /&gt;
  loader.textContent = `${Math.round(instance.progressedCount * 100 / images.length)}%`;&lt;br /&gt;
&lt;br /&gt;
const showDemo = () =&amp;gt; {&lt;br /&gt;
  document.body.style.overflow = &amp;#039;auto&amp;#039;;&lt;br /&gt;
  document.scrollingElement.scrollTo(0, 0);&lt;br /&gt;
  gsap.to(document.querySelector(&amp;#039;.loader&amp;#039;), { autoAlpha: 0 });&lt;br /&gt;
  // do some cool stuff&lt;br /&gt;
  gsap.utils.toArray(&amp;#039;section&amp;#039;).forEach((section, index) =&amp;gt; {&lt;br /&gt;
    const w = section.querySelector(&amp;#039;.wrapper&amp;#039;);&lt;br /&gt;
    const [x, xEnd] = (index % 2) ? [&amp;#039;100%&amp;#039;, (w.scrollWidth - section.offsetWidth) * -1] : [w.scrollWidth * -1, 0];&lt;br /&gt;
    gsap.fromTo(w, {  x  }, {&lt;br /&gt;
      x: xEnd,&lt;br /&gt;
      scrollTrigger: { &lt;br /&gt;
        trigger: section, &lt;br /&gt;
        scrub: 0.5 &lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
  });&lt;br /&gt;
}&lt;br /&gt;
// check how much is loaded&lt;br /&gt;
imagesLoaded(images).on(&amp;#039;progress&amp;#039;, updateProgress).on(&amp;#039;always&amp;#039;, showDemo);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.157.23.138</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=GSAP_-_Infinite_Textbanner&amp;diff=25316</id>
		<title>GSAP - Infinite Textbanner</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=GSAP_-_Infinite_Textbanner&amp;diff=25316"/>
		<updated>2021-04-16T06:51:41Z</updated>

		<summary type="html">&lt;p&gt;84.157.23.138: Die Seite wurde neu angelegt: „ https://codepen.io/kholja/pen/JjEZBeN?editors=1111 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt; // Add Clone at the End // Scale text to at least 100% (container overf…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; https://codepen.io/kholja/pen/JjEZBeN?editors=1111&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
// Add Clone at the End&lt;br /&gt;
// Scale text to at least 100% (container overflows and nowrap)&lt;br /&gt;
// Move 100% text-width to the left&lt;br /&gt;
&lt;br /&gt;
$(window).resize(resizeHandler);&lt;br /&gt;
gsap.registerPlugin(&amp;#039;ScrollTrigger&amp;#039;);&lt;br /&gt;
gsap.defaultEase = &amp;quot;power4.Out&amp;quot;;&lt;br /&gt;
var time = 12;&lt;br /&gt;
&lt;br /&gt;
// Set text animation&lt;br /&gt;
function rollOne(){&lt;br /&gt;
  // &lt;br /&gt;
  var tlOne = gsap.timeline();&lt;br /&gt;
  var $textOne = $(&amp;quot;.text-one&amp;quot;);&lt;br /&gt;
  $textOne.css({width:&amp;quot;auto&amp;quot;});&lt;br /&gt;
  var textWidth = $textOne.width();&lt;br /&gt;
  console.log(textWidth);&lt;br /&gt;
  $textOne.width(textWidth);&lt;br /&gt;
  &lt;br /&gt;
  tlOne.to(&amp;#039;.text-one&amp;#039;,time,{&lt;br /&gt;
    x:-textWidth,&lt;br /&gt;
    ease: Linear.easeNone,&lt;br /&gt;
    repeat: -1&lt;br /&gt;
  });&lt;br /&gt;
  return tlOne;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Create a clone and roll it&lt;br /&gt;
function cloneOne(){&lt;br /&gt;
  $clone = $(&amp;quot;.text-one&amp;quot;).clone().appendTo(&amp;quot;.banner-one&amp;quot;);&lt;br /&gt;
  $clone.addClass(&amp;quot;clone&amp;quot;);&lt;br /&gt;
  rollOne();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function resizeHandler(){&lt;br /&gt;
var progress = tlOne.progress(); //record timeline progress&lt;br /&gt;
  tlOne.time(0).kill(); //rewind and kill the original tween.&lt;br /&gt;
  //time = 5;&lt;br /&gt;
  rollOne().progress(progress); //create a new tween based on the new size, and jump to the same progress value.  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
cloneOne();&lt;br /&gt;
GSDevTools.create();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>84.157.23.138</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=GSAP&amp;diff=25315</id>
		<title>GSAP</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=GSAP&amp;diff=25315"/>
		<updated>2021-04-16T06:49:10Z</updated>

		<summary type="html">&lt;p&gt;84.157.23.138: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Greensock Animation Plattform ==&lt;br /&gt;
GSAP ist eine Sammlung von JavaScripten zur Animation. Es ist im Moment der quasi Standard wenn es um JavaScript Manipulation von CSS Eigenschaften geht. &lt;br /&gt;
&lt;br /&gt;
GSAP ist in der Basisversion frei. Mit einem kostenpflichtigen Account bekommt man zusätzliche Plugins.&lt;br /&gt;
&lt;br /&gt;
GSAP übernimmt einem Arbeit ab, da es recht gut mit verschiedenen Browsern und Plattformen umgehen kann und außerdem performant arbeitet.&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
 https://greensock.com&lt;br /&gt;
 https://greensock.com/install&lt;br /&gt;
 [[GSAP - Snippets]]&lt;br /&gt;
 https://tympanus.net/codrops/2019/11/14/the-new-features-of-gsap-3/&lt;br /&gt;
 https://greensock.com/scrollmagic - obsolet mit ScrollTrigger&lt;br /&gt;
 https://css-tricks.com/writing-smarter-animation-code/ // *****&lt;br /&gt;
 https://css-tricks.com/tips-for-writing-animation-code-efficiently/ // *****&lt;br /&gt;
 [[GSAP - Plugins]]&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
 [[GSAP - Infinite Textbanner]]&lt;br /&gt;
&lt;br /&gt;
== Quickstart ==&lt;br /&gt;
Einbinden&lt;br /&gt;
 &amp;lt;script src=&amp;quot;https://cdnjs.cloudflare.com/ajax/libs/gsap/3.2.4/gsap.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;script src=&amp;quot;js/main.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
Einfache Animationen&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
gsap.to(&amp;quot;.logo&amp;quot;, {duration: 2, x: 300}); // Dies nennt sich eine Timeline. 300px nach rechts bewegen in 2s mit Standardwerten (ease out...)&lt;br /&gt;
gsap.to(&amp;quot;.logo&amp;quot;, {duration: 2, x: 300, backgroundColor: &amp;quot;#c2c4c8&amp;quot;}); // CSS Eigenschaften die normal ein - haben, werden als Camelcase geschrieben.&lt;br /&gt;
// Eigenschaften mit Zeichen in Anführungsstrichen. Fast alles lässt sich Animieren.&lt;br /&gt;
gsap.to(&amp;quot;.logo&amp;quot;, {duration: 2, x: 300, backgroundColor: &amp;quot;#c2c4c8&amp;quot;, borderRadius: &amp;quot;50%&amp;quot;, border: &amp;quot;4px solid white&amp;quot;});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Ease In Out&lt;br /&gt;
 https://greensock.com/docs/v3/Eases&lt;br /&gt;
 gsap.to(&amp;quot;.logo&amp;quot;, {duration: 1, x:300, ease: &amp;quot;power2.inOut&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
== Umstieg von v2 auf v3 / Codesnippets ==&lt;br /&gt;
 https://greensock.com/3-release-notes&lt;br /&gt;
Vieles wurde vereinfacht. Die meisten alten Funktionen funktionieren weiterhin. Neue Projekte sollte man in der neuen Syntax realisieren. Es kamen viele nützliche Dinge hinzu.&lt;br /&gt;
&lt;br /&gt;
=== Vereinheitlichung der Objekte ===&lt;br /&gt;
* Keine Unterscheidung mehr zwischen TweenMax und TweenMax Lite, Timeline... Es gibt &amp;#039;&amp;#039;&amp;#039;nur noch ein gsap Objekt&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
* Duration ist jetzt im Eigenschaften Objekt.&lt;br /&gt;
 //OLD - duration was 2nd parameter&lt;br /&gt;
 TweenMax.to(&amp;quot;.class&amp;quot;, 1, {x:100});&lt;br /&gt;
 //NEW - duration is now a property of the vars object&lt;br /&gt;
 gsap.to(&amp;quot;.class&amp;quot;, {duration:1, x:100});&lt;br /&gt;
* Ease ist einfacher&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//OLD ==&amp;gt; NEW&lt;br /&gt;
Elastic.easeOut ==&amp;gt; &amp;quot;elastic.out&amp;quot; //or just &amp;quot;elastic&amp;quot; because &amp;quot;.out&amp;quot; is the default flavor&lt;br /&gt;
Elastic.easeIn ==&amp;gt; &amp;quot;elastic.in&amp;quot;&lt;br /&gt;
Elastic.easeInOut ==&amp;gt; &amp;quot;elastic.inOut&amp;quot;&lt;br /&gt;
Elastic.easeOut.config(1, 0.5) ==&amp;gt; &amp;quot;elastic.out(1, 0.5)&amp;quot; //or just &amp;quot;elastic(1, 0.5)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
//and the other configurable eases are much easier!:&lt;br /&gt;
SteppedEase.config(5) ==&amp;gt; &amp;quot;steps(5)&amp;quot;&lt;br /&gt;
SlowMo.ease.config(0.5, 0.8) ==&amp;gt; &amp;quot;slow(0.5, 0.8)&amp;quot;&lt;br /&gt;
RoughEase.ease.config({points:40}) ==&amp;gt; &amp;quot;rough(40)&amp;quot;&lt;br /&gt;
ExpoScaleEase.config(0.5, 3) ==&amp;gt; &amp;quot;expoScale(0.5, 3)&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Vererbung von Timeline Eigenschaften ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
gsap.timeline({defaults:{ease:&amp;quot;back&amp;quot;, duration:2}})&lt;br /&gt;
    .to(&amp;quot;.class-1&amp;quot;, {x:100}) //inherits the ease and duration from the parent timeline!&lt;br /&gt;
    .to(&amp;quot;.class-2&amp;quot;, {y:200}) //this one too&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Staggering als Eigenschaft ===&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Staggering&amp;#039;&amp;#039;&amp;#039; in den Properties. Früher mußte man stagger Funktionen nutzen (staggerTo()...)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
gsap.to(&amp;quot;.class&amp;quot;, {&lt;br /&gt;
  x:&amp;quot;+=100&amp;quot;,&lt;br /&gt;
  duration:1,&lt;br /&gt;
  stagger: 0.5 //simple stagger of 0.5 seconds&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
//or get advanced:&lt;br /&gt;
gsap.to(&amp;quot;.class&amp;quot;, {&lt;br /&gt;
  x:&amp;quot;+=100&amp;quot;,&lt;br /&gt;
  duration:1,&lt;br /&gt;
  stagger: {&lt;br /&gt;
    amount:2,&lt;br /&gt;
    from:&amp;quot;center&amp;quot;,&lt;br /&gt;
    grid:&amp;quot;auto&amp;quot;,&lt;br /&gt;
    onComplete: myFunction //define callbacks inside the stagger to make them apply to each sub-tween&lt;br /&gt;
  }&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyframes ===&lt;br /&gt;
Anstatt mehrerer Tweens kann man auch mehrere TweenProperties als keyframes kombinieren und hat weniger Tipparbeit.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
gsap.to(&amp;quot;.class&amp;quot;, {keyframes: [ //&amp;lt;-- an array of keyframes!&lt;br /&gt;
  {x:100, duration:1},&lt;br /&gt;
  {y:200, duration:1, delay:0.5}, //create a 0.5 second gap&lt;br /&gt;
  {rotation:360, duration:2, delay:-0.25} //overlap by 0.25 seconds&lt;br /&gt;
]});&lt;br /&gt;
&amp;lt;/syntaxhighligh&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Neue Timeline Control Features ===&lt;br /&gt;
Standardmäßig startet ein Tween nachdem der vorige beendet ist. möchte man ihn gleichzeitig starten musste man früher mit Labels arbeiten, oder die Dauer wissen und ihn vorziehen. Jetzt geht das einfacher. &amp;#039;&amp;#039;&amp;#039;Man kann eine nachfolgende Animation relativ zum Endpunkt ODER zum Startpunkt der vorigen positionieren.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;quot;&amp;lt;&amp;quot; references the most recently-added animation&amp;#039;s START time&lt;br /&gt;
* &amp;quot;&amp;gt;&amp;quot; references the most recently-added animation&amp;#039;s END time&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
var tl = gsap.timeline();&lt;br /&gt;
tl.to(...)&lt;br /&gt;
  .to(..., &amp;quot;&amp;quot;) //starts immediately after the previous tween&amp;#039;s end time (sequenced)&lt;br /&gt;
  .to(..., &amp;quot;&amp;gt;-0.5&amp;quot;) //overlaps with the previous tween by 0.5 seconds (because the number is negative)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Globale Timeline kontrollieren ===&lt;br /&gt;
 gsap.globalTimeline.timeScale(0.1); //slow everything down&lt;br /&gt;
 gsap.globalTimeline.pause(); //stop everything, though you might want to use gsap.exportRoot() instead so that you can exclude delayedCalls()&lt;br /&gt;
&lt;br /&gt;
=== Sinnvollere Aliase ===&lt;br /&gt;
* Sinnvollere Aliase für CSS-Eigenschaften: x -&amp;gt; translateX, y -&amp;gt; translateY, rotate -&amp;gt; rotation&lt;br /&gt;
Geschickte Shortcuts für Rotation:&lt;br /&gt;
 rotation:&amp;quot;270_short&amp;quot; //animates in the shortest direction!&lt;br /&gt;
 rotation:&amp;quot;270_cw&amp;quot;    //animates clockwise&lt;br /&gt;
 rotation:&amp;quot;270_ccw&amp;quot;   //animates counter-clockwise&lt;br /&gt;
Einheiten für x und y Transformationen möglich:&lt;br /&gt;
 gsap.to(&amp;quot;.class&amp;quot;, {&lt;br /&gt;
   x:&amp;quot;50vw&amp;quot;, //units! (default is px)&lt;br /&gt;
   y:&amp;quot;5em&amp;quot;&lt;br /&gt;
 });&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MotionPathPlugin&amp;#039;&amp;#039;&amp;#039; ersetzt BezierPlugin. Hat zusätzlich einen &amp;#039;&amp;#039;&amp;#039;Editor&amp;#039;&amp;#039;&amp;#039; (nur Club Members)&lt;br /&gt;
* Neue &amp;#039;&amp;#039;&amp;#039;random&amp;#039;&amp;#039;&amp;#039; Funktion&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;getProperty&amp;#039;&amp;#039;&amp;#039; Funktion mit Konvertierung von Einheiten&lt;br /&gt;
* Es lassen sich &amp;quot;&amp;#039;&amp;#039;&amp;#039;effects&amp;#039;&amp;#039;&amp;#039;&amp;quot; definieren, die man dann als Animation / Timeline wieder verwenden kann. Auch Parameter kann man nutzen.&lt;br /&gt;
* Man kann jetzt width und height von DOM Objekten animieren die mit &amp;quot;&amp;#039;&amp;#039;&amp;#039;auto&amp;#039;&amp;#039;&amp;#039;&amp;quot; definiert sind.&lt;br /&gt;
* Snap Plugin - bietet mehrere Möglichkeiten auf bestimmte Werte zu runden (in Array, in der Nähe...)&lt;br /&gt;
* Zahlreiche nützliche Utility Funktionen&lt;/div&gt;</summary>
		<author><name>84.157.23.138</name></author>
	</entry>
</feed>