<?xml version="1.0"?>
<rss version="2.0"><channel><title>GSAP Latest Topics</title><link>https://gsap.com/community/forums/forum/11-gsap/</link><description>GSAP Latest Topics</description><language>en</language><item><title>Tried using useGSAP hook in framer for components</title><link>https://gsap.com/community/forums/topic/45573-tried-using-usegsap-hook-in-framer-for-components/</link><description><![CDATA[<p>
	It might be platform specific that I can't import the useGSAP hook in there. Since I cant install packages in framer. I used the esm link<br />
	 
</p>

<div style="background-color:rgb(17,17,17);font-size:14px;">
	<div>
		<div style="background-color:#111111;color:#dddddd;font-size:14px;">
			<div>
				<span style="color:#00bbff;">import</span><span style="color:#dddddd;"> </span><span style="color:#999999;">{</span><span style="color:#dddddd;"> addPropertyControls</span><span style="color:#999999;">,</span><span style="color:#dddddd;"> ControlType </span><span style="color:#999999;">}</span><span style="color:#dddddd;"> </span><span style="color:#00bbff;">from</span><span style="color:#dddddd;"> </span><span style="color:#bb88ff;">"framer"</span>
			</div>

			<div>
				<span style="color:#00bbff;">import</span><span style="color:#dddddd;"> </span><span style="color:#999999;">{</span><span style="color:#dddddd;"> motion </span><span style="color:#999999;">}</span><span style="color:#dddddd;"> </span><span style="color:#00bbff;">from</span><span style="color:#dddddd;"> </span><span style="color:#bb88ff;">"framer-motion"</span>
			</div>

			<div>
				<span style="color:#00bbff;">import</span><span style="color:#dddddd;"> </span><span style="color:#999999;">{</span><span style="color:#dddddd;"> useGSAP </span><span style="color:#999999;">}</span><span style="color:#dddddd;"> </span><span style="color:#00bbff;">from</span><span style="color:#dddddd;"> </span><span style="color:#bb88ff;">"https://cdn.jsdelivr.net/npm/<a href="https://www.npmjs.com/package/@gsap/react" rel="external nofollow">@gsap/react</a>@2.1.2/+esm"</span>
			</div>

			<div>
				 
			</div>

			<div>
				<span style="color:#00bbff;">export</span><span style="color:#dddddd;"> </span><span style="color:#00bbff;">default</span><span style="color:#dddddd;"> </span><span style="color:#22ccdd;">function</span><span style="color:#dddddd;"> </span><span style="color:#ffcc66;">Gsap</span><span style="color:#999999;">({</span><span style="color:#dddddd;"> </span><span style="color:#9cdcfe;">tint</span><span style="color:#dddddd;"> </span><span style="color:#999999;">})</span><span style="color:#dddddd;"> </span><span style="color:#999999;">{</span>
			</div>

			<div>
				<span style="color:#22ccdd;">const</span><span style="color:#dddddd;"> </span><span style="color:#999999;">{</span><span style="color:#dddddd;"> contextSafe </span><span style="color:#999999;">}</span><span style="color:#dddddd;"> </span><span style="color:#999999;">=</span><span style="color:#dddddd;"> </span><span style="color:#ffcc66;">useGSAP</span><span style="color:#999999;">()    //think just crashes in preview</span>
			</div>

			<div>
				 
			</div>

			<div>
				<span style="color:#999999;">return (</span>
			</div>

			<div>
				<span style="color:#999999;"> ////code here</span>
			</div>

			<div>
				<span style="color:#999999;">)</span>
			</div>
			}
		</div>
		I just get an error, so may its not possible or compatible with framer.
	</div>
</div>
]]></description><guid isPermaLink="false">45573</guid><pubDate>Fri, 09 Oct 2026 16:01:49 +0000</pubDate></item><item><title>Text selection with smooth rounded highlights using JS</title><link>https://gsap.com/community/forums/topic/45572-text-selection-with-smooth-rounded-highlights-using-js/</link><description><![CDATA[<p>
	Hi guys,
</p>

<p>
	 
</p>

<p>
	Have a look:
</p>

<p>
	 
</p>

<p>
	<a href="https://github.com/devieffe/VisualSelectionLayer" rel="external nofollow">https://github.com/devieffe/VisualSelectionLayer</a>
</p>

<p>
	 
</p>

<p>
	JS that replaces native text selection highlights with smooth,
</p>

<p>
	unified selections featuring rounded corners, customizable padding,
</p>

<p>
	colors, and animation effects.
</p>

<p>
	 
</p>

<p>
	Supports plain HTML, React, and GSAP with zero dependencies.
</p>

<p>
	 
</p>

<p>
	You'll want it for your projects.
</p>




<p data-height="450" data-slug-hash="01a11b28-e88b-74b9-b587-37fc0b64fb94" data-user="editor" class='codepen' data-tab-bar-color="#222" data-default-tab="html,result">
    <span>See the Pen <a href='https://codepen.io/editor/devieffe/pen/01a11b28-e88b-74b9-b587-37fc0b64fb94'>01a11b28-e88b-74b9-b587-37fc0b64fb94</a> by editor (<a href='https://codepen.io/editor'>@editor</a>) on <a href='https://codepen.io'>CodePen</a>.</span>
</p>

]]></description><guid isPermaLink="false">45572</guid><pubDate>Thu, 08 Oct 2026 14:08:47 +0000</pubDate></item><item><title>I am trying to figure out why the starting point of an animation is different when when played via standalone tween vs with a Scroll Trigger but I am stuck please help.</title><link>https://gsap.com/community/forums/topic/45570-i-am-trying-to-figure-out-why-the-starting-point-of-an-animation-is-different-when-when-played-via-standalone-tween-vs-with-a-scroll-trigger-but-i-am-stuck-please-help/</link><description><![CDATA[<p>
	Hi! sorry if I do post a lot, I am just really stuck with this and I did a bunch of attempts to fix or figure out what is happening but no luck so I decided to post here again. <br />
	<br />
	currently I am at the Creative Coding Club - Responsive Split Screening(part 2) lesson of ScrollTrigger Express.<br />
	<br />
	I haven't really start to add scrub because there is a problem with my animation.<br />
	so on the CCC Lesson it used something like this (this is just the minimal code)
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="com">//photos does not include the first child.</span><span class="pln">
gsap</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="pln">photos</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">yPercent</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">})</span><span class="pln">

</span><span class="kwd">const</span><span class="pln"> animation </span><span class="pun">=</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">photos</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">yPercent</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">})</span><span class="pln">

</span><span class="typ">ScrollTrigger</span><span class="pun">.</span><span class="pln">create</span><span class="pun">({</span><span class="pln">animation</span><span class="pun">:</span><span class="pln"> animation</span><span class="pun">});</span></pre>

<p>
	<br />
	now I recreated it.<br />
	it works as it should when tween standalone played without Scroll Trigger<br />
	<br />
	The animation goes like this <br />
	inside the center div (photo frame)<br />
	a bunch of div inner elements(photo) is stacked on top of each other because of absolute position.<br />
	using gsap, it moves all the elements (except the first child) to yPercent of 100..<br />
	then it animates back to yPercent of 0 with stagger. it is simple and pretty much straight forward.<br />
	<br />
	now when I put the animation in scroll trigger the starting point of an animation is set to a different yPercent.<br />
	it kind of animate from yPercent of 100 to yPercent of 0 but the first child which is supposed to be y:Percent 0 looks like -100.  the fix that I have right now is to set the to-Tween as yPercent of -100 to stack these photo elements on top of each other again.<br />
	<br />
	I'll put the <a href="https://gsap.com/demo" rel="external nofollow">minimal demo</a> on stackblitz<br />
	<a href="https://stackblitz.com/edit/stackblitz-starters-z6u7z7rp?file=components/SplitScreenPinningDemo.tsx" rel="external nofollow">https://stackblitz.com/edit/stackblitz-starters-z6u7z7rp?file=components%2FSplitScreenPinningDemo.tsx</a><br />
	<br />
	I'll provide my interpretation as image to elaborte things.
</p>

<p><a href="https://gsap.com/community/uploads/monthly_2026_10/Frame1604.png.1df8846a1bdb60cd56a198e5840b2625.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="15059" src="https://gsap.com/community/uploads/monthly_2026_10/Frame1604.png.1df8846a1bdb60cd56a198e5840b2625.png" data-ratio="50.93" width="860" class="ipsImage ipsImage_thumbnailed" alt="Frame 1604.png"></a></p>]]></description><guid isPermaLink="false">45570</guid><pubDate>Wed, 07 Oct 2026 10:16:57 +0000</pubDate></item><item><title>How to properly rotate an SVG using GSAP?</title><link>https://gsap.com/community/forums/topic/45567-how-to-properly-rotate-an-svg-using-gsap/</link><description><![CDATA[<p>
	Hi I am writing this post because of a curiosity in mind. <br />
	<br />
	so I have an SVG of fish that I want to flip (a group of individual elements).. I already got a working code but I want to understand why my first attempt did not work. <br />
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="kwd">const</span><span class="pln"> fishSchoolLeft </span><span class="pun">=</span><span class="pln"> container</span><span class="pun">.</span><span class="pln">current</span><span class="pun">?.</span><span class="pln">querySelectorAll</span><span class="pun">(</span><span class="pln">
        </span><span class="str">"#fish-school-left &gt; *"</span><span class="pun">,</span><span class="pln">
      </span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">fishSchoolLeft</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln"> 

</span><span class="com">//set is used to test if it works</span><span class="pln">
 gsap</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="pln">fishSchoolLeft</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> rotateY</span><span class="pun">:</span><span class="pln"> </span><span class="lit">90</span><span class="pun">,</span><span class="pln"> transformPerspective</span><span class="pun">:</span><span class="pln"> </span><span class="lit">800</span><span class="pln"> </span><span class="pun">})</span><span class="pln">
</span></pre>

<p>
	so It did not work I even put a perspective on the group #fish-school-left and even added preserve-3d but no luck. <br />
	<br />
	with some research I found a workaround without the need of 3d, perspective stuff.<br />
	this is the one that worked on me:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="pln">      gsap</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="pln">fishSchoolLeft</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        scaleX</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">,</span><span class="pln">
        transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"center center"</span><span class="pun">,</span><span class="pln">
      </span><span class="pun">});</span></pre>

<p>
	<br />
	may I ask why is my first attempt did not work? is there a step I missed? <br />
	for reference this is the group SVG<br />
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="pln">  </span><span class="tag">&lt;g</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"fish-school-left"</span><span class="tag">&gt;</span><span class="pln">
            </span><span class="tag">&lt;g</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"fish-small_18"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Subtract_18"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M942.336 1333C942.336 1334.33 944.052 1335.4 946.169 1335.4C948.247 1335.4 949.938 1334.36 950 1333.07V1337H927V1333C927 1334.33 928.716 1335.4 930.833 1335.4C932.884 1335.4 934.56 1334.39 934.662 1333.12L934.665 1333.04C934.696 1334.34 936.399 1335.4 938.497 1335.4C940.548 1335.4 942.224 1334.39 942.326 1333.12L942.331 1333H942.336Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Polygon 9_18"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M957.816 1345.51C957.136 1345.15 957.102 1344.19 957.755 1343.78L966.775 1338.15C967.427 1337.74 968.277 1338.19 968.304 1338.96L968.675 1349.59C968.702 1350.36 967.886 1350.87 967.206 1350.51L957.816 1345.51Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;ellipse</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 107_18"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{938}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1345}</span><span class="pln">
                </span><span class="atn">rx</span><span class="pun">=</span><span class="atv">{24}</span><span class="pln">
                </span><span class="atn">ry</span><span class="pun">=</span><span class="atv">{10}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;circle</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 108_18"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{923}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1342}</span><span class="pln">
                </span><span class="atn">r</span><span class="pun">=</span><span class="atv">{2}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#747474"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Rectangle 347_7"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M937.5 1346H942.5L944.232 1354C944.232 1354 940.5 1353.5 939.5 1351.5C938.5 1349.5 937.5 1346 937.5 1346Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
            </span><span class="tag">&lt;/g&gt;</span><span class="pln">
            </span><span class="tag">&lt;g</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"fish-small_19"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Subtract_19"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M990.652 1367C990.653 1369.23 993.538 1371.04 997.099 1371.04C1000.61 1371.04 1003.46 1369.28 1003.54 1367.09V1373.73H964.859V1367C964.86 1369.23 967.746 1371.04 971.307 1371.04C974.837 1371.04 977.702 1369.26 977.751 1367.06C977.8 1369.26 980.666 1371.04 984.196 1371.04C987.757 1371.04 990.643 1369.23 990.644 1367V1367H990.652V1367Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Polygon 9_19"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M1015.65 1387.49C1014.97 1387.13 1014.93 1386.17 1015.58 1385.76L1032.76 1375.03C1033.41 1374.62 1034.26 1375.07 1034.29 1375.84L1034.99 1396.08C1035.02 1396.85 1034.2 1397.36 1033.52 1397L1015.65 1387.49Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;ellipse</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 107_19"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{983.364}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1387.19}</span><span class="pln">
                </span><span class="atn">rx</span><span class="pun">=</span><span class="atv">{40.3636}</span><span class="pln">
                </span><span class="atn">ry</span><span class="pun">=</span><span class="atv">{16.8182}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;circle</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 108_19"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{958.137}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1382.14}</span><span class="pln">
                </span><span class="atn">r</span><span class="pun">=</span><span class="atv">{3.36364}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#747474"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Rectangle 347_8"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M982.523 1388.87H990.933L993.846 1402.32C993.846 1402.32 987.569 1401.48 985.887 1398.12C984.205 1394.75 982.523 1388.87 982.523 1388.87Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
            </span><span class="tag">&lt;/g&gt;</span><span class="pln">
            </span><span class="tag">&lt;g</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"fish-small_20"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Subtract_20"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M870.812 1362C870.812 1363.44 872.678 1364.61 874.98 1364.61C877.271 1364.61 879.13 1363.46 879.149 1362.03V1366.35H854.133V1362C854.133 1363.44 855.999 1364.61 858.302 1364.61C860.587 1364.61 862.442 1363.46 862.47 1362.04C862.498 1363.46 864.353 1364.61 866.639 1364.61C868.941 1364.61 870.809 1363.44 870.809 1362V1362H870.812V1362Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Polygon 9_20"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M887.525 1375.54C886.845 1375.18 886.812 1374.22 887.465 1373.81L897.533 1367.52C898.185 1367.11 899.035 1367.56 899.062 1368.33L899.476 1380.2C899.503 1380.97 898.687 1381.48 898.007 1381.12L887.525 1375.54Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;ellipse</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 107_20"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{866.105}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1375.06}</span><span class="pln">
                </span><span class="atn">rx</span><span class="pun">=</span><span class="atv">{26.1046}</span><span class="pln">
                </span><span class="atn">ry</span><span class="pun">=</span><span class="atv">{10.8769}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;circle</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 108_20"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{849.793}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1371.79}</span><span class="pln">
                </span><span class="atn">r</span><span class="pun">=</span><span class="atv">{2.17538}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#747474"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Rectangle 347_9"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M865.562 1376.14H871.001L872.885 1384.84C872.885 1384.84 868.826 1384.3 867.738 1382.12C866.65 1379.95 865.562 1376.14 865.562 1376.14Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
            </span><span class="tag">&lt;/g&gt;</span><span class="pln">
            </span><span class="tag">&lt;g</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"fish-small_21"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Subtract_21"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M906.022 1407C906.022 1407.84 907.115 1408.53 908.462 1408.53C909.802 1408.53 910.888 1407.85 910.899 1407.01V1409.54H896.266V1407C896.266 1407.84 897.358 1408.53 898.705 1408.53C900.049 1408.53 901.137 1407.85 901.143 1407.01C901.148 1407.85 902.237 1408.53 903.581 1408.53C904.928 1408.53 906.02 1407.84 906.021 1407V1407H906.022Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Polygon 9_21"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M916.434 1415.26C915.755 1414.9 915.721 1413.94 916.374 1413.53L921.044 1410.61C921.697 1410.2 922.546 1410.66 922.573 1411.43L922.766 1416.93C922.792 1417.7 921.976 1418.21 921.297 1417.85L916.434 1415.26Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;ellipse</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 107_21"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{903.27}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1414.64}</span><span class="pln">
                </span><span class="atn">rx</span><span class="pun">=</span><span class="atv">{15.27}</span><span class="pln">
                </span><span class="atn">ry</span><span class="pun">=</span><span class="atv">{6.36249}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;circle</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 108_21"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{893.726}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1412.73}</span><span class="pln">
                </span><span class="atn">r</span><span class="pun">=</span><span class="atv">{1.2725}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#747474"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Rectangle 347_10"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M902.953 1415.27H906.134L907.236 1420.36C907.236 1420.36 904.862 1420.05 904.226 1418.77C903.589 1417.5 902.953 1415.27 902.953 1415.27Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
            </span><span class="tag">&lt;/g&gt;</span><span class="pln">
            </span><span class="tag">&lt;g</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"fish-small_22"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Subtract_22"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M876.022 1452C876.022 1452.84 877.115 1453.53 878.462 1453.53C879.802 1453.53 880.888 1452.85 880.899 1452.01V1454.54H866.266V1452C866.266 1452.84 867.358 1453.53 868.705 1453.53C870.049 1453.53 871.137 1452.85 871.143 1452.01C871.148 1452.85 872.237 1453.53 873.581 1453.53C874.928 1453.53 876.02 1452.84 876.021 1452V1452H876.022Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Polygon 9_22"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M886.434 1460.26C885.755 1459.9 885.721 1458.94 886.374 1458.53L891.044 1455.61C891.697 1455.2 892.546 1455.66 892.573 1456.43L892.766 1461.93C892.792 1462.7 891.976 1463.21 891.297 1462.85L886.434 1460.26Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;ellipse</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 107_22"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{873.27}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1459.64}</span><span class="pln">
                </span><span class="atn">rx</span><span class="pun">=</span><span class="atv">{15.27}</span><span class="pln">
                </span><span class="atn">ry</span><span class="pun">=</span><span class="atv">{6.36249}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;circle</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 108_22"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{863.726}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1457.73}</span><span class="pln">
                </span><span class="atn">r</span><span class="pun">=</span><span class="atv">{1.2725}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#747474"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Rectangle 347_11"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M872.953 1460.27H876.134L877.236 1465.36C877.236 1465.36 874.862 1465.05 874.226 1463.77C873.589 1462.5 872.953 1460.27 872.953 1460.27Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
            </span><span class="tag">&lt;/g&gt;</span><span class="pln">
            </span><span class="tag">&lt;g</span><span class="pln"> </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"fish-small_23"</span><span class="tag">&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Subtract_23"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M995.022 1448C995.022 1448.84 996.115 1449.53 997.462 1449.53C998.802 1449.53 999.888 1448.85 999.899 1448.01V1450.54H985.266V1448C985.266 1448.84 986.358 1449.53 987.705 1449.53C989.049 1449.53 990.137 1448.85 990.143 1448.01C990.148 1448.85 991.237 1449.53 992.581 1449.53C993.928 1449.53 995.02 1448.84 995.021 1448V1448H995.022Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Polygon 9_23"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M1005.43 1456.26C1004.75 1455.9 1004.72 1454.94 1005.37 1454.53L1010.04 1451.61C1010.7 1451.2 1011.55 1451.66 1011.57 1452.43L1011.77 1457.93C1011.79 1458.7 1010.98 1459.21 1010.3 1458.85L1005.43 1456.26Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;ellipse</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 107_23"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{992.27}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1455.64}</span><span class="pln">
                </span><span class="atn">rx</span><span class="pun">=</span><span class="atv">{15.27}</span><span class="pln">
                </span><span class="atn">ry</span><span class="pun">=</span><span class="atv">{6.36249}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#A8C6DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;circle</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Ellipse 108_23"</span><span class="pln">
                </span><span class="atn">cx</span><span class="pun">=</span><span class="atv">{982.726}</span><span class="pln">
                </span><span class="atn">cy</span><span class="pun">=</span><span class="atv">{1453.73}</span><span class="pln">
                </span><span class="atn">r</span><span class="pun">=</span><span class="atv">{1.2725}</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#747474"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
              </span><span class="tag">&lt;path</span><span class="pln">
                </span><span class="atn">id</span><span class="pun">=</span><span class="atv">"Rectangle 347_12"</span><span class="pln">
                </span><span class="atn">d</span><span class="pun">=</span><span class="atv">"M991.953 1456.27H995.134L996.236 1461.36C996.236 1461.36 993.862 1461.05 993.226 1459.77C992.589 1458.5 991.953 1456.27 991.953 1456.27Z"</span><span class="pln">
                </span><span class="atn">fill</span><span class="pun">=</span><span class="atv">"#C1D7DB"</span><span class="pln">
              </span><span class="tag">/&gt;</span><span class="pln">
            </span><span class="tag">&lt;/g&gt;</span><span class="pln">
          </span><span class="tag">&lt;/g&gt;</span></pre>

<p>
	any insights is appreciated. thank you!
</p>
]]></description><guid isPermaLink="false">45567</guid><pubDate>Fri, 02 Oct 2026 12:59:29 +0000</pubDate></item><item><title>Reveal Batches</title><link>https://gsap.com/community/forums/topic/45566-reveal-batches/</link><description><![CDATA[<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="pln">gsap</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="str">".view"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> x</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pln"> </span><span class="pun">});</span><span class="pln">
		</span><span class="typ">ScrollTrigger</span><span class="pun">.</span><span class="pln">batch</span><span class="pun">(</span><span class="str">".view"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
			onEnter</span><span class="pun">:</span><span class="pln"> batch </span><span class="pun">=&gt;</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">batch</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> x</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> stagger</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.25</span><span class="pun">,</span><span class="pln"> overwrite</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">}),</span><span class="pln">
			onLeave</span><span class="pun">:</span><span class="pln"> batch </span><span class="pun">=&gt;</span><span class="pln"> gsap</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="pln">batch</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> x</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">,</span><span class="pln"> overwrite</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">}),</span><span class="pln">
			onEnterBack</span><span class="pun">:</span><span class="pln"> batch </span><span class="pun">=&gt;</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">batch</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> x</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> stagger</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.25</span><span class="pun">,</span><span class="pln"> overwrite</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">}),</span><span class="pln">
			onLeaveBack</span><span class="pun">:</span><span class="pln"> batch </span><span class="pun">=&gt;</span><span class="pln"> gsap</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="pln">batch</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> x</span><span class="pun">:</span><span class="pln"> </span><span class="lit">50</span><span class="pun">,</span><span class="pln"> overwrite</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pln"> </span><span class="pun">}),</span><span class="pln">
		</span><span class="pun">});</span></pre>

<p>
	Can anyone tell me whether this approach can explicitly and unreservedly represent the required objective?
</p>
]]></description><guid isPermaLink="false">45566</guid><pubDate>Mon, 28 Sep 2026 20:57:01 +0000</pubDate></item><item><title>My ScrollTrigger Start: Top and End: Bottom seems to be getting out of sync when I stretch the width of the browser back and forth.</title><link>https://gsap.com/community/forums/topic/45562-my-scrolltrigger-start-top-and-end-bottom-seems-to-be-getting-out-of-sync-when-i-stretch-the-width-of-the-browser-back-and-forth/</link><description><![CDATA[<p>
	Hi! Apologies if I post more often. I am currently at the CreativeCodingClub lesson <strong>Change Nav Color on Scroll: Part 2 Responsive</strong><br />
	<br />
	on the part 1 of the lesson Its already responsive on my part because I use tailwind and I am trying to figure out how to make it respond to colors as I stretch the screen. doesn't have much of a luck but I know the logic I just don't know how to execute it. so I finished the Part 2 and followed the code. <br />
	<br />
	This is made on react so its a bit different from the tutorial made in codepen, (I don't think I can show up the problem in code pen)<br />
	please disregard the comments I still tweak things to fix the problem I am having right now but I want to let you know that this code work.
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> useGSAP </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"@gsap/react"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> gsap </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">ScrollTrigger</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap/ScrollTrigger"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="typ">React</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> useRef </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"react"</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">const</span><span class="pln"> navItems</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="str">"Home"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Works"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Profile"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Downloads"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"About"</span><span class="pun">];</span><span class="pln">
</span><span class="kwd">const</span><span class="pln"> sectionBgColor</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
  </span><span class="str">"skyblue"</span><span class="pun">,</span><span class="pln">
  </span><span class="str">"green"</span><span class="pun">,</span><span class="pln">
  </span><span class="str">"salmon"</span><span class="pun">,</span><span class="pln">
  </span><span class="str">"violet"</span><span class="pun">,</span><span class="pln">
  </span><span class="str">"pink"</span><span class="pun">,</span><span class="pln">
</span><span class="pun">];</span><span class="pln">

</span><span class="kwd">const</span><span class="pln"> navColor</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">[]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[</span><span class="pln">
  </span><span class="str">"#bae6fd"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// Slightly darker skyblue (Tailwind sky-200)</span><span class="pln">
  </span><span class="str">"#bbf7d0"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// Slightly darker green (Tailwind green-200)</span><span class="pln">
  </span><span class="str">"#ff9e85"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// Slightly darker soft salmon pink</span><span class="pln">
  </span><span class="str">"#e9d5ff"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// Slightly darker violet (Tailwind purple-200)</span><span class="pln">
  </span><span class="str">"#f472b6"</span><span class="pun">,</span><span class="pln"> </span><span class="com">// Medium pink (Tailwind pink-400)</span><span class="pln">
</span><span class="pun">];</span><span class="pln">

gsap</span><span class="pun">.</span><span class="pln">registerPlugin</span><span class="pun">(</span><span class="typ">ScrollTrigger</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">export</span><span class="pln"> </span><span class="kwd">default</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="typ">ColorNav</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> container </span><span class="pun">=</span><span class="pln"> useRef</span><span class="pun">&lt;</span><span class="typ">HTMLDivElement</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">&gt;(</span><span class="kwd">null</span><span class="pun">);</span><span class="pln">

  useGSAP</span><span class="pun">(</span><span class="pln">
    </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">container</span><span class="pun">.</span><span class="pln">current</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> fullScreenDiv </span><span class="pun">=</span><span class="pln"> container</span><span class="pun">.</span><span class="pln">current</span><span class="pun">.</span><span class="pln">querySelectorAll</span><span class="pun">(</span><span class="str">".fullscreen"</span><span class="pun">);</span><span class="pln">

      </span><span class="com">//sets the color section of div viewport</span><span class="pln">
      gsap</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="pln">fullScreenDiv</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        backgroundColor</span><span class="pun">:</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">utils</span><span class="pun">.</span><span class="pln">wrap</span><span class="pun">(</span><span class="pln">sectionBgColor</span><span class="pun">),</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">

      </span><span class="com">//get the nav height</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> navElem </span><span class="pun">=</span><span class="pln"> container</span><span class="pun">.</span><span class="pln">current</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">"nav"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">navElem</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">

      </span><span class="kwd">let</span><span class="pln"> navHeight</span><span class="pun">:</span><span class="pln"> number </span><span class="pun">=</span><span class="pln"> navElem</span><span class="pun">.</span><span class="pln">offsetHeight</span><span class="pun">;</span><span class="pln">

      </span><span class="com">// //refresh when value change</span><span class="pln">
      </span><span class="com">// // ScrollTrigger.addEventListener("refreshInit", () =&gt; {</span><span class="pln">
      </span><span class="com">// //   navHeight = navElem?.offsetHeight ?? 0;</span><span class="pln">
      </span><span class="com">// // });</span><span class="pln">

      </span><span class="com">//on each loop create a dedicated scroll trigger to each section</span><span class="pln">
      navItems</span><span class="pun">.</span><span class="pln">forEach</span><span class="pun">((</span><span class="pln">item</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">ScrollTrigger</span><span class="pun">.</span><span class="pln">create</span><span class="pun">({</span><span class="pln">
          trigger</span><span class="pun">:</span><span class="pln"> fullScreenDiv</span><span class="pun">[</span><span class="pln">index</span><span class="pun">],</span><span class="pln">
          animation</span><span class="pun">:</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">navElem</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> backgroundColor</span><span class="pun">:</span><span class="pln"> navColor</span><span class="pun">[</span><span class="pln">index</span><span class="pun">]</span><span class="pln"> </span><span class="pun">}),</span><span class="pln">
          start</span><span class="pun">:</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">`top ${navHeight}`</span><span class="pun">,</span><span class="pln">
          </span><span class="kwd">end</span><span class="pun">:</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="str">`bottom ${navHeight}`</span><span class="pun">,</span><span class="pln">
          markers</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
          toggleActions</span><span class="pun">:</span><span class="pln"> </span><span class="str">"restart none none reverse"</span><span class="pun">,</span><span class="pln">
          immediateRender</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">});</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">

      </span><span class="typ">ScrollTrigger</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">"refreshInit"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        navHeight </span><span class="pun">=</span><span class="pln"> navElem</span><span class="pun">.</span><span class="pln">offsetHeight</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">

      </span><span class="com">// ScrollTrigger.refresh();</span><span class="pln">
    </span><span class="pun">},</span><span class="pln">
    </span><span class="pun">{</span><span class="pln"> scope</span><span class="pun">:</span><span class="pln"> container </span><span class="pun">},</span><span class="pln">
  </span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">ref</span><span class="pun">={</span><span class="pln">container</span><span class="pun">}&gt;</span><span class="pln">
      </span><span class="pun">&lt;</span><span class="pln">nav className</span><span class="pun">=</span><span class="str">"nav-wrapper bg-amber-200 flex lg:flex-row flex-col justify-center items-center p-10 gap-20 sticky top-0"</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">navItems</span><span class="pun">.</span><span class="pln">map</span><span class="pun">((</span><span class="pln">item</span><span class="pun">,</span><span class="pln"> index</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">div key</span><span class="pun">={</span><span class="pln">index</span><span class="pun">}</span><span class="pln"> className</span><span class="pun">=</span><span class="str">"text-2xl"</span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">a
                href</span><span class="pun">={</span><span class="str">`#${item.toLowerCase()}`</span><span class="pun">}</span><span class="pln">
                onClick</span><span class="pun">={()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                  console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"clicked"</span><span class="pun">);</span><span class="pln">
                </span><span class="pun">}}</span><span class="pln">
              </span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">{</span><span class="pln">item</span><span class="pun">}</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="str">/a&gt;
            &lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">);</span><span class="pln">
        </span><span class="pun">})}</span><span class="pln">
      </span><span class="pun">&lt;</span><span class="str">/nav&gt;
      {sectionBgColor.map((item, index) =&gt; {
        return (
          &lt;div
            id={navItems[index].toLowerCase()}
            key={index}
            className="fullscreen w-full h-dvh bg-gray-400 text-4xl flex flex-col justify-center items-center uppercase"
          &gt;
            {item} - {navItems[index]}
          &lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">);</span><span class="pln">
      </span><span class="pun">})}</span><span class="pln">
    </span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
  </span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	The animation goes like this:<br />
	-the nav bar turns a light version of color when it scroll through the section of viewport divs. if the div is color orange the nav will turn to color light orange.<br />
	-the nav is responsive for narrow width the items in nav transform into flex column while on wider screen it transform to flex row. basically the column has higher height value.<br />
	-Each div has scroll trigger in it that has a trigger point according to the height of the nav <br />
	so when it is turned to column (for example it turns height to 500px) then the trigger point of animation is after 500px.<br />
	<br />
	now while playing with it I found a problem, from column to row adjusting the width of my browser I noticed that the start:top and end:bottom of the divs goes out of sync, it is really difficult to explain here please bear with me.<br />
	<br />
	I created the project in NextJS so technically I create components that is similar to the lessons I am learning right now.<br />
	so on my project I have this  (this might be irrelevant but I want to share it here regardless..)<br />
	the container is a locomotive scroll to be applied for the whole project
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="pln">    </span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">ref</span><span class="pun">=</span><span class="atv">{container}</span><span class="tag">&gt;</span><span class="pln">
      </span><span class="tag">&lt;PinSpacingDemo</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
      </span><span class="tag">&lt;BlankDiv</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
      </span><span class="tag">&lt;ParallaxDemo</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
      </span><span class="tag">&lt;BlankDiv</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
      </span><span class="tag">&lt;MultiSectionScroll</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
      </span><span class="tag">&lt;LocomotiveScrollDemo</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
      </span><span class="tag">&lt;ScrollIntro</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
      </span><span class="tag">&lt;BlankDiv</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
      </span><span class="tag">&lt;SectionDemo</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
      </span><span class="tag">&lt;BlankDiv</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
      </span><span class="tag">&lt;ColorNav</span><span class="pln"> </span><span class="tag">/&gt;</span><span class="pln">
    </span><span class="tag">&lt;/div&gt;</span></pre>

<p>
	<br />
	 the problem I noticed was when I change the width of the browser back and forth while I am scrolling in the middle (3rd color div) the start and end of the animation goes above my component , for context with markers I can see the first start-end at the div of the SectionDemo making the nav change color out of sync, I attached a photo.<br />
	<br />
	I am not sure why this happens maybe its because I am stacking it with other components? it works well like on the tutorial when I commented the rest of my components. on this scenario.. is it really not advice to stack up components with scroll trigger or at least components that has creating/chainging the config of scroll trigger dynamically?<br />
	because I had a problem with some of my scrollTrigger components when it is stacked up to pages.tsx of NextJS. for example the ScrollIntro is a component that plays a timeline before it create a scroll trigger and unhide the div of below it so when I stack it up with other components, the ScrollIntro will by default be scrollable, had this problem where I can't scroll to the bottom maybe because the created scrollTrigger get a new calculation. I gave up on fixing it maybe it just supposed to work when its on the top of the component.<br />
	<br />
	I apologize for the messy post. tldr; it has a problem on scrolling with other stacked components.
</p>

<p>
	 
</p>

<p><a href="https://gsap.com/community/uploads/monthly_2026_09/820036606_1402479661371016_1002171832808722790_n.png.94f7c65cfacd53e0cbaaed227a3db90d.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="15047" src="https://gsap.com/community/uploads/monthly_2026_09/820036606_1402479661371016_1002171832808722790_n.thumb.png.dfb471b107d593cf53a9c3099f597890.png" data-ratio="48.4" width="1000" class="ipsImage ipsImage_thumbnailed" alt="820036606_1402479661371016_1002171832808722790_n.png"></a></p>]]></description><guid isPermaLink="false">45562</guid><pubDate>Thu, 24 Sep 2026 09:23:53 +0000</pubDate></item><item><title>Using GSAP to Improve the Interactive Documentation on a Roblox Scripting Resource</title><link>https://gsap.com/community/forums/topic/45565-using-gsap-to-improve-the-interactive-documentation-on-a-roblox-scripting-resource/</link><description><![CDATA[<p>
	Hi GSAP community,
</p>

<p>
	I’m currently working on a <span><a href="https://officialfluxusteam.com/" rel="external nofollow">Roblox scripting</a></span> resource website that contains documentation and guides covering Fluxus, Lua/Luau scripting, script-editor features, installation information, compatibility, and troubleshooting.
</p>

<p>
	I’m using GSAP to improve the presentation of the documentation rather than relying entirely on static sections. One area I’m experimenting with is an interactive feature section where users can switch between different topics and see the relevant content animate into view.
</p>

<p>
	For example, the interface has sections similar to:
</p>

<ul>
	<li>
		<p>
			Script Editor
		</p>
	</li>
	<li>
		<p>
			Lua/Luau Scripting
		</p>
	</li>
	<li>
		<p>
			Script Compatibility
		</p>
	</li>
	<li>
		<p>
			Installation Guides
		</p>
	</li>
	<li>
		<p>
			Troubleshooting
		</p>
	</li>
	<li>
		<p>
			Frequently Asked Questions
		</p>
	</li>
</ul>

<p>
	My current animation is fairly simple:
</p>

<pre><code>const panels = gsap.utils.toArray(".feature-panel");

panels.forEach((panel) =&gt; {
  gsap.from(panel, {
    opacity: 0,
    y: 25,
    duration: 0.5,
    ease: "power2.out",
    scrollTrigger: {
      trigger: panel,
      start: "top 85%",
      once: true
    }
  });
});
</code></pre>

<p>
	It works nicely with a small amount of content, but the documentation is gradually getting larger. Some sections contain code examples and fairly long text, so I’m trying to avoid adding unnecessary animation that could make the page feel slower.
</p>

<p>
	I’m particularly interested in how other GSAP users approach this type of documentation interface.
</p>

<p>
	Would you recommend using <code>ScrollTrigger</code> for each individual content section, or would a master timeline be more appropriate when there are many sections?
</p>

<p>
	I’m also wondering whether animating the parent containers is preferable to animating individual elements such as headings, paragraphs, buttons, and code blocks.
</p>

<p>
	The goal is to keep the interface visually interesting while making sure the actual documentation remains easy and quick to read.
</p>

<p>
	If anyone has built a documentation or developer-resource website with GSAP, I’d be interested in hearing how you structured the animations and handled performance as the amount of content increased.
</p>

<p>
	Thanks!
</p>
]]></description><guid isPermaLink="false">45565</guid><pubDate>Sat, 26 Sep 2026 19:37:25 +0000</pubDate></item><item><title>How can I recreate this SVG mask/page transition animation with GSAP and scrolltrigger ?</title><link>https://gsap.com/community/forums/topic/45554-how-can-i-recreate-this-svg-maskpage-transition-animation-with-gsap-and-scrolltrigger/</link><description><![CDATA[<p>
	Hi,
</p>

<p>
	I'm trying to recreate a page transition similar to the animation in the attached video.
</p>

<p>
	The effect I'm trying to achieve is <strong>not a simple SVG/object movement or a fullscreen wipe</strong>. I'm having trouble identifying the correct technique/approach for it.<br />
	<br />
	i tried  it many times but not getting exact approach. it is scroll based also. <br />
	<br />
	below is the reference video<br />
	<a href="https://drive.google.com/file/d/1s6IRXoV-O9uzRTncnZ8YocLS9a2duPoJ/view" rel="external nofollow">https://drive.google.com/file/d/1s6IRXoV-O9uzRTncnZ8YocLS9a2duPoJ/view</a><br />
	 
</p>




<p data-height="450" data-slug-hash="gbmLNbm" data-user="Bhavin-Raut" class='codepen' data-tab-bar-color="#222" data-default-tab="html,result">
    <span>See the Pen <a href='https://codepen.io/Bhavin-Raut/pen/gbmLNbm'>gbmLNbm</a> by Bhavin-Raut (<a href='https://codepen.io/Bhavin-Raut'>@Bhavin-Raut</a>) on <a href='https://codepen.io'>CodePen</a>.</span>
</p>

]]></description><guid isPermaLink="false">45554</guid><pubDate>Thu, 17 Sep 2026 13:03:48 +0000</pubDate></item><item><title>gsap.delayedCall(0, &#x2026;) stuck forever if global timeline is paused and ticker is idle</title><link>https://gsap.com/community/forums/topic/45563-gsapdelayedcall0-%E2%80%A6-stuck-forever-if-global-timeline-is-paused-and-ticker-is-idle/</link><description><![CDATA[<p>
	Hello, I've found an edge case, where a <code>gsap.delayedCall(0, …)</code> is never called if ticker is idle (no other active tweens) and the global timeline is paused and resumed. If I have any other active tweens triggering ticker update, the delayedCall works properly.  If 0.001 time is used also works properly. We are currently using gsap <code>3.13.1</code><br />
	<br />
	To give you some context how this happened, one of our systems is wrapped around gsap's delayedCalls. On some situations we want to pause all tweens so we pause the gsap globalTimeline and resume when needed. This bug happened when no other tweens were active, a call to <code>delayedCall(0, ...)</code> and a <code>globalTimeline.pause</code> was in the same frame. The delayedCall was critical for our game but it never got called after resuming so the game was stuck waiting for that call. It's really an edge case, me myself managed to reproduce it only twice, but it's still possible if you hit the moment. We've added a temporal workaround to prevent this on all of our products by always having an active dummy tween, since we didn't like the 0.001 approach.<br />
	<br />
	I'm adding both jsfiddle and codepen reproducing the problem, but haven't tested codepen because my antivirus program blocks it.<br />
	<br />
	Edit: Codepen should be working now, tested on my phone.<br />
	<br />
	<a href="https://jsfiddle.net/martinnikolov/qsm2jbxr/7/" rel="external nofollow">https://jsfiddle.net/martinnikolov/qsm2jbxr/7/</a>
</p>

<p>
	<br />
	
</p>




<p data-height="450" data-slug-hash="ZYeKgNY" data-user="martin-nikolov" class='codepen' data-tab-bar-color="#222" data-default-tab="html,result">
    <span>See the Pen <a href='https://codepen.io/martin-nikolov/pen/ZYeKgNY'>ZYeKgNY</a> by martin-nikolov (<a href='https://codepen.io/martin-nikolov'>@martin-nikolov</a>) on <a href='https://codepen.io'>CodePen</a>.</span>
</p>

]]></description><guid isPermaLink="false">45563</guid><pubDate>Fri, 25 Sep 2026 07:28:24 +0000</pubDate></item><item><title>Simple GASP code isn&#xB4;t working !!</title><link>https://gsap.com/community/forums/topic/45543-simple-gasp-code-isn%C2%B4t-working/</link><description><![CDATA[<p>
	I trying using GSAP script but nothing is  happening !! See my code below:<br />
	<br />
	 
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted"><span class="dec">&lt;!DOCTYPE html&gt;</span><span class="pln">
</span><span class="tag">&lt;html&gt;</span><span class="pln">
</span><span class="tag">&lt;head&gt;</span><span class="pln">

</span><span class="tag">&lt;script</span><span class="pln"> </span><span class="atn">src</span><span class="pun">=</span><span class="atv">"js/gsap.min.js"</span><span class="tag">&gt;&lt;/script&gt;</span><span class="pln">

</span><span class="tag">&lt;style&gt;</span><span class="pln">
</span><span class="pun">.</span><span class="pln">box </span><span class="pun">{</span><span class="pln">
	width</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</span><span class="pun">;</span><span class="pln">
	height</span><span class="pun">:</span><span class="pln"> </span><span class="lit">150px</span><span class="pun">;</span><span class="pln">
	background</span><span class="pun">-</span><span class="pln">color</span><span class="pun">:</span><span class="pln"> green</span><span class="pun">;</span><span class="pln">
	border</span><span class="pun">-</span><span class="pln">radius</span><span class="pun">:</span><span class="pln"> </span><span class="lit">20px</span><span class="pun">;</span><span class="pln">
	border</span><span class="pun">:</span><span class="pln"> </span><span class="lit">5px</span><span class="pln"> dotted black</span><span class="pun">;</span><span class="pln">
</span><span class="pun">}</span><span class="pln">
</span><span class="tag">&lt;/style&gt;</span><span class="pln">

</span><span class="tag">&lt;/head&gt;</span><span class="pln">

</span><span class="tag">&lt;body&gt;</span><span class="pln">

</span><span class="tag">&lt;script&gt;</span><span class="pln">

gsap</span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="str">".box"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
	duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span><span class="pln">
	rotation</span><span class="pun">:</span><span class="pln"> </span><span class="lit">360</span><span class="pun">,</span><span class="pln">
	transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"50% 50% -400px"</span><span class="pun">,</span><span class="pln">
</span><span class="pun">});</span><span class="pln">
	
</span><span class="tag">&lt;/script&gt;</span><span class="pln">

</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">class</span><span class="pun">=</span><span class="atv">"box"</span><span class="tag">&gt;&lt;/div&gt;</span><span class="pln">

</span><span class="tag">&lt;/body&gt;</span><span class="pln">
</span><span class="tag">&lt;/html&gt;</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">45543</guid><pubDate>Thu, 27 Aug 2026 14:22:36 +0000</pubDate></item><item><title>When I squeeze my width to mobile I can see the while background (pin-spacer I assume)</title><link>https://gsap.com/community/forums/topic/45557-when-i-squeeze-my-width-to-mobile-i-can-see-the-while-background-pin-spacer-i-assume/</link><description><![CDATA[<p>
	So I have components <br />
	to simply it  look like this <br />
	<br />
	&lt;component-A&gt;<br />
	&lt;component-B&gt;<br />
	&lt;component-C&gt;<br />
	<br />
	these are by scrollable since they used a <span style="color:#a5d6ff;">w-full h-dvh </span>
</p>

<p>
	<br />
	<br />
	so I have this component B. and this component has Parallax effect using ScrollTrigger. <br />
	now, it works like it should. but when I shrink the width of my browser to mimic a mobile I can see this white space by pin-spacer.<br />
	It probably appear when I am on full screen it just I cannot see it because the width and height is a view port. the only problem I have is when I scroll on mobile width. <br />
	<br />
	I can feel the pin on full screen but I can't on small width. it looks like the SVG just move from top to bottom while doing animation.. maybe it just because I can see the scroll area goes shrink. <br />
	<br />
	also, I would like to ask if there is a way to turn off animation when the it is browse by small screen? <br />
	<br />
	any help is appreciated. thanks.<br />
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> useGSAP </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"@gsap/react"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> gsap </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">ScrollTrigger</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap/ScrollTrigger"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">SplitText</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap/SplitText"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="pun">*</span><span class="pln"> </span><span class="kwd">as</span><span class="pln"> </span><span class="typ">React</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"react"</span><span class="pun">;</span><span class="pln">

gsap</span><span class="pun">.</span><span class="pln">registerPlugin</span><span class="pun">(</span><span class="pln">useGSAP</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ScrollTrigger</span><span class="pun">,</span><span class="pln"> </span><span class="typ">SplitText</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">const</span><span class="pln"> </span><span class="typ">ParallaxDemo</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> container </span><span class="pun">=</span><span class="pln"> </span><span class="typ">React</span><span class="pun">.</span><span class="pln">useRef</span><span class="pun">(</span><span class="kwd">null</span><span class="pun">);</span><span class="pln">

  useGSAP</span><span class="pun">(</span><span class="pln">
    </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> setOpacity </span><span class="pun">=</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">quickSetter</span><span class="pun">(</span><span class="pln">container</span><span class="pun">.</span><span class="pln">current</span><span class="pun">,</span><span class="pln"> </span><span class="str">"opacity"</span><span class="pun">);</span><span class="pln">
      setOpacity</span><span class="pun">(</span><span class="lit">1</span><span class="pun">);</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> split </span><span class="pun">=</span><span class="pln"> </span><span class="typ">SplitText</span><span class="pun">.</span><span class="pln">create</span><span class="pun">(</span><span class="str">".greeting-text"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> type</span><span class="pun">:</span><span class="pln"> </span><span class="str">"chars"</span><span class="pln"> </span><span class="pun">});</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> tl </span><span class="pun">=</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">timeline</span><span class="pun">({</span><span class="pln">
        defaults</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">"power1"</span><span class="pln"> </span><span class="pun">},</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">
      tl</span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="str">".tower-layer-1"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"50% 50%"</span><span class="pun">,</span><span class="pln">
        y</span><span class="pun">:</span><span class="pln"> </span><span class="lit">500</span><span class="pun">,</span><span class="pln">
      </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="str">".tower-layer-2"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"50% 50%"</span><span class="pun">,</span><span class="pln">
          y</span><span class="pun">:</span><span class="pln"> </span><span class="lit">500</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="str">".stars &gt; *"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"50% 50%"</span><span class="pun">,</span><span class="pln">
          scale</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln">
          ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">"back(2)"</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="pln">split</span><span class="pun">.</span><span class="pln">chars</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> stagger</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.05</span><span class="pln"> </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="str">".moon-layer"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          y</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">300</span><span class="pun">,</span><span class="pln">
          x</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">500</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="pln">
          </span><span class="str">".cloud"</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">{</span><span class="pln">
            x</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1440</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">},</span><span class="pln">
          </span><span class="str">"&lt;"</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">)</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="pln">
          </span><span class="str">".lights"</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">{</span><span class="pln">
            opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">},</span><span class="pln">
          </span><span class="str">"-=0.1"</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">);</span><span class="pln">

      </span><span class="typ">ScrollTrigger</span><span class="pun">.</span><span class="pln">create</span><span class="pun">({</span><span class="pln">
        trigger</span><span class="pun">:</span><span class="pln"> container</span><span class="pun">.</span><span class="pln">current</span><span class="pun">,</span><span class="pln">
        animation</span><span class="pun">:</span><span class="pln"> tl</span><span class="pun">,</span><span class="pln">
        markers</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
        start</span><span class="pun">:</span><span class="pln"> </span><span class="str">"center center"</span><span class="pun">,</span><span class="pln">
        </span><span class="kwd">end</span><span class="pun">:</span><span class="pln"> </span><span class="str">"bottom center"</span><span class="pun">,</span><span class="pln">
        scrub</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.5</span><span class="pun">,</span><span class="pln">
        </span><span class="com">// once: true,</span><span class="pln">
        pin</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">
    </span><span class="pun">},</span><span class="pln">
    </span><span class="pun">{</span><span class="pln"> scope</span><span class="pun">:</span><span class="pln"> container </span><span class="pun">},</span><span class="pln">
  </span><span class="pun">);</span><span class="pln">

  </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">ref</span><span class="pun">={</span><span class="pln">container</span><span class="pun">}</span><span class="pln"> className</span><span class="pun">=</span><span class="str">"w-full lg:h-dvh overflow-hidden opacity-0"</span><span class="pun">&gt;</span><span class="pln">
      </span><span class="pun">&lt;</span><span class="pln">svg
        viewBox</span><span class="pun">=</span><span class="str">"0 0 1440 730"</span><span class="pln">
        fill</span><span class="pun">=</span><span class="str">"none"</span><span class="pln">
        xmlns</span><span class="pun">=</span><span class="str">"http://www.w3.org/2000/svg"</span><span class="pln">
      </span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="pln">g id</span><span class="pun">=</span><span class="str">"parallax"</span><span class="pln"> clipPath</span><span class="pun">=</span><span class="str">"url(#parallax-clip)"</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="pln">rect width</span><span class="pun">={</span><span class="lit">1440</span><span class="pun">}</span><span class="pln"> height</span><span class="pun">={</span><span class="lit">730</span><span class="pun">}</span><span class="pln"> fill</span><span class="pun">=</span><span class="str">"white"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="pln">rect id</span><span class="pun">=</span><span class="str">"sky"</span><span class="pln"> width</span><span class="pun">={</span><span class="lit">1440</span><span class="pun">}</span><span class="pln"> height</span><span class="pun">={</span><span class="lit">1024</span><span class="pun">}</span><span class="pln"> fill</span><span class="pun">=</span><span class="str">"#252528"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="pln">foreignObject x</span><span class="pun">={</span><span class="lit">500</span><span class="pun">}</span><span class="pln"> y</span><span class="pun">={</span><span class="lit">100</span><span class="pun">}</span><span class="pln"> width</span><span class="pun">={</span><span class="lit">500</span><span class="pun">}</span><span class="pln"> height</span><span class="pun">={</span><span class="lit">50</span><span class="pun">}&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">div className</span><span class="pun">=</span><span class="str">"w-full h-full"</span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">h3 className</span><span class="pun">=</span><span class="str">"greeting-text text-6xl text-white text-center"</span><span class="pun">&gt;</span><span class="pln">
                GOOD EVENING
              </span><span class="pun">&lt;</span><span class="str">/h3&gt;
            &lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/foreignObject&gt;
          &lt;g className="stars"&gt;
            &lt;path
              id="Star 5"
              d="M205.5 49.6178C205.822 48.7465 207.054 48.7465 207.376 49.6178L213.984 67.5103C214.086 67.7841 214.301 68 214.575 68.1015L232.44 74.7242C233.31 75.0467 233.31 76.277 232.44 76.5995L214.575 83.2222C214.301 83.3237 214.086 83.5396 213.984 83.8134L207.376 101.706C207.054 102.577 205.822 102.577 205.5 101.706L198.891 83.8134C198.79 83.5396 198.574 83.3237 198.3 83.2222L180.436 76.5995C179.566 76.277 179.566 75.0467 180.436 74.7242L198.3 68.1015C198.574 68 198.79 67.7841 198.891 67.5103L205.5 49.6178Z"
              fill="#D9D9D9"
            /</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">path
              id</span><span class="pun">=</span><span class="str">"Star 6"</span><span class="pln">
              d</span><span class="pun">=</span><span class="str">"M924.516 194.54C924.838 193.668 926.07 193.668 926.392 194.54L930.281 205.069C930.382 205.342 930.598 205.558 930.871 205.66L941.386 209.558C942.256 209.88 942.256 211.111 941.386 211.433L930.871 215.331C930.598 215.432 930.382 215.648 930.281 215.922L926.392 226.451C926.07 227.322 924.838 227.322 924.516 226.451L920.627 215.922C920.526 215.648 920.31 215.432 920.036 215.331L909.522 211.433C908.652 211.111 908.652 209.88 909.521 209.558L920.036 205.66C920.31 205.558 920.526 205.342 920.627 205.069L924.516 194.54Z"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">path
              id</span><span class="pun">=</span><span class="str">"Star 11"</span><span class="pln">
              d</span><span class="pun">=</span><span class="str">"M1369.88 59.5397C1370.2 58.6683 1371.43 58.6683 1371.76 59.5397L1376.55 72.5231C1376.65 72.7969 1376.87 73.0129 1377.14 73.1143L1390.11 77.9205C1390.98 78.243 1390.98 79.4733 1390.11 79.7958L1377.14 84.602C1376.87 84.7035 1376.65 84.9194 1376.55 85.1932L1371.76 98.1766C1371.43 99.048 1370.2 99.048 1369.88 98.1766L1365.08 85.1932C1364.98 84.9194 1364.77 84.7035 1364.49 84.602L1351.53 79.7958C1350.66 79.4733 1350.66 78.243 1351.53 77.9205L1364.49 73.1143C1364.77 73.0128 1364.98 72.7969 1365.08 72.5231L1369.88 59.5397Z"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">path
              id</span><span class="pun">=</span><span class="str">"Star 14"</span><span class="pln">
              d</span><span class="pun">=</span><span class="str">"M806.872 297.54C807.194 296.668 808.427 296.668 808.748 297.54L813.544 310.523C813.645 310.797 813.861 311.013 814.134 311.114L827.099 315.921C827.969 316.243 827.969 317.473 827.099 317.796L814.134 322.602C813.861 322.703 813.645 322.919 813.544 323.193L808.748 336.177C808.427 337.048 807.194 337.048 806.872 336.177L802.077 323.193C801.976 322.919 801.76 322.703 801.486 322.602L788.522 317.796C787.652 317.473 787.652 316.243 788.522 315.921L801.486 311.114C801.76 311.013 801.976 310.797 802.077 310.523L806.872 297.54Z"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">path
              id</span><span class="pun">=</span><span class="str">"Star 9"</span><span class="pln">
              d</span><span class="pun">=</span><span class="str">"M659.227 173.816C659.951 173.235 661.007 173.87 660.834 174.783L658.028 189.674C657.974 189.961 658.047 190.257 658.23 190.485L667.688 202.315C668.267 203.04 667.634 204.096 666.723 203.923L651.857 201.111C651.57 201.057 651.274 201.13 651.047 201.313L639.241 210.787C638.517 211.367 637.462 210.732 637.634 209.819L640.441 194.928C640.495 194.641 640.421 194.345 640.239 194.117L630.781 182.287C630.201 181.562 630.834 180.507 631.745 180.679L646.611 183.491C646.898 183.546 647.194 183.472 647.421 183.289L659.227 173.816Z"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 63"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">162.796</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">243.806</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 64"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 73.8359 349.719)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 65"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 1074.12 0)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 66"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 72.3594 98)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 67"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 177.906 430.43)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 68"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 848.352 490)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 69"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 6.71875 561.594)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 70"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 1147.36 394)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 71"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 998.352 204)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 72"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 600.844 477.516)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 73"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 576.352 101)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 74"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 419.57 77.3438)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 75"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 265.172 306.008)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 76"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 379.289 272.398)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 77"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 1100.36 123)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 78"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 1332.36 269)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 79"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 893.352 98)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 80"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 641.125 282.469)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"Ellipse 81"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">1.67832</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">1.6814</span><span class="pun">}</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(-1 0 0 1 439.703 453.977)"</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#D9D9D9"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/g&gt;
          &lt;g className="moon-layer"&gt;
            &lt;circle id="moon" cx={1272.5} cy={154.5} r={40.5} fill="white" /</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">g id</span><span class="pun">=</span><span class="str">"moon-glow"</span><span class="pln"> filter</span><span class="pun">=</span><span class="str">"url(#filter0_f_3758_9879)"</span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">circle cx</span><span class="pun">={</span><span class="lit">1273</span><span class="pun">}</span><span class="pln"> cy</span><span class="pun">={</span><span class="lit">155</span><span class="pun">}</span><span class="pln"> r</span><span class="pun">={</span><span class="lit">45</span><span class="pun">}</span><span class="pln"> fill</span><span class="pun">=</span><span class="str">"white"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/g&gt;
          &lt;/</span><span class="pln">g</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="pln">g
            className</span><span class="pun">=</span><span class="str">"tower-layer-2"</span><span class="pln">
            filter</span><span class="pun">=</span><span class="str">"url(#tower-layer-2-filter-shadow)"</span><span class="pln">
          </span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">rect
              id</span><span class="pun">=</span><span class="str">"Rectangle 302"</span><span class="pln">
              x</span><span class="pun">={</span><span class="lit">244.797</span><span class="pun">}</span><span class="pln">
              y</span><span class="pun">={</span><span class="lit">386.281</span><span class="pun">}</span><span class="pln">
              width</span><span class="pun">={</span><span class="lit">276.48</span><span class="pun">}</span><span class="pln">
              height</span><span class="pun">={</span><span class="lit">343.72</span><span class="pun">}</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#3A3E4D"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">rect
              id</span><span class="pun">=</span><span class="str">"Rectangle 305"</span><span class="pln">
              x</span><span class="pun">={</span><span class="lit">1163.52</span><span class="pun">}</span><span class="pln">
              y</span><span class="pun">={</span><span class="lit">386.281</span><span class="pun">}</span><span class="pln">
              width</span><span class="pun">={</span><span class="lit">276.48</span><span class="pun">}</span><span class="pln">
              height</span><span class="pun">={</span><span class="lit">343.72</span><span class="pun">}</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#3A3E4D"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">rect
              id</span><span class="pun">=</span><span class="str">"Rectangle 306"</span><span class="pln">
              x</span><span class="pun">={</span><span class="lit">1229.76</span><span class="pun">}</span><span class="pln">
              y</span><span class="pun">={</span><span class="lit">330.367</span><span class="pun">}</span><span class="pln">
              width</span><span class="pun">={</span><span class="lit">34.56</span><span class="pun">}</span><span class="pln">
              height</span><span class="pun">={</span><span class="lit">65.7836</span><span class="pun">}</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#3A3E4D"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">rect
              id</span><span class="pun">=</span><span class="str">"Rectangle 307"</span><span class="pln">
              x</span><span class="pun">={</span><span class="lit">1344.96</span><span class="pun">}</span><span class="pln">
              y</span><span class="pun">={</span><span class="lit">330.367</span><span class="pun">}</span><span class="pln">
              width</span><span class="pun">={</span><span class="lit">34.56</span><span class="pun">}</span><span class="pln">
              height</span><span class="pun">={</span><span class="lit">65.7836</span><span class="pun">}</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#3A3E4D"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">rect
              id</span><span class="pun">=</span><span class="str">"Rectangle 303"</span><span class="pln">
              y</span><span class="pun">={</span><span class="lit">448.766</span><span class="pun">}</span><span class="pln">
              width</span><span class="pun">={</span><span class="lit">244.8</span><span class="pun">}</span><span class="pln">
              height</span><span class="pun">={</span><span class="lit">281.225</span><span class="pun">}</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#3A3E4D"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">g id</span><span class="pun">=</span><span class="str">"tower"</span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">rect
                id</span><span class="pun">=</span><span class="str">"Rectangle 304"</span><span class="pln">
                x</span><span class="pun">={</span><span class="lit">959.039</span><span class="pun">}</span><span class="pln">
                y</span><span class="pun">={</span><span class="lit">258</span><span class="pun">}</span><span class="pln">
                width</span><span class="pun">={</span><span class="lit">164.16</span><span class="pun">}</span><span class="pln">
                height</span><span class="pun">={</span><span class="lit">471.998</span><span class="pun">}</span><span class="pln">
                fill</span><span class="pun">=</span><span class="str">"#3A3E4D"</span><span class="pln">
              </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">rect
                className</span><span class="pun">=</span><span class="str">"lights"</span><span class="pln">
                x</span><span class="pun">={</span><span class="lit">984.961</span><span class="pun">}</span><span class="pln">
                y</span><span class="pun">={</span><span class="lit">285.953</span><span class="pun">}</span><span class="pln">
                width</span><span class="pun">={</span><span class="lit">51.84</span><span class="pun">}</span><span class="pln">
                height</span><span class="pun">={</span><span class="lit">29.6026</span><span class="pun">}</span><span class="pln">
                fill</span><span class="pun">=</span><span class="str">"#D9D9AB"</span><span class="pln">
              </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/g&gt;
            &lt;path
              id="Union"
              d="M715.681 361.602C718.757 361.602 719.993 367.25 720.001 367.287V391.007C770.649 394.94 780.075 449.177 780.192 449.857H875.521V483.044H915.841V729.984H521.281V483.044H552.961V449.857H648.001C648.12 449.162 657.951 392.705 711.361 390.828V367.287C711.369 367.25 712.606 361.602 715.681 361.602Z"
              fill="#3A3E4D"
            /</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/g&gt;
          &lt;g className="tower-layer-1" filter="url(#tower-layer-1-shadow)"&gt;
            &lt;g id="tower_2"&gt;
              &lt;path
                id="Union_2"
                d="M892.803 729.994H443.523V544.104H668.163V580.932H682.563V505.523H892.803V729.994Z"
                fill="#252A3C"
              /</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/g&gt;
            &lt;g id="tower-twin"&gt;
              &lt;path
                id="Union_3"
                fillRule="evenodd"
                clipRule="evenodd"
                d="M1440 730H1232.64V642.316H1131.84V730H907.203V580.938H1232.64V491.5H1440V730ZM1131.84 630.041H1232.64V593.213H1131.84V630.041Z"
                fill="#252A3C"
              /</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/g&gt;
            &lt;g id="tower_3"&gt;
              &lt;path
                id="Union_4"
                d="M385.924 444.149H429.124V729.999H204.484V444.149H244.804V421.352H385.924V444.149Z"
                fill="#252A3C"
              /</span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">rect
                className</span><span class="pun">=</span><span class="str">"lights"</span><span class="pln">
                x</span><span class="pun">={</span><span class="lit">239.039</span><span class="pun">}</span><span class="pln">
                y</span><span class="pun">={</span><span class="lit">484.484</span><span class="pun">}</span><span class="pln">
                width</span><span class="pun">={</span><span class="lit">51.84</span><span class="pun">}</span><span class="pln">
                height</span><span class="pun">={</span><span class="lit">31.5662</span><span class="pun">}</span><span class="pln">
                fill</span><span class="pun">=</span><span class="str">"#D9D9AB"</span><span class="pln">
              </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/g&gt;
            &lt;path
              id="Union_5"
              d="M190.08 729.997H0V395.044H146.88V374H190.08V729.997Z"
              fill="#252A3C"
            /</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/g&gt;
          &lt;g className="cloud" filter="url(#filter3_d_3758_9879)"&gt;
            &lt;path
              d="M1291.5 180C1296.74 180 1301.22 183.22 1303.08 187.786C1304.87 186.061 1307.31 185 1310 185C1313.67 185 1316.88 186.982 1318.62 189.934C1320.08 185.89 1323.95 183 1328.5 183C1334.3 183 1339 187.701 1339 193.5C1339 194.106 1338.95 194.699 1338.85 195.276C1339.53 195.097 1340.25 195 1341 195C1345.42 195 1349 198.358 1349 202.5C1349 205.554 1347.05 208.179 1344.26 209.349C1344.73 210.307 1345 211.374 1345 212.5C1345 216.642 1341.42 220 1337 220C1335.4 220 1333.91 219.558 1332.66 218.801C1331.6 222.377 1328.13 225 1324 225C1319.96 225 1316.53 222.481 1315.4 219.013C1313.7 222.48 1308.57 225 1302.5 225C1295.04 225 1289 221.194 1289 216.5C1289 216.348 1289.01 216.196 1289.02 216.046C1288.91 216.023 1288.8 216 1288.7 215.977C1287.82 219.463 1285.16 222 1282 222C1278.13 222 1275 218.194 1275 213.5C1275 213.327 1275 213.156 1275.01 212.985C1274.84 212.994 1274.67 213 1274.5 213C1269.25 213 1265 208.747 1265 203.5C1265 198.253 1269.25 194 1274.5 194C1276.26 194 1277.9 194.48 1279.32 195.312C1279.11 194.409 1279 193.467 1279 192.5C1279 185.596 1284.6 180 1291.5 180Z"
              fill="#383838"
            /</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/g&gt;
        &lt;/</span><span class="pln">g</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="str">&lt;defs&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="pln">filter
            id</span><span class="pun">=</span><span class="str">"filter0_f_3758_9879"</span><span class="pln">
            x</span><span class="pun">={</span><span class="lit">1218.1</span><span class="pun">}</span><span class="pln">
            y</span><span class="pun">={</span><span class="lit">100.1</span><span class="pun">}</span><span class="pln">
            width</span><span class="pun">={</span><span class="lit">109.8</span><span class="pun">}</span><span class="pln">
            height</span><span class="pun">={</span><span class="lit">109.8</span><span class="pun">}</span><span class="pln">
            filterUnits</span><span class="pun">=</span><span class="str">"userSpaceOnUse"</span><span class="pln">
            colorInterpolationFilters</span><span class="pun">=</span><span class="str">"sRGB"</span><span class="pln">
          </span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feFlood floodOpacity</span><span class="pun">={</span><span class="lit">0</span><span class="pun">}</span><span class="pln"> result</span><span class="pun">=</span><span class="str">"BackgroundImageFix"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feBlend
              mode</span><span class="pun">=</span><span class="str">"normal"</span><span class="pln">
              </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceGraphic"</span><span class="pln">
              in2</span><span class="pun">=</span><span class="str">"BackgroundImageFix"</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"shape"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feGaussianBlur
              stdDeviation</span><span class="pun">={</span><span class="lit">4.95</span><span class="pun">}</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"effect1_foregroundBlur_3758_9879"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/filter&gt;
          &lt;filter
            id="tower-layer-2-filter-shadow"
            x={-4.5}
            y={254.5}
            width={1455}
            height={487}
            filterUnits="userSpaceOnUse"
            colorInterpolationFilters="sRGB"
          &gt;
            &lt;feFlood floodOpacity={0} result="BackgroundImageFix" /</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feColorMatrix
              </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceAlpha"</span><span class="pln">
              type</span><span class="pun">=</span><span class="str">"matrix"</span><span class="pln">
              values</span><span class="pun">=</span><span class="str">"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"hardAlpha"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feOffset dx</span><span class="pun">={</span><span class="lit">3</span><span class="pun">}</span><span class="pln"> dy</span><span class="pun">={</span><span class="lit">4</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feGaussianBlur stdDeviation</span><span class="pun">={</span><span class="lit">3.75</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feComposite in2</span><span class="pun">=</span><span class="str">"hardAlpha"</span><span class="pln"> </span><span class="kwd">operator</span><span class="pun">=</span><span class="str">"out"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feColorMatrix
              type</span><span class="pun">=</span><span class="str">"matrix"</span><span class="pln">
              values</span><span class="pun">=</span><span class="str">"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feBlend
              mode</span><span class="pun">=</span><span class="str">"normal"</span><span class="pln">
              in2</span><span class="pun">=</span><span class="str">"BackgroundImageFix"</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"effect1_dropShadow_3758_9879"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feBlend
              mode</span><span class="pun">=</span><span class="str">"normal"</span><span class="pln">
              </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceGraphic"</span><span class="pln">
              in2</span><span class="pun">=</span><span class="str">"effect1_dropShadow_3758_9879"</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"shape"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/filter&gt;
          &lt;filter
            id="tower-layer-1-shadow"
            x={-5.8}
            y={363.2}
            width={1469.6}
            height={385.6}
            filterUnits="userSpaceOnUse"
            colorInterpolationFilters="sRGB"
          &gt;
            &lt;feFlood floodOpacity={0} result="BackgroundImageFix" /</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feColorMatrix
              </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceAlpha"</span><span class="pln">
              type</span><span class="pun">=</span><span class="str">"matrix"</span><span class="pln">
              values</span><span class="pun">=</span><span class="str">"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"hardAlpha"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feOffset dx</span><span class="pun">={</span><span class="lit">9</span><span class="pun">}</span><span class="pln"> dy</span><span class="pun">={</span><span class="lit">4</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feGaussianBlur stdDeviation</span><span class="pun">={</span><span class="lit">7.4</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feComposite in2</span><span class="pun">=</span><span class="str">"hardAlpha"</span><span class="pln"> </span><span class="kwd">operator</span><span class="pun">=</span><span class="str">"out"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feColorMatrix
              type</span><span class="pun">=</span><span class="str">"matrix"</span><span class="pln">
              values</span><span class="pun">=</span><span class="str">"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feBlend
              mode</span><span class="pun">=</span><span class="str">"normal"</span><span class="pln">
              in2</span><span class="pun">=</span><span class="str">"BackgroundImageFix"</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"effect1_dropShadow_3758_9879"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feBlend
              mode</span><span class="pun">=</span><span class="str">"normal"</span><span class="pln">
              </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceGraphic"</span><span class="pln">
              in2</span><span class="pun">=</span><span class="str">"effect1_dropShadow_3758_9879"</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"shape"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/filter&gt;
          &lt;filter
            id="filter3_d_3758_9879"
            x={1261}
            y={180}
            width={92}
            height={53}
            filterUnits="userSpaceOnUse"
            colorInterpolationFilters="sRGB"
          &gt;
            &lt;feFlood floodOpacity={0} result="BackgroundImageFix" /</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feColorMatrix
              </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceAlpha"</span><span class="pln">
              type</span><span class="pun">=</span><span class="str">"matrix"</span><span class="pln">
              values</span><span class="pun">=</span><span class="str">"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0"</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"hardAlpha"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feOffset dy</span><span class="pun">={</span><span class="lit">4</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feGaussianBlur stdDeviation</span><span class="pun">={</span><span class="lit">2</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feComposite in2</span><span class="pun">=</span><span class="str">"hardAlpha"</span><span class="pln"> </span><span class="kwd">operator</span><span class="pun">=</span><span class="str">"out"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feColorMatrix
              type</span><span class="pun">=</span><span class="str">"matrix"</span><span class="pln">
              values</span><span class="pun">=</span><span class="str">"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feBlend
              mode</span><span class="pun">=</span><span class="str">"normal"</span><span class="pln">
              in2</span><span class="pun">=</span><span class="str">"BackgroundImageFix"</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"effect1_dropShadow_3758_9879"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">feBlend
              mode</span><span class="pun">=</span><span class="str">"normal"</span><span class="pln">
              </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceGraphic"</span><span class="pln">
              in2</span><span class="pun">=</span><span class="str">"effect1_dropShadow_3758_9879"</span><span class="pln">
              result</span><span class="pun">=</span><span class="str">"shape"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/filter&gt;
          &lt;clipPath id="parallax-clip"&gt;
            &lt;rect width={1440} height={730} fill="white" /</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/clipPath&gt;
        &lt;/</span><span class="pln">defs</span><span class="pun">&gt;</span><span class="pln">
      </span><span class="pun">&lt;</span><span class="str">/svg&gt;
    &lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
  </span><span class="pun">);</span><span class="pln">
</span><span class="pun">};</span><span class="pln">
</span><span class="kwd">export</span><span class="pln"> </span><span class="kwd">default</span><span class="pln"> </span><span class="typ">ParallaxDemo</span><span class="pun">;</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">45557</guid><pubDate>Sat, 19 Sep 2026 08:51:14 +0000</pubDate></item><item><title>MorphSVG - morph animation creates some sort of "contrail"</title><link>https://gsap.com/community/forums/topic/45555-morphsvg-morph-animation-creates-some-sort-of-contrail/</link><description><![CDATA[<p>
	Hello,
</p>

<p>
	 
</p>

<p>
	This is my first time using the MorphSVG plugin. In the attached CodePen, I’ve reproduced the issue I’m experiencing.
</p>

<p>
	Once you click on “<strong>Structural protection</strong>”, the morphing animation starts. As you can see, the lines create a sort of trailing or “contrail” effect during the animation.
</p>

<p>
	Ideally, the geometric shape should smoothly reshape into the other shape without leaving these visible trails behind.
</p>

<p>
	The expected behaviour should look more like this:
</p>

<p>
	



<p data-height="450" data-slug-hash="LpxOqR" data-user="GreenSock" class='codepen' data-tab-bar-color="#222" data-default-tab="html,result">
    <span>See the Pen <a href='https://codepen.io/GreenSock/pen/LpxOqR'>LpxOqR</a> by GreenSock (<a href='https://codepen.io/GreenSock'>@GreenSock</a>) on <a href='https://codepen.io'>CodePen</a>.</span>
</p>

<br />
	<br />
	Could anyone advise if I’m doing something wrong, or whether the SVG structure might be too complex?
</p>

<p>
	 
</p>

<p>
	thanks guyz!
</p>




<p data-height="450" data-slug-hash="VYpPbvg" data-user="Mac-WWD" class='codepen' data-tab-bar-color="#222" data-default-tab="html,result">
    <span>See the Pen <a href='https://codepen.io/Mac-WWD/pen/VYpPbvg'>VYpPbvg</a> by Mac-WWD (<a href='https://codepen.io/Mac-WWD'>@Mac-WWD</a>) on <a href='https://codepen.io'>CodePen</a>.</span>
</p>

]]></description><guid isPermaLink="false">45555</guid><pubDate>Fri, 18 Sep 2026 09:01:27 +0000</pubDate></item><item><title>Do I need a license?</title><link>https://gsap.com/community/forums/topic/45558-do-i-need-a-license/</link><description><![CDATA[<p style="background-color:#0e100f;color:#bbbaa6;padding:0px;">
	Hello there GSAP team,
</p>

<p style="background-color:#0e100f;color:#bbbaa6;padding:0px;">
	Blessings for the new free/commercial license, much appreciated for small agencies and devs like me.
</p>

<p style="background-color:#0e100f;color:#bbbaa6;padding:0px;">
	 
</p>

<p dir="ltr">
	I run a small studio that builds a scroll-following animated character for clients' existing websites. GSAP does the animation, bundled into the script we install on the client's site. I have read the Standard "No Charge" License and I would like to confirm my reading of the Prohibited Uses clause in writing before I take on a paying client, because the FAQ invites exactly this question.
</p>

<p dir="ltr">
	 
</p>

<p dir="ltr">
	<strong>What the product is, described as precisely as I can.</strong>
</p>

<p dir="ltr">
	The client already has a website that someone else built. We add one script tag. That script draws a single illustrated character that walks, rides and stops along the page as the visitor scrolls. We have an internal authoring tool where an operator positions that character's stops along the page and adjusts their timing by dragging blocks on a vertical strip.
</p>

<p dir="ltr">
	<strong>Three things it deliberately is not:</strong>
</p>

<ol dir="ltr" start="1">
	<li>
		<strong>It animates one thing only -</strong> the character. It cannot animate arbitrary page elements. There is no way in the tool to select a heading, an image or a navigation bar and give it a motion. The only animatable subject is the character we supply.
	</li>
	<li>
		<strong>It does not build pages.</strong> It never creates, edits or manages the client's page structure, styles or content. It attaches to a site that already exists, through an install snippet.
	</li>
	<li>
		<strong>It is a service, not self-serve software, at this stage.</strong> We onboard each client by hand. Longer term we intend to let a client's own staff log in and adjust their character's journey themselves, which is why I would rather have your answer now than after that exists.
		<ol>
			<li>
				I'd appreciate your take on this if I decide on taking this to self-serve software.
			</li>
		</ol>
	</li>
</ol>

<p dir="ltr">
	<strong>My reading.</strong>
</p>

<p dir="ltr">
	Prohibited Uses covers tools that let users build visual animations without code where that competes with Webflow's visual animation building capabilities. The first half describes our authoring strip; I do not think the second half applies, because we animate one supplied character on a site we do not build, and the FAQ names niche visual GSAP-driven tools as acceptable. I would like to know whether you agree.
</p>

<p dir="ltr">
	 
</p>

<p dir="ltr">
	<strong>And if you disagree.</strong> If you consider what I have described to be a Prohibited Use, then I would like to ask, in the alternative, for the prior written consent that Restriction III.1 provides for. I would rather have a clear answer either way — including a conditional one, such as consent for the service as it works today but not for client self-authoring — than proceed on my own reading of a clause I know is open to more than one.
</p>

<p dir="ltr">
	 
</p>

<p dir="ltr">
	<strong>A second, narrower question, about which version of the terms applies.</strong> We ship GSAP 3.15.0, published 2026-04-13. The Standard License posted today is effective 2025-04-30 and last modified 2025-05-30. I read clause VI.2 as meaning that, because no revision has been posted since May 2025, the terms currently posted are the terms that were in force when 3.15.0 was released, and so are the terms that govern our use of it. Could you confirm that reading is right? I would rather have it confirmed once than re-derive it each time we take a version update.
</p>

<p dir="ltr">
	I am happy to answer anything about how the tool works, or to show it to you.
</p>

<p dir="ltr">
	Thank you,
</p>

<p dir="ltr">
	 
</p>

<p dir="ltr">
	 
</p>

<p dir="ltr">
	<strong>Amit</strong>
</p>
]]></description><guid isPermaLink="false">45558</guid><pubDate>Tue, 22 Sep 2026 09:19:04 +0000</pubDate></item><item><title>please help me to RECREATE this using GSAP its a type of cards display vertically</title><link>https://gsap.com/community/forums/topic/45556-please-help-me-to-recreate-this-using-gsap-its-a-type-of-cards-display-vertically/</link><description><![CDATA[<p>
	I need help designing a <strong>stable scroll-progress system</strong> where the elements’ growth is driven by their position/progress through the viewport rather than by their changing height. i want the exact animation please, i will be very grateful 
</p>

<p>
	Reference animation: <a href="https://k72.ca/travail" rel="external nofollow">Projets — Agence K72</a>
</p>

<p>
	the codepen shows the maximum result i reached but there's still mistake in that
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="15041" href="https://gsap.com/community/uploads/monthly_2026_09/Screenshot2026-09-18094337.png.ba0e50f6be843cc6c76240c8eff4c171.png" rel=""><img alt="Screenshot 2026-09-18 094337.png" class="ipsImage ipsImage_thumbnailed" data-fileid="15041" data-ratio="50.1" width="1000" src="https://gsap.com/community/uploads/monthly_2026_09/Screenshot2026-09-18094337.thumb.png.aafa2445a3b1f71333cb1bed5b08a294.png" /></a>
</p>

<p>
	<a class="ipsAttachLink ipsAttachLink_image" data-fileext="png" data-fileid="15042" href="https://gsap.com/community/uploads/monthly_2026_09/Screenshot2026-09-18094319.png.c6d6c57bf2b97ad404d115a2f4d12c31.png" rel=""><img alt="Screenshot 2026-09-18 094319.png" class="ipsImage ipsImage_thumbnailed" data-fileid="15042" data-ratio="49.6" width="1000" src="https://gsap.com/community/uploads/monthly_2026_09/Screenshot2026-09-18094319.thumb.png.6be5cb98016525d3dfac84d9473c6add.png" /></a>
</p>




<p data-height="450" data-slug-hash="01a0b5a5-a9a9-76fe-9cf2-3d4e22568d57" data-user="Saksham-Tanwar" class='codepen' data-tab-bar-color="#222" data-default-tab="html,result">
    <span>See the Pen <a href='https://codepen.io/Saksham-Tanwar/pen/01a0b5a5-a9a9-76fe-9cf2-3d4e22568d57'>01a0b5a5-a9a9-76fe-9cf2-3d4e22568d57</a> by Saksham-Tanwar (<a href='https://codepen.io/Saksham-Tanwar'>@Saksham-Tanwar</a>) on <a href='https://codepen.io'>CodePen</a>.</span>
</p>

]]></description><guid isPermaLink="false">45556</guid><pubDate>Fri, 18 Sep 2026 16:55:56 +0000</pubDate></item><item><title>Gsap snap very buggy on mobile devices</title><link>https://gsap.com/community/forums/topic/29479-gsap-snap-very-buggy-on-mobile-devices/</link><description><![CDATA[
<p>
	Hi,
</p>

<p>
	 
</p>

<p>
	I coded something with gsap and the page is snapping to the nearest element when a scroll ends. It works perfectly on Desktop but it is very buggy on my mobile with safari and chrome. The snapping is very laggy, the page jumps a bit up and down and sometimes the snapping won't work at all. 
</p>

<p>
	 
</p>

<p>
	Is there maybe any common issue with gsap snap on mobiles, which I may have been doing wrong while coding the desktop version?
</p>

<p>
	(In my codepen there is called a background-image change every time a snap is completed, you can ignore that.)
</p>

<p>
	 
</p>

<p>
	Thank you in advance!
</p>




<p data-height="450" data-slug-hash="NWgMWbK" data-user="m44244" class='codepen' data-tab-bar-color="#222" data-default-tab="html,result">
    <span>See the Pen <a href='https://codepen.io/m44244/pen/NWgMWbK'>NWgMWbK</a> by m44244 (<a href='https://codepen.io/m44244'>@m44244</a>) on <a href='https://codepen.io'>CodePen</a>.</span>
</p>

]]></description><guid isPermaLink="false">29479</guid><pubDate>Mon, 20 Sep 2021 09:16:46 +0000</pubDate></item><item><title>Any Official GSAP Visual code extension?</title><link>https://gsap.com/community/forums/topic/45550-any-official-gsap-visual-code-extension/</link><description><![CDATA[<p>
	Just wondering before I install something dodgy.
</p>
]]></description><guid isPermaLink="false">45550</guid><pubDate>Tue, 08 Sep 2026 09:21:13 +0000</pubDate></item><item><title>How to make the quickSetter reusable?</title><link>https://gsap.com/community/forums/topic/45551-how-to-make-the-quicksetter-reusable/</link><description><![CDATA[<p>
	Hi! I am having a hard time figuring out how to make the <code>quickSetter</code>reusable. <br />
	what I meant by this is I want to use it inside and outside <code><a href="https://www.npmjs.com/package/@gsap/react" rel="external nofollow">useGSAP()</a></code><br />
	<br />
	I am scratching my head how can I make this work, even asked AI for assistance but no luck.<br />
	here is my scenario and why I want it to be resuable <br />
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="kwd">export</span><span class="pln"> </span><span class="kwd">default</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="typ">MouseDemo</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
	
	useGsap</span><span class="pun">((</span><span class="pln">
	</span><span class="com">//workaround: create quickSetter-A</span><span class="pln">
	</span><span class="com">//I want to use the quickSetter here	</span><span class="pln">

</span><span class="pun">)=&gt;{},{</span><span class="pln">scope</span><span class="pun">:</span><span class="pln"> container</span><span class="pun">})</span><span class="pln">

	</span><span class="kwd">function</span><span class="pln"> handleMouseMove</span><span class="pun">(){</span><span class="pln">
	</span><span class="com">//I want to use the quickSetter here</span><span class="pln">
	</span><span class="com">//workaround: create a similar quickSetter-A</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

</span><span class="pun">}</span></pre>

<p>
	and here is what I want to achieve:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="kwd">export</span><span class="pln"> </span><span class="kwd">default</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="typ">MouseDemo</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">

	</span><span class="com">//create a const setScaleX = useRef&lt;gsapQuickSetter&gt;(null)	</span><span class="pln">

	useGsap</span><span class="pun">(()=&gt;{</span><span class="pln">
          </span><span class="com">//set up quickSetter</span><span class="pln">
    </span><span class="com">//setScaleX = (target , {scaleX});</span><span class="pln">

    </span><span class="pun">},{</span><span class="pln">scope</span><span class="pun">:</span><span class="pln"> container</span><span class="pun">})</span><span class="pln">

	</span><span class="kwd">function</span><span class="pln"> handleMouseMove</span><span class="pun">(){</span><span class="pln">
	
	</span><span class="com">//invoke setScaleX(value);</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">

</span><span class="pun">}</span></pre>

<p>
	<br />
	I can't figure out the exact return type of quickSetter. hovering from the existing quickSetter reveals this paramter and return type<br />
	<code><span style="background-color:#202122;color:#ff7b72;font-size:14px;">function</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;"> </span><span style="background-color:#202122;color:#d2a8ff;font-size:14px;">gsap</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;">.</span><span style="background-color:#202122;color:#d2a8ff;font-size:14px;">quickSetter</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;">(</span><span style="background-color:#202122;color:#ffa657;font-size:14px;">targets</span><span style="background-color:#202122;color:#d4d4d4;font-size:14px;">:</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;"> </span><span style="background-color:#202122;color:#4ec9b0;font-size:14px;">gsap</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;">.</span><span style="background-color:#202122;color:#4ec9b0;font-size:14px;">TweenTarget</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;">, </span><span style="background-color:#202122;color:#ffa657;font-size:14px;">property</span><span style="background-color:#202122;color:#d4d4d4;font-size:14px;">:</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;"> </span><span style="background-color:#202122;color:#4ec9b0;font-size:14px;">string</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;">, </span><span style="background-color:#202122;color:#ffa657;font-size:14px;">unit</span><span style="background-color:#202122;color:#d4d4d4;font-size:14px;">?:</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;"> </span><span style="background-color:#202122;color:#4ec9b0;font-size:14px;">string</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;">)</span><span style="background-color:#202122;color:#d4d4d4;font-size:14px;">:</span><span style="background-color:#202122;color:#bbbebf;font-size:14px;"> </span><span style="background-color:#202122;color:#4ec9b0;font-size:14px;">Function</span></code>
</p>

<p>
	that it confirms that it returns a <code>function</code>. my question is what kind of function? what its parameters and return type. I even tried to dig in gsap.core but couldn't find any leads.<br />
	<br />
	here is my current attempt<br />
	I created a type alias that accept this kind of pattern<code> <span style="color:#ff7b72;">type</span><span style="color:#bbbebf;"> </span><span style="color:#4ec9b0;">QuickSetterFn</span><span style="color:#bbbebf;"> </span><span style="color:#d4d4d4;">=</span><span style="color:#bbbebf;"> (</span><span style="color:#ffa657;">value</span><span style="color:#d4d4d4;">:</span><span style="color:#bbbebf;"> </span><span style="color:#4ec9b0;">number</span><span style="color:#bbbebf;"> </span><span style="color:#d4d4d4;">|</span><span style="color:#bbbebf;"> </span><span style="color:#4ec9b0;">string</span><span style="color:#bbbebf;">) </span><span style="color:#ff7b72;">=&gt;</span><span style="color:#bbbebf;"> </span><span style="color:#4ec9b0;">void</span><span style="color:#bbbebf;">;</span></code>
</p>

<p>
	<code>then I referenced it to a useRef but still not luck</code><br />
	 
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="pln">type </span><span class="typ">Coordinates</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> x</span><span class="pun">:</span><span class="pln"> number</span><span class="pun">;</span><span class="pln"> y</span><span class="pun">:</span><span class="pln"> number </span><span class="pun">};</span><span class="pln">
type </span><span class="typ">QuickSetterFn</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="pln">value</span><span class="pun">:</span><span class="pln"> number </span><span class="pun">|</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">)</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="kwd">void</span><span class="pun">;</span><span class="pln">

</span><span class="kwd">export</span><span class="pln"> </span><span class="kwd">default</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="typ">MouseDemo</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="com">//useRef</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> container </span><span class="pun">=</span><span class="pln"> useRef</span><span class="pun">&lt;</span><span class="typ">HTMLDivElement</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">&gt;(</span><span class="kwd">null</span><span class="pun">);</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> setScaleX </span><span class="pun">=</span><span class="pln"> useRef</span><span class="pun">&lt;</span><span class="typ">QuickSetterFn</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="kwd">null</span><span class="pun">&gt;(</span><span class="kwd">null</span><span class="pun">);</span><span class="pln">

  </span><span class="com">//state</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> </span><span class="pun">[</span><span class="pln">coordinates</span><span class="pun">,</span><span class="pln"> setCoordinates</span><span class="pun">]</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> useState</span><span class="pun">&lt;</span><span class="typ">Coordinates</span><span class="pun">&gt;({</span><span class="pln"> x</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> y</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">});</span><span class="pln">

  </span><span class="com">//useGsap - contextSafe</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> contextSafe </span><span class="pun">}</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> useGSAP</span><span class="pun">(</span><span class="pln">
    </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="com">//quickSetter setup</span><span class="pln">
      setScaleX</span><span class="pun">.</span><span class="pln">current </span><span class="pun">=</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">quickSetter</span><span class="pun">(</span><span class="str">".box"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"scaleX"</span><span class="pun">);</span></pre>

<p>
	here is what I get <br />
	Type 'Function' is not assignable to type 'QuickSetterFn'.<br />
	  Type 'Function' provides no match for the signature '(value: string | number): void'.<br />
	<br />
	right now I use the workaround , to create a duplicate quickSetter for the button the the useGsap.<br />
	<br />
	---<br />
	 
</p>

<div style="background-color:#121314;color:#bbbebf;font-size:14px;">
	<div>
		<br />
		 
	</div>

	<div>
		<span style="color:#c9d1d9;">some attempts:</span>
	</div>

	<div>
		 
	</div>

	<div>
		<div style="background-color:#121314;color:#bbbebf;font-size:14px;">
			<div>
				<span style="color:#c9d1d9;">  </span><span style="color:#ff7b72;">const</span><span style="color:#c9d1d9;"> </span><span style="color:#79c0ff;">setScaleX</span><span style="color:#c9d1d9;"> </span><span style="color:#d4d4d4;">=</span><span style="color:#c9d1d9;"> </span><span style="color:#d2a8ff;">useRef</span><span style="color:#c9d1d9;">(</span><span style="color:#569cd6;">null</span><span style="color:#c9d1d9;">);</span>
			</div>

			<div>
				<div style="background-color:#121314;color:#bbbebf;font-size:14px;">
					<div>
						<span style="color:#c9d1d9;">  </span><span style="color:#79c0ff;">setScaleX</span><span style="color:#c9d1d9;">.</span><span style="color:#c9d1d9;">current</span><span style="color:#c9d1d9;"> </span><span style="color:#d4d4d4;">=</span><span style="color:#c9d1d9;"> </span><span style="color:#79c0ff;">gsap</span><span style="color:#c9d1d9;">.</span><span style="color:#d2a8ff;">quickSetter</span><span style="color:#c9d1d9;">(</span><span style="color:#a5d6ff;">".box"</span><span style="color:#c9d1d9;">, </span><span style="color:#a5d6ff;">"scaleX"</span><span style="color:#c9d1d9;">);</span>
					</div>
				</div>
			</div>
		</div>

		<p>
			<span style="color:#c9d1d9;">error: Type 'Function' is not assignable to type 'null'.<br />
			--------------------------------</span>
		</p>

		<p>
			<span style="color:#c9d1d9;"> </span><span style="color:#ff7b72;">const</span><span style="color:#c9d1d9;"> </span><span style="color:#79c0ff;">setScaleX</span><span style="color:#c9d1d9;"> </span><span style="color:#d4d4d4;">=</span><span style="color:#c9d1d9;"> </span><span style="color:#d2a8ff;">useRef</span><span style="color:#c9d1d9;">&lt;</span><span style="color:#4ec9b0;">Function</span><span style="color:#c9d1d9;">&gt;(</span><span style="color:#569cd6;">null</span><span style="color:#c9d1d9;">);</span>
		</p>

		<p>
			<span style="color:#c9d1d9;">The `Function` type accepts any function-like value.<br />
			Prefer explicitly defining any function parameters and return type.</span>
		</p>
	</div>
</div>
]]></description><guid isPermaLink="false">45551</guid><pubDate>Fri, 11 Sep 2026 15:58:59 +0000</pubDate></item><item><title>I need help on scroll trigger pin, I can't make it work.</title><link>https://gsap.com/community/forums/topic/45548-i-need-help-on-scroll-trigger-pin-i-cant-make-it-work/</link><description><![CDATA[<p>
	Hi! I am using React to create a scroll trigger animation. <br />
	the scroll itself is working but I can't seem to make the pin work. <br />
	<br />
	This is how I created it (simplified version)
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="tag">&lt;DIV&gt;</span><span class="pln">
	</span><span class="tag">&lt;div&gt;</span><span class="pln"> h3 - Scroll down

	</span><span class="tag">&lt;div</span><span class="pln"> </span><span class="atn">ref</span><span class="pun">=</span><span class="atv">{container}</span><span class="tag">&gt;</span><span class="pln">
		</span><span class="tag">&lt;svg&gt;</span><span class="pln">

	</span><span class="tag">&lt;div&gt;</span><span class="pln"> h3 - Scroll Up
</span><span class="tag">&lt;/DIV&gt;</span></pre>

<p>
	<br />
	what I am aiming for is after the first div <br />
	the second div should be scrollable and finish the animation first before I see the 3rd div.<br />
	<br />
	maybe there is a problem with my classes setup or how I the HTML is created.<br />
	<br />
	This is my code.<br />
	currently following Scroll-Driven SVG Plant Animation 3: Adding ScrollTrigger lesson from Creative Coding Club. <br />
	<br />
	PS: The pin kind of works but I just noticed that it expands the height to be "scrollable" but its kind of different to the ScrollTrigger lesson where it stays  the size before it proceed to the bottom element. not sure if I am making sense. I am using Brave browser.<br />
	<br />
	EDIT: I uploaded it on code pen with the help of AI to set it up. Scroll Trigger Demo<br />
	any help is appreciated. thank you.<br />
	<br />
	this is the real code as reference:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> useGSAP </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"@gsap/react"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> gsap </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="typ">DrawSVGPlugin</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap/DrawSVGPlugin"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">GSDevTools</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap/GSDevTools"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">ScrollTrigger</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap/ScrollTrigger"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="typ">React</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> useRef </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"react"</span><span class="pun">;</span><span class="pln">

gsap</span><span class="pun">.</span><span class="pln">registerPlugin</span><span class="pun">(</span><span class="pln">useGSAP</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GSDevTools</span><span class="pun">,</span><span class="pln"> </span><span class="typ">DrawSVGPlugin</span><span class="pun">,</span><span class="pln"> </span><span class="typ">ScrollTrigger</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">export</span><span class="pln"> </span><span class="kwd">default</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="typ">FlowerSVG</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> container </span><span class="pun">=</span><span class="pln"> useRef</span><span class="pun">(</span><span class="kwd">null</span><span class="pun">);</span><span class="pln">

  useGSAP</span><span class="pun">(</span><span class="pln">
    </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      gsap</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="str">".flower"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">});</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> leafL </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">".leaf-left"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> leafR </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">".leaf-right"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> stem </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelectorAll</span><span class="pun">(</span><span class="str">".leaf-stem &gt; *"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> face </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">".face"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> eyes </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelectorAll</span><span class="pun">(</span><span class="str">".eyes"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> innerPetal </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">".inner-petal"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> outerPetal </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">".outer-petal"</span><span class="pun">);</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> leafTl </span><span class="pun">=</span><span class="pln"> gsap
        </span><span class="pun">.</span><span class="pln">timeline</span><span class="pun">({</span><span class="pln">
          id</span><span class="pun">:</span><span class="pln"> </span><span class="str">"leaf-tl"</span><span class="pun">,</span><span class="pln">
          defaults</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.7</span><span class="pun">,</span><span class="pln">
            scale</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln">
            ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">"sine"</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">},</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="pln">leafL</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"right bottom"</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="pln">leafR</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"left bottom"</span><span class="pln"> </span><span class="pun">},</span><span class="pln"> </span><span class="str">"&lt;+=0.5"</span><span class="pun">);</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> faceTl </span><span class="pun">=</span><span class="pln"> gsap
        </span><span class="pun">.</span><span class="pln">timeline</span><span class="pun">({</span><span class="pln">
          id</span><span class="pun">:</span><span class="pln"> </span><span class="str">"face-tl"</span><span class="pun">,</span><span class="pln">
          defaults</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            scale</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln">
            transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"center center"</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">},</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="pln">face</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
          duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.5</span><span class="pun">,</span><span class="pln">
          ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">"power1.inOut"</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="pln">
          innerPetal</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">{</span><span class="pln">
            duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln">
            ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">"back(-1)"</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">},</span><span class="pln">
          </span><span class="str">"-=0.3"</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">)</span><span class="pln">
        </span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="pln">
          outerPetal</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">{</span><span class="pln">
            duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln">
            ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">"back"</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">},</span><span class="pln">
          </span><span class="str">"&lt;+=0.5"</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">);</span><span class="pln">

      </span><span class="com">//Do not add a tween on a timeline if you are going to use a timeScale</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> flowerTl </span><span class="pun">=</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">timeline</span><span class="pun">({</span><span class="pln"> id</span><span class="pun">:</span><span class="pln"> </span><span class="str">"flower-master-timeline"</span><span class="pln"> </span><span class="pun">});</span><span class="pln">
      </span><span class="com">// .timeScale(1.8);</span><span class="pln">

      flowerTl</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="pln">leafTl</span><span class="pun">);</span><span class="pln">
      flowerTl</span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="pln">
        stem</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
          drawSVG</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln">
          ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">"power1.inOut"</span><span class="pun">,</span><span class="pln">
          duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">},</span><span class="pln">
        </span><span class="str">"-=0.5"</span><span class="pun">,</span><span class="pln">
      </span><span class="pun">);</span><span class="pln">
      flowerTl</span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="pln">faceTl</span><span class="pun">);</span><span class="pln">
      flowerTl</span><span class="pun">.</span><span class="kwd">from</span><span class="pun">(</span><span class="pln">
        eyes</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
          opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln">
          duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln">
          transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"center center"</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">},</span><span class="pln">
        </span><span class="lit">2.7</span><span class="pun">,</span><span class="pln">
      </span><span class="pun">);</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> svg </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">querySelector</span><span class="pun">(</span><span class="str">"svg"</span><span class="pun">);</span><span class="pln">

      </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="pln">svg</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">return</span><span class="pun">;</span><span class="pln">

      </span><span class="typ">ScrollTrigger</span><span class="pun">.</span><span class="pln">create</span><span class="pun">({</span><span class="pln">
        trigger</span><span class="pun">:</span><span class="pln"> </span><span class="str">"svg"</span><span class="pun">,</span><span class="pln">
        animation</span><span class="pun">:</span><span class="pln"> flowerTl</span><span class="pun">,</span><span class="pln">
        markers</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
        pin</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
    
        scrub</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">true</span><span class="pun">,</span><span class="pln">
        start</span><span class="pun">:</span><span class="pln"> </span><span class="str">"top center"</span><span class="pun">,</span><span class="pln">
        </span><span class="kwd">end</span><span class="pun">:</span><span class="pln"> </span><span class="str">"center center"</span><span class="pun">,</span><span class="pln">
      </span><span class="pun">});</span><span class="pln">
    </span><span class="pun">},</span><span class="pln">
    </span><span class="pun">{</span><span class="pln"> scope</span><span class="pun">:</span><span class="pln"> container </span><span class="pun">},</span><span class="pln">
  </span><span class="pun">);</span><span class="pln">

  </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">
    </span><span class="str">&lt;div&gt;</span><span class="pln">
      </span><span class="pun">&lt;</span><span class="pln">div className</span><span class="pun">=</span><span class="str">"flower-wrapper w-full min-h-dvh bg-red-200 flex items-center justify-center"</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="pln">h3 className</span><span class="pun">=</span><span class="str">"text-5xl font-bold"</span><span class="pun">&gt;</span><span class="typ">Scroll</span><span class="pln"> down</span><span class="pun">&lt;</span><span class="str">/h3&gt;
      &lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">

      </span><span class="pun">&lt;</span><span class="pln">div
        </span><span class="kwd">ref</span><span class="pun">={</span><span class="pln">container</span><span class="pun">}</span><span class="pln">
        className</span><span class="pun">=</span><span class="str">"w-full max-w-md  bg-red-200 flower-wrapper"</span><span class="pln">
      </span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="pln">svg xmlns</span><span class="pun">=</span><span class="str">"http://www.w3.org/2000/svg"</span><span class="pln"> viewBox</span><span class="pun">=</span><span class="str">"0 0 300 300"</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="str">&lt;defs&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">filter
              id</span><span class="pun">=</span><span class="str">"leaf-right-filter-shadow"</span><span class="pln">
              colorInterpolationFilters</span><span class="pun">=</span><span class="str">"sRGB"</span><span class="pln">
              x</span><span class="pun">=</span><span class="str">"-50%"</span><span class="pln">
              y</span><span class="pun">=</span><span class="str">"-50%"</span><span class="pln">
              width</span><span class="pun">=</span><span class="str">"200%"</span><span class="pln">
              height</span><span class="pun">=</span><span class="str">"200%"</span><span class="pln">
            </span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feGaussianBlur </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceAlpha"</span><span class="pln"> stdDeviation</span><span class="pun">={</span><span class="lit">1</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feOffset dx</span><span class="pun">={-</span><span class="lit">2</span><span class="pun">}</span><span class="pln"> dy</span><span class="pun">={-</span><span class="lit">1</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feComponentTransfer result</span><span class="pun">=</span><span class="str">"offsetblur"</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">feFuncA id</span><span class="pun">=</span><span class="str">"spread-ctrl"</span><span class="pln"> type</span><span class="pun">=</span><span class="str">"linear"</span><span class="pln"> slope</span><span class="pun">={</span><span class="lit">0.34</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="str">/feComponentTransfer&gt;
              &lt;feFlood floodColor="#000000a0" /</span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feComposite in2</span><span class="pun">=</span><span class="str">"offsetblur"</span><span class="pln"> </span><span class="kwd">operator</span><span class="pun">=</span><span class="str">"in"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="str">&lt;feMerge&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">feMergeNode </span><span class="pun">/&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">feMergeNode </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceGraphic"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="str">/feMerge&gt;
            &lt;/</span><span class="pln">filter</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">filter
              id</span><span class="pun">=</span><span class="str">"leaf-left-filter-shadow"</span><span class="pln">
              colorInterpolationFilters</span><span class="pun">=</span><span class="str">"sRGB"</span><span class="pln">
              x</span><span class="pun">=</span><span class="str">"-50%"</span><span class="pln">
              y</span><span class="pun">=</span><span class="str">"-50%"</span><span class="pln">
              width</span><span class="pun">=</span><span class="str">"200%"</span><span class="pln">
              height</span><span class="pun">=</span><span class="str">"200%"</span><span class="pln">
            </span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feGaussianBlur </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceAlpha"</span><span class="pln"> stdDeviation</span><span class="pun">={</span><span class="lit">1</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feOffset dx</span><span class="pun">={-</span><span class="lit">1</span><span class="pun">}</span><span class="pln"> dy</span><span class="pun">={</span><span class="lit">1</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feComponentTransfer result</span><span class="pun">=</span><span class="str">"offsetblur"</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">feFuncA id</span><span class="pun">=</span><span class="str">"spread-ctrl"</span><span class="pln"> type</span><span class="pun">=</span><span class="str">"linear"</span><span class="pln"> slope</span><span class="pun">={</span><span class="lit">1</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="str">/feComponentTransfer&gt;
              &lt;feFlood floodColor="rgba(0,0,0,0.3)" /</span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feComposite in2</span><span class="pun">=</span><span class="str">"offsetblur"</span><span class="pln"> </span><span class="kwd">operator</span><span class="pun">=</span><span class="str">"in"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="str">&lt;feMerge&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">feMergeNode </span><span class="pun">/&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">feMergeNode </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceGraphic"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="str">/feMerge&gt;
            &lt;/</span><span class="pln">filter</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">filter
              id</span><span class="pun">=</span><span class="str">"outer-petal-filter-shadow"</span><span class="pln">
              colorInterpolationFilters</span><span class="pun">=</span><span class="str">"sRGB"</span><span class="pln">
              x</span><span class="pun">=</span><span class="str">"-50%"</span><span class="pln">
              y</span><span class="pun">=</span><span class="str">"-50%"</span><span class="pln">
              width</span><span class="pun">=</span><span class="str">"200%"</span><span class="pln">
              height</span><span class="pun">=</span><span class="str">"200%"</span><span class="pln">
            </span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feGaussianBlur </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceAlpha"</span><span class="pln"> stdDeviation</span><span class="pun">={</span><span class="lit">1</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feOffset dx</span><span class="pun">={</span><span class="lit">1</span><span class="pun">}</span><span class="pln"> dy</span><span class="pun">={</span><span class="lit">4</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feComponentTransfer result</span><span class="pun">=</span><span class="str">"offsetblur"</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">feFuncA id</span><span class="pun">=</span><span class="str">"spread-ctrl"</span><span class="pln"> type</span><span class="pun">=</span><span class="str">"linear"</span><span class="pln"> slope</span><span class="pun">={</span><span class="lit">1</span><span class="pun">}</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="str">/feComponentTransfer&gt;
              &lt;feFlood floodColor="rgba(0,0,0,0.3)" /</span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">feComposite in2</span><span class="pun">=</span><span class="str">"offsetblur"</span><span class="pln"> </span><span class="kwd">operator</span><span class="pun">=</span><span class="str">"in"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="str">&lt;feMerge&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">feMergeNode </span><span class="pun">/&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">feMergeNode </span><span class="kwd">in</span><span class="pun">=</span><span class="str">"SourceGraphic"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="str">/feMerge&gt;
            &lt;/</span><span class="pln">filter</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/defs&gt;
          &lt;g
            className="flower"
            transform="matrix(1, 0, 0, 1, 1.154228, -13.751999)"
            opacity={0}
          &gt;
            &lt;g
              className="leaf-stem"
              transform="matrix(1, 0, 0, 1, 1.340151, -14.741662)"
            &gt;
              &lt;path
                style={{
                  fill: "none",
                  strokeLinecap: "round",
                  strokeWidth: 9,
                  stroke: "rgb(148, 184, 107)",
                }}
                d="M 145.661 251.726 C 145.661 251.726 138.755 239.108 144.404 223.159 C 146.938 216.006 154.045 200.291 148.96 188.498 C 133.092 151.697 147.357 152.005 147.357 152.005"
                className="stem-border"
              /</span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">path
                style</span><span class="pun">={{</span><span class="pln">
                  fill</span><span class="pun">:</span><span class="pln"> </span><span class="str">"none"</span><span class="pun">,</span><span class="pln">
                  strokeWidth</span><span class="pun">:</span><span class="pln"> </span><span class="lit">6</span><span class="pun">,</span><span class="pln">
                  strokeLinecap</span><span class="pun">:</span><span class="pln"> </span><span class="str">"round"</span><span class="pun">,</span><span class="pln">
                  stroke</span><span class="pun">:</span><span class="pln"> </span><span class="str">"rgb(162, 206, 105)"</span><span class="pun">,</span><span class="pln">
                </span><span class="pun">}}</span><span class="pln">
                d</span><span class="pun">=</span><span class="str">"M 146.608 252.193 C 146.608 252.193 138.993 237.253 144.642 221.859 C 147.176 214.954 154.283 199.786 149.198 188.404 C 133.33 152.883 147.595 153.181 147.595 153.181"</span><span class="pln">
                className</span><span class="pun">=</span><span class="str">"stem"</span><span class="pln">
              </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/g&gt;
            &lt;g
              className="leaf leaf-right"
              transform="matrix(1, 0, 0, 1, -6.611467, -13.588678)"
            &gt;
              &lt;path
                d="M 207.743 237.29 C 217.251 234.665 227.251 230.355 204.606 226.036 C 181.961 221.718 152.549 235.05 152.549 247.987 C 152.549 254.62 159.498 258.232 161.995 258.706 C 166.238 259.51 171.259 256.138 179.522 250.805 C 196.479 239.859 198.234 239.916 207.743 237.29 Z"
                style={{
                  fill: "rgb(162, 206, 105)",
                  filter: "url(#leaf-right-filter-shadow)",
                  transformBox: "fill-box",
                  transformOrigin: "50% 50%",
                }}
                transform="matrix(-1, 0, 0, -1, 0.000018, -0.000014)"
              /</span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">g className</span><span class="pun">=</span><span class="str">"midrib-right"</span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">path
                  style</span><span class="pun">={{</span><span class="pln">
                    fill</span><span class="pun">:</span><span class="pln"> </span><span class="str">"none"</span><span class="pun">,</span><span class="pln">
                    stroke</span><span class="pun">:</span><span class="pln"> </span><span class="str">"rgb(97, 138, 90)"</span><span class="pun">,</span><span class="pln">
                    strokeLinecap</span><span class="pun">:</span><span class="pln"> </span><span class="str">"round"</span><span class="pun">,</span><span class="pln">
                  </span><span class="pun">}}</span><span class="pln">
                  d</span><span class="pun">=</span><span class="str">"M 170.503 251.249 C 170.503 251.249 186.697 250.131 194.035 245.929 C 199.214 242.963 206.45 234.4 207.171 233.018 M 198.511 243.168 C 199.957 244.976 207.46 244.524 207.46 244.524 M 191.187 246.965 C 189.379 246.603 193.9 238.557 193.9 238.557"</span><span class="pln">
                </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="str">/g&gt;
            &lt;/</span><span class="pln">g</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">g
              transform</span><span class="pun">=</span><span class="str">"matrix(1, 0, 0, 1, 0.030157, -16.639734)"</span><span class="pln">
              className</span><span class="pun">=</span><span class="str">"leaf leaf-left"</span><span class="pln">
            </span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">path
                d</span><span class="pun">=</span><span class="str">"M 135.936 248.54 C 145.353 252.786 160.416 266.349 132.83 266.742 C 105.244 267.135 81.016 251.829 81.276 231.238 C 81.412 220.51 88.157 214.666 90.631 213.9 C 94.833 212.599 99.805 218.053 107.988 226.68 C 124.782 244.385 126.52 244.292 135.936 248.54 Z"</span><span class="pln">
                style</span><span class="pun">={{</span><span class="pln">
                  fill</span><span class="pun">:</span><span class="pln"> </span><span class="str">"rgb(162, 206, 105)"</span><span class="pun">,</span><span class="pln">
                  filter</span><span class="pun">:</span><span class="pln"> </span><span class="str">"url(#leaf-left-filter-shadow)"</span><span class="pun">,</span><span class="pln">
                  transformBox</span><span class="pun">:</span><span class="pln"> </span><span class="str">"fill-box"</span><span class="pun">,</span><span class="pln">
                  transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"50% 50%"</span><span class="pun">,</span><span class="pln">
                </span><span class="pun">}}</span><span class="pln">
                transform</span><span class="pun">=</span><span class="str">"matrix(0.992658, -0.120957, 0.120957, 0.992658, 0, 0)"</span><span class="pln">
              </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">g
                className</span><span class="pun">=</span><span class="str">"midrib-left"</span><span class="pln">
                transform</span><span class="pun">=</span><span class="str">"matrix(1.067774, -0.018638, 0.01675, 0.959622, 0.763628, 4.391307)"</span><span class="pln">
                style</span><span class="pun">={{</span><span class="pln">
                  transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"113.342px 237.775px"</span><span class="pun">,</span><span class="pln">
                </span><span class="pun">}}</span><span class="pln">
              </span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">path
                  style</span><span class="pun">={{</span><span class="pln">
                    fill</span><span class="pun">:</span><span class="pln"> </span><span class="str">"none"</span><span class="pun">,</span><span class="pln">
                    stroke</span><span class="pun">:</span><span class="pln"> </span><span class="str">"rgb(97, 138, 90)"</span><span class="pun">,</span><span class="pln">
                    strokeLinecap</span><span class="pun">:</span><span class="pln"> </span><span class="str">"round"</span><span class="pun">,</span><span class="pln">
                  </span><span class="pun">}}</span><span class="pln">
                  d</span><span class="pun">=</span><span class="str">"M 90.889 223.539 C 90.331 227.813 97.917 235.227 107.224 241.381 C 118.748 249.001 127.346 253.522 135.824 251.55 M 98.184 234.335 C 101.437 233.251 100 224.998 100 224.998 M 102.826 238.579 C 102.826 240.438 93.489 239.455 93.489 239.455 M 108.98 242.505 C 109.838 242.505 108.674 234.92 108.105 232.877 M 117.734 248.34 C 115.506 250.477 109.145 249.759 107.23 250.383"</span><span class="pln">
                </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="str">/g&gt;
            &lt;/</span><span class="pln">g</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">g
              className</span><span class="pun">=</span><span class="str">"leaf-face"</span><span class="pln">
              transform</span><span class="pun">=</span><span class="str">"matrix(1, 0, 0, 1, 1.340151, -14.741662)"</span><span class="pln">
            </span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">ellipse
                style</span><span class="pun">={{</span><span class="pln">
                  strokeWidth</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln">
                  fill</span><span class="pun">:</span><span class="pln"> </span><span class="str">"rgb(245, 101, 52)"</span><span class="pun">,</span><span class="pln">
                  filter</span><span class="pun">:</span><span class="pln"> </span><span class="str">"url(#outer-petal-filter-shadow)"</span><span class="pun">,</span><span class="pln">
                </span><span class="pun">}}</span><span class="pln">
                cx</span><span class="pun">={</span><span class="lit">151.738</span><span class="pun">}</span><span class="pln">
                cy</span><span class="pun">={</span><span class="lit">139.568</span><span class="pun">}</span><span class="pln">
                rx</span><span class="pun">={</span><span class="lit">66.27</span><span class="pun">}</span><span class="pln">
                ry</span><span class="pun">={</span><span class="lit">51.309</span><span class="pun">}</span><span class="pln">
                className</span><span class="pun">=</span><span class="str">"outer-petal"</span><span class="pln">
              </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">ellipse
                style</span><span class="pun">={{</span><span class="pln">
                  strokeWidth</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln">
                  fill</span><span class="pun">:</span><span class="pln"> </span><span class="str">"rgb(243, 207, 59)"</span><span class="pun">,</span><span class="pln">
                </span><span class="pun">}}</span><span class="pln">
                cx</span><span class="pun">={</span><span class="lit">151.738</span><span class="pun">}</span><span class="pln">
                cy</span><span class="pun">={</span><span class="lit">139.568</span><span class="pun">}</span><span class="pln">
                rx</span><span class="pun">={</span><span class="lit">48.154</span><span class="pun">}</span><span class="pln">
                ry</span><span class="pun">={</span><span class="lit">37.283</span><span class="pun">}</span><span class="pln">
                className</span><span class="pun">=</span><span class="str">"inner-petal"</span><span class="pln">
              </span><span class="pun">/&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">g
                className</span><span class="pun">=</span><span class="str">"leaf-face"</span><span class="pln">
                transform</span><span class="pun">=</span><span class="str">"matrix(1, 0, 0, 1, 9.247013, -3.773018)"</span><span class="pln">
              </span><span class="pun">&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">ellipse
                  className</span><span class="pun">=</span><span class="str">"face"</span><span class="pln">
                  style</span><span class="pun">={{</span><span class="pln">
                    fill</span><span class="pun">:</span><span class="pln"> </span><span class="str">"rgb(231, 231, 231)"</span><span class="pun">,</span><span class="pln">
                  </span><span class="pun">}}</span><span class="pln">
                  cx</span><span class="pun">={</span><span class="lit">142.491</span><span class="pun">}</span><span class="pln">
                  cy</span><span class="pun">={</span><span class="lit">143.341</span><span class="pun">}</span><span class="pln">
                  rx</span><span class="pun">={</span><span class="lit">30.913</span><span class="pun">}</span><span class="pln">
                  ry</span><span class="pun">={</span><span class="lit">23.934</span><span class="pun">}</span><span class="pln">
                </span><span class="pun">/&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="pln">g className</span><span class="pun">=</span><span class="str">"eyes"</span><span class="pun">&gt;</span><span class="pln">
                  </span><span class="pun">&lt;</span><span class="pln">ellipse
                    style</span><span class="pun">={{}}</span><span class="pln">
                    cx</span><span class="pun">={</span><span class="lit">130.543</span><span class="pun">}</span><span class="pln">
                    cy</span><span class="pun">={</span><span class="lit">143.341</span><span class="pun">}</span><span class="pln">
                    rx</span><span class="pun">={</span><span class="lit">3.826</span><span class="pun">}</span><span class="pln">
                    ry</span><span class="pun">={</span><span class="lit">9.236</span><span class="pun">}</span><span class="pln">
                    className</span><span class="pun">=</span><span class="str">"left-eye"</span><span class="pln">
                  </span><span class="pun">/&gt;</span><span class="pln">
                  </span><span class="pun">&lt;</span><span class="pln">ellipse
                    style</span><span class="pun">={{}}</span><span class="pln">
                    cx</span><span class="pun">={</span><span class="lit">152.839</span><span class="pun">}</span><span class="pln">
                    cy</span><span class="pun">={</span><span class="lit">143.341</span><span class="pun">}</span><span class="pln">
                    rx</span><span class="pun">={</span><span class="lit">3.826</span><span class="pun">}</span><span class="pln">
                    ry</span><span class="pun">={</span><span class="lit">9.236</span><span class="pun">}</span><span class="pln">
                    className</span><span class="pun">=</span><span class="str">"left-eye"</span><span class="pln">
                  </span><span class="pun">/&gt;</span><span class="pln">
                </span><span class="pun">&lt;</span><span class="str">/g&gt;
              &lt;/</span><span class="pln">g</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/g&gt;
          &lt;/</span><span class="pln">g</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="str">/svg&gt;
      &lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">

      </span><span class="pun">&lt;</span><span class="pln">div className</span><span class="pun">=</span><span class="str">"bg-blue-200 h-dvh w-full flex flex-col justify-center items-center"</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="pln">h3 className</span><span class="pun">=</span><span class="str">"text-[clamp(1.5rem,4vw,3rem)] font-bold bg-amber-600"</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="typ">Scroll</span><span class="pln"> down
        </span><span class="pun">&lt;</span><span class="str">/h3&gt;
      &lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
  </span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	 
</p>




<p data-height="450" data-slug-hash="EaWKPyd" data-user="Zee-CH-ZeeCH" class='codepen' data-tab-bar-color="#222" data-default-tab="html,result">
    <span>See the Pen <a href='https://codepen.io/Zee-CH-ZeeCH/pen/EaWKPyd'>EaWKPyd</a> by Zee-CH-ZeeCH (<a href='https://codepen.io/Zee-CH-ZeeCH'>@Zee-CH-ZeeCH</a>) on <a href='https://codepen.io'>CodePen</a>.</span>
</p>

]]></description><guid isPermaLink="false">45548</guid><pubDate>Sun, 06 Sep 2026 10:17:20 +0000</pubDate></item><item><title>Resize on matchMedia breakpoint with ScrollTrigger jumps to top of page</title><link>https://gsap.com/community/forums/topic/45542-resize-on-matchmedia-breakpoint-with-scrolltrigger-jumps-to-top-of-page/</link><description><![CDATA[<p>
	Hello
</p>

<p>
	 
</p>

<p>
	Having a ScrollTrigger.create() inside <a href="https://greensock.com/docs/v3/GSAP/gsap.matchMedia()" rel="external nofollow">gsap.matchMedia()</a> makes the browser jump to the top of the page on window resize when it hits a breakpoint.
</p>

<p>
	I was upgrading GSAP from 3.13 (where this didn't happen) and noticed 3.14 and 3.15 both jump to the top.
</p>

<p>
	 
</p>

<p>
	<span><a href="https://gsap.com/demo" rel="external nofollow">Minimal demo</a></span>: <a href="https://jsfiddle.net/s51z4xkd/1/" rel="external nofollow">https://jsfiddle.net/s51z4xkd/1/</a>
</p>

<p>
	I used jsfiddle, hope that's okay - no signup needed compared to codepen.
</p>

<p>
	 
</p>

<p>
	Thanks!
</p>
]]></description><guid isPermaLink="false">45542</guid><pubDate>Thu, 27 Aug 2026 11:11:21 +0000</pubDate></item><item><title>The right way using gsap context in vue or nuxt project?</title><link>https://gsap.com/community/forums/topic/40143-the-right-way-using-gsap-context-in-vue-or-nuxt-project/</link><description><![CDATA[<p>
	Hi, actually just quick question, because this can be change my behavior in future on writing gsap code.<br />
	<br />
	In gsap context docs, mostly the docs only show use case for react, meanwhile, I'm using vue/nuxt 3.<br />
	<br />
	So I have a question especially on reverting the context,  which one is the right one?<br />
	<br />
	Example 1: <br />
	<img alt="image.png.6410cdf94ac57b67d915ac8bcee655ab.png" class="ipsImage ipsImage_thumbnailed" data-fileid="12314" data-ratio="100.22" width="458" src="https://gsap.com/community/uploads/monthly_2024_03/image.png.6410cdf94ac57b67d915ac8bcee655ab.png" /><br />
	<br />
	Example 2 (define ctx variable outside and call the revert onUnmounted):<br />
	<img class="ipsImage ipsImage_thumbnailed" data-fileid="12316" data-ratio="118.91" width="460" alt="image.png.4d886764fb337f56b82bc59f66aeeba9.png" src="https://gsap.com/community/uploads/monthly_2024_03/image.png.4d886764fb337f56b82bc59f66aeeba9.png" /><br />
	<br />
	Or maybe there's a better way to code than these examples?<br />
	<br />
	Thank you.
</p>
]]></description><guid isPermaLink="false">40143</guid><pubDate>Fri, 08 Mar 2024 10:44:12 +0000</pubDate></item><item><title>Hiring: Senior Web Developer &#x2014; Case-Opening Platform (Refinement + New Features)</title><link>https://gsap.com/community/forums/topic/45545-hiring-senior-web-developer-%E2%80%94-case-opening-platform-refinement-new-features/</link><description><![CDATA[<p>
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">I'm looking for an experienced web developer to work on an existing, already-built case-opening platform. The site is live and functional. This job is about refining the current UI and building a set of new features on top of it, not starting from scratch.</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Reference sites (for context on the product type):</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Clash.gg, CSGORoll, EmpireDrop, Packdraw, Rain.gg, Key-Drop</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Scope of work</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">UI/UX refinement across existing pages, implemented from Figma designs exactly as designed</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Full responsive handling (designs are single-layout, so breakpoints are your call)</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">New feature development, including admin-panel controls for content that is currently hardcoded</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">All existing backend logic and API connections must remain intact. Design and features change; functionality stays consistent</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Clean, maintainable code with proper handoff documentation</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Stack</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Node.js, MongoDB, Redis, Socket.io, AWS S3, Docker, crypto payment integration. Real-time features and provably-fair mechanics are part of the codebase.</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Requirements</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Senior-level only. Juniors, beginners and "I will learn while doing" applicants should not apply</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">A portfolio with live links is mandatory. Applications without one will be ignored</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Previous experience with case-opening, mystery-box or similar real-time reward platforms is a strong advantage and will be prioritised</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Solid understanding of WebSocket-based real-time features, race conditions, and basic application security</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Able to communicate in English and give realistic timelines</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Hiring process</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Shortlisted applicants will be given a short test task before final selection. It will be small and time-limited, purely to verify code quality and working style. Please only apply if you are willing to complete it.</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Budget</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Up to $1,500 USD for the agreed scope. Final number depends on your experience and the delivery timeline you propose.</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Payment terms</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Work will only be done through an escrow platform (Fiverr, Upwork or similar) or through a mutually agreed trusted middleman. No exceptions, no advance payments outside escrow. Milestone-based release is fine.</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">To apply, send:</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Portfolio / live project links</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Any past work on similar platforms</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Your estimated timeline</span><br style="background-color:#ecedf3;color:#000000;font-size:13px;" />
	<span style="background-color:#ecedf3;color:#000000;font-size:13px;">Contact tg- @decaprio32</span>
</p>
]]></description><guid isPermaLink="false">45545</guid><pubDate>Wed, 02 Sep 2026 15:49:57 +0000</pubDate></item><item><title><![CDATA[Looking for Designers, Developers & Digital Marketing Specialists]]></title><link>https://gsap.com/community/forums/topic/45541-looking-for-designers-developers-digital-marketing-specialists/</link><description><![CDATA[<p>
	<span>We’re building a professional network of talented </span><strong><span>Designers, Developers, and Digital Marketing Specialists</span></strong><span> who are interested in receiving client projects through our network.</span>
</p>

<p>
	<strong><span>How it works:</span></strong><br />
	<span>• We bring potential clients to you</span><br />
	<span>• You handle the project from start to finish</span><br />
	<span>• You choose your own pricing</span><br />
	<span>• First 3 sales → </span><strong><span>0% platform fee</span></strong><br />
	<span>• After 3 sales → </span><strong><span>20% fee per sale</span></strong><br />
	<span>• Crypto or Bank Transfer payments</span><br />
	<span>• No joining fee or upfront cost</span>
</p>

<h3>
	<span>Requirements</span>
</h3>

<p>
	<strong><span>LinkedIn is required.</span></strong><span> You must have an active LinkedIn profile, as your profile and professional expertise will be used to showcase you to potential clients.</span>
</p>

<p>
	<strong><span>Discord is also required.</span></strong><span> You’ll receive a dedicated role on our Discord server based on your service. When a client needs your expertise, we’ll open a ticket and mention you directly.</span>
</p>

<p>
	<span>Interested?</span>
</p>

<p>
	<span>contact us on Discord: </span><strong><span>dashed.io.bluff</span></strong>
</p>

<p>
	<span>Only serious professionals who are ready to take on client projects should reach out.</span>
</p>
]]></description><guid isPermaLink="false">45541</guid><pubDate>Wed, 26 Aug 2026 15:31:48 +0000</pubDate></item><item><title>I can't seem to make the slow ease work in React.</title><link>https://gsap.com/community/forums/topic/45540-i-cant-seem-to-make-the-slow-ease-work-in-react/</link><description><![CDATA[<p>
	<span style="font-size:16px;">I am following the CreativeCodingClub SVG lesson: Line Jumper Advanced: Clip Path, Holes and Nesting Animations I kind of copy the code from the tutorial then translate it to React.<br />
	the SVG was made in Figma and then used svgview.dev to translate this into a React component.<br />
	<br />
	I can't seem to feel the </span><code>firstJump timeline</code><span style="font-size:16px;">is doing any slow at all. I even tweaked the timeline defaults duration and parameters of slow() just to see its effect but no luck.<br />
	I am really confused why it doesn't seem to work, I already import a EasePack.<br />
	<br />
	animation goes like this: a line jumps out of the hole at the middle it will slowdown then animation goes normal again then  jumps to the second hole.<br />
	<br />
	there is probably a different approach to this without using slow() but the lesson is about it so I am avoiding putting like customEase etc.<br />
	any tips you can suggest to make the slow works? thank you.</span>
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted"><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> useGSAP </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"@gsap/react"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> gsap </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">GSDevTools</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap/GSDevTools"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="typ">React</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> useRef </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"react"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">DrawSVGPlugin</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap/DrawSVGPlugin"</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">import</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> </span><span class="typ">EasePack</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> </span><span class="str">"gsap/EasePack"</span><span class="pun">;</span><span class="pln">

gsap</span><span class="pun">.</span><span class="pln">registerPlugin</span><span class="pun">(</span><span class="pln">useGSAP</span><span class="pun">,</span><span class="pln"> </span><span class="typ">DrawSVGPlugin</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EasePack</span><span class="pun">,</span><span class="pln"> </span><span class="typ">GSDevTools</span><span class="pun">);</span><span class="pln">

</span><span class="kwd">export</span><span class="pln"> </span><span class="kwd">default</span><span class="pln"> </span><span class="kwd">function</span><span class="pln"> </span><span class="typ">JumpingWormSVG</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
  </span><span class="kwd">const</span><span class="pln"> container </span><span class="pun">=</span><span class="pln"> useRef</span><span class="pun">(</span><span class="kwd">null</span><span class="pun">);</span><span class="pln">

  useGSAP</span><span class="pun">(</span><span class="pln">
    </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
      </span><span class="com">//holes</span><span class="pln">
      gsap</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="str">"#holes"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> opacity</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">});</span><span class="pln">
      gsap</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="str">"#holes ellipse"</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> scale</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> transformOrigin</span><span class="pun">:</span><span class="pln"> </span><span class="str">"50% 50%"</span><span class="pln"> </span><span class="pun">});</span><span class="pln">
      </span><span class="kwd">function</span><span class="pln"> openHole</span><span class="pun">(</span><span class="pln">hole</span><span class="pun">:</span><span class="pln"> </span><span class="kwd">string</span><span class="pun">):</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">core</span><span class="pun">.</span><span class="typ">Timeline</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">const</span><span class="pln"> tl </span><span class="pun">=</span><span class="pln"> gsap
          </span><span class="pun">.</span><span class="pln">timeline</span><span class="pun">({</span><span class="pln"> defaults</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="pun">}</span><span class="pln"> </span><span class="pun">})</span><span class="pln">
          </span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">hole</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> scale</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pun">,</span><span class="pln"> ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">"back"</span><span class="pln"> </span><span class="pun">})</span><span class="pln">
          </span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">hole</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> scale</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.5</span><span class="pun">,</span><span class="pln"> ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">"power2.in"</span><span class="pln"> </span><span class="pun">},</span><span class="pln"> </span><span class="str">"+=0.1"</span><span class="pun">);</span><span class="pln">
        </span><span class="kwd">return</span><span class="pln"> tl</span><span class="pun">;</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">

      </span><span class="com">//worm-1 (short)</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> pointsShort </span><span class="pun">=</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> start</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">end</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">};</span><span class="pln">
      </span><span class="kwd">const</span><span class="pln"> drawShort </span><span class="pun">=</span><span class="pln"> gsap</span><span class="pun">.</span><span class="pln">quickSetter</span><span class="pun">(</span><span class="str">"#worm-1"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"drawSVG"</span><span class="pun">);</span><span class="pln">
      </span><span class="kwd">function</span><span class="pln"> updateShort</span><span class="pun">():</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        drawShort</span><span class="pun">(</span><span class="str">`${pointsShort.start}% ${pointsShort.end}%`</span><span class="pun">);</span><span class="pln">
      </span><span class="pun">}</span><span class="pln">

      </span><span class="com">//setup the initial value of start:0 and end:0 to #worm-1</span><span class="pln">
      updateShort</span><span class="pun">();</span><span class="pln">

      </span><span class="kwd">const</span><span class="pln"> firstJump </span><span class="pun">=</span><span class="pln"> gsap
        </span><span class="pun">.</span><span class="pln">timeline</span><span class="pun">({</span><span class="pln">
          onUpdate</span><span class="pun">:</span><span class="pln"> updateShort</span><span class="pun">,</span><span class="pln">
          repeat</span><span class="pun">:</span><span class="pln"> </span><span class="pun">-</span><span class="lit">1</span><span class="pun">,</span><span class="pln">
          defaults</span><span class="pun">:</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> duration</span><span class="pun">:</span><span class="pln"> </span><span class="lit">0.8</span><span class="pun">,</span><span class="pln"> ease</span><span class="pun">:</span><span class="pln"> </span><span class="str">"slow(0.6, 0.5)"</span><span class="pln"> </span><span class="pun">},</span><span class="pln">
        </span><span class="pun">})</span><span class="pln">
        </span><span class="pun">.</span><span class="pln">add</span><span class="pun">(</span><span class="pln">openHole</span><span class="pun">(</span><span class="str">"#hole-1"</span><span class="pun">))</span><span class="pln">
        </span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">
          pointsShort</span><span class="pun">,</span><span class="pln">
          </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">end</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pun">,</span><span class="pln">

            onUpdate</span><span class="pun">:</span><span class="pln"> </span><span class="pun">()</span><span class="pln"> </span><span class="pun">=&gt;</span><span class="pln"> console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">`end: ${pointsShort.end}`</span><span class="pun">),</span><span class="pln">
          </span><span class="pun">},</span><span class="pln">
          </span><span class="lit">0.5</span><span class="pun">,</span><span class="pln">
        </span><span class="pun">)</span><span class="pln">
        </span><span class="pun">.</span><span class="pln">to</span><span class="pun">(</span><span class="pln">pointsShort</span><span class="pun">,</span><span class="pln"> </span><span class="pun">{</span><span class="pln"> start</span><span class="pun">:</span><span class="pln"> </span><span class="lit">100</span><span class="pln"> </span><span class="pun">},</span><span class="pln"> </span><span class="lit">0.3</span><span class="pun">);</span><span class="pln">
      </span><span class="com">// .add(openHole("#hole-2"));</span><span class="pln">

      </span><span class="typ">GSDevTools</span><span class="pun">.</span><span class="pln">create</span><span class="pun">({</span><span class="pln"> animation</span><span class="pun">:</span><span class="pln"> firstJump </span><span class="pun">});</span><span class="pln">
    </span><span class="pun">},</span><span class="pln">
    </span><span class="pun">{</span><span class="pln"> scope</span><span class="pun">:</span><span class="pln"> container </span><span class="pun">},</span><span class="pln">
  </span><span class="pun">);</span><span class="pln">

  </span><span class="kwd">return</span><span class="pln"> </span><span class="pun">(</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="pln">div </span><span class="kwd">ref</span><span class="pun">={</span><span class="pln">container</span><span class="pun">}&gt;</span><span class="pln">
      </span><span class="pun">&lt;</span><span class="pln">svg
        width</span><span class="pun">={</span><span class="lit">1200</span><span class="pun">}</span><span class="pln">
        height</span><span class="pun">={</span><span class="lit">614</span><span class="pun">}</span><span class="pln">
        viewBox</span><span class="pun">=</span><span class="str">"0 0 1200 614"</span><span class="pln">
        fill</span><span class="pun">=</span><span class="str">"none"</span><span class="pln">
        xmlns</span><span class="pun">=</span><span class="str">"http://www.w3.org/2000/svg"</span><span class="pln">
      </span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="pln">g id</span><span class="pun">=</span><span class="str">"jump-hole"</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="pln">rect width</span><span class="pun">={</span><span class="lit">1200</span><span class="pun">}</span><span class="pln"> height</span><span class="pun">={</span><span class="lit">614</span><span class="pun">}</span><span class="pln"> fill</span><span class="pun">=</span><span class="str">"white"</span><span class="pln"> </span><span class="pun">/&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="pln">g id</span><span class="pun">=</span><span class="str">"holes"</span><span class="pln"> opacity</span><span class="pun">={</span><span class="lit">0</span><span class="pun">}&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"hole-1"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">100</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">510</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">77</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">28</span><span class="pun">}</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#1F1F1F"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"hole-2"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">500</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">510</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">77</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">28</span><span class="pun">}</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#1F1F1F"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"hole-3"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">800</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">510</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">77</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">28</span><span class="pun">}</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#1F1F1F"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">ellipse
              id</span><span class="pun">=</span><span class="str">"hole-4"</span><span class="pln">
              cx</span><span class="pun">={</span><span class="lit">1100</span><span class="pun">}</span><span class="pln">
              cy</span><span class="pun">={</span><span class="lit">510</span><span class="pun">}</span><span class="pln">
              rx</span><span class="pun">={</span><span class="lit">77</span><span class="pun">}</span><span class="pln">
              ry</span><span class="pun">={</span><span class="lit">28</span><span class="pun">}</span><span class="pln">
              fill</span><span class="pun">=</span><span class="str">"#1F1F1F"</span><span class="pln">
            </span><span class="pun">/&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="str">/g&gt;
          &lt;g id="first-jump"&gt;
            &lt;mask
              id="mask0_3610_9890"
              style={{
                maskType: "alpha",
              }}
              maskUnits="userSpaceOnUse"
              x={70}
              y={257}
              width={456}
              height={268}
            &gt;
              &lt;path
                id="worm-mask"
                d="M100 495C100 495 131.59 286.5 299.5 286.5C467.41 286.5 497 495 497 495"
                stroke="#45DBAC"
                strokeWidth={58}
                strokeLinecap="round"
              /</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/mask&gt;
            &lt;g mask="url(#mask0_3610_9890)"&gt;
              &lt;path
                id="worm-1"
                d="M94 545C94 545 123.631 287 297.022 287C470.412 287 502 543.503 502 543.503"
                stroke="#DB4545"
                strokeWidth={38}
                strokeLinecap="round"
              /</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/g&gt;
          &lt;/</span><span class="pln">g</span><span class="pun">&gt;</span><span class="pln">
          </span><span class="pun">&lt;</span><span class="pln">g id</span><span class="pun">=</span><span class="str">"second-jump"</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="pln">mask
              id</span><span class="pun">=</span><span class="str">"mask1_3610_9890"</span><span class="pln">
              style</span><span class="pun">={{</span><span class="pln">
                maskType</span><span class="pun">:</span><span class="pln"> </span><span class="str">"alpha"</span><span class="pun">,</span><span class="pln">
              </span><span class="pun">}}</span><span class="pln">
              maskUnits</span><span class="pun">=</span><span class="str">"userSpaceOnUse"</span><span class="pln">
              x</span><span class="pun">={</span><span class="lit">751</span><span class="pun">}</span><span class="pln">
              y</span><span class="pun">={</span><span class="lit">16</span><span class="pun">}</span><span class="pln">
              width</span><span class="pun">={</span><span class="lit">389</span><span class="pun">}</span><span class="pln">
              height</span><span class="pun">={</span><span class="lit">509</span><span class="pun">}</span><span class="pln">
            </span><span class="pun">&gt;</span><span class="pln">
              </span><span class="pun">&lt;</span><span class="pln">path
                id</span><span class="pun">=</span><span class="str">"worm-mask_2"</span><span class="pln">
                d</span><span class="pun">=</span><span class="str">"M794.361 483.633C794.361 483.633 759.916 56.5 943.5 56.5C1127.08 56.5 1097.33 475.649 1097.33 475.649"</span><span class="pln">
                stroke</span><span class="pun">=</span><span class="str">"#207D2E"</span><span class="pln">
                strokeWidth</span><span class="pun">={</span><span class="lit">81</span><span class="pun">}</span><span class="pln">
                strokeLinecap</span><span class="pun">=</span><span class="str">"round"</span><span class="pln">
              </span><span class="pun">/&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/mask&gt;
            &lt;g mask="url(#mask1_3610_9890)"&gt;
              &lt;path
                id="worm-2"
                d="M801.071 557.996C801.071 557.996 755.893 66.0859 939.477 66.0859C1123.06 66.0859 1096.91 558 1096.91 558"
                stroke="#DB4545"
                strokeWidth={38}
                strokeLinecap="round"
              /</span><span class="pun">&gt;</span><span class="pln">
            </span><span class="pun">&lt;</span><span class="str">/g&gt;
          &lt;/</span><span class="pln">g</span><span class="pun">&gt;</span><span class="pln">
        </span><span class="pun">&lt;</span><span class="str">/g&gt;
      &lt;/</span><span class="pln">svg</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;/</span><span class="pln">div</span><span class="pun">&gt;</span><span class="pln">
  </span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">45540</guid><pubDate>Tue, 25 Aug 2026 19:13:00 +0000</pubDate></item><item><title>GSAP ScrollTrigger pinned section causes scroll position jump when opening Base UI modal dialog with Lenis smooth scrolling</title><link>https://gsap.com/community/forums/topic/45528-gsap-scrolltrigger-pinned-section-causes-scroll-position-jump-when-opening-base-ui-modal-dialog-with-lenis-smooth-scrolling/</link><description><![CDATA[<p>
	I can't able to clear the issue. Please help me. for the issue reference, please follow the link.<br />
	<a href="https://stackoverflow.com/questions/79995376/gsap-scrolltrigger-pinned-section-causes-scroll-position-jump-when-opening-base?cb=1" rel="external nofollow">https://stackoverflow.com/questions/79995376/gsap-scrolltrigger-pinned-section-causes-scroll-position-jump-when-opening-base?cb=1</a>
</p>
]]></description><guid isPermaLink="false">45528</guid><pubDate>Wed, 19 Aug 2026 07:11:51 +0000</pubDate></item><item><title>ADAS - Car</title><link>https://gsap.com/community/forums/topic/45519-adas-car/</link><description><![CDATA[<p dir="ltr">
	<strong>Brief: Car render set for ADAS Lane Keep Assist HMI</strong>
</p>

<p dir="ltr">
	<strong>Vehicle</strong>: [car model/trim], rear exterior, as used in prior renders.
</p>

<p dir="ltr">
	<strong>Views needed</strong> (5 files):
</p>

<ol dir="ltr">
	<li>
		<code>Car_Straight</code> — dead-on rear view, camera at bumper height, car pointing straight ahead
	</li>
	<li>
		<code>Car_30_Left</code> — car yawed 30° to the left (as if steering left), viewed from behind/above
	</li>
	<li>
		<code>Car_30_Right</code> — mirror of the above, yawed 30° right
	</li>
	<li>
		<code>Car_60_Left</code> — yawed 60° left, same camera height/distance as the 30° shots
	</li>
	<li>
		<code>Car_60_Right</code> — mirror of the above, yawed 60° right
	</li>
</ol>

<p dir="ltr">
	<em>(Only 3 unique renders are strictly required — Straight, 30°, 60° — since Left/Right can be mirrored. But please render both sides natively if any asymmetric details, like exhaust or badges, should read correctly instead of flipped.)</em>
</p>

<p dir="ltr">
	<strong>Critical consistency requirements</strong> (this is the part that broke before):
</p>

<ul dir="ltr">
	<li>
		<strong>Same camera distance and focal length across all 5 shots</strong> — do not zoom in/out between angles. The car's body should occupy the <em>same proportion of the canvas</em> in every file (target: car fills ~95–98% of canvas width, with a uniform ~2–3% transparent margin on all sides).
	</li>
	<li>
		<strong>Same camera height/pitch</strong> across all shots — top-down angle should not vary between the straight shot and the 30°/60° shots. (Previously the straight view was a flatter rear-on shot while the turn views were steeper top-down angles — that mismatch is the main thing to avoid.)
	</li>
	<li>
		<strong>Car's ground contact point (wheels/shadow) at the same vertical position</strong> in the canvas across all 5 files, so it doesn't appear to jump up/down when swapping images.
	</li>
</ul>

<p dir="ltr">
	<strong>File specs</strong>:
</p>

<ul dir="ltr">
	<li>
		Format: PNG, transparent background (alpha channel, no matte/color fringing at edges)
	</li>
	<li>
		Resolution: ~1200–1500px on the longest side (will be
	</li>
</ul>

<p><a href="https://gsap.com/community/uploads/monthly_2026_08/Car_30Letf.png.1a87909478dd4818ed47468233ddb510.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="14999" src="https://gsap.com/community/uploads/monthly_2026_08/Car_30Letf.png.1a87909478dd4818ed47468233ddb510.png" data-ratio="93.6" width="297" class="ipsImage ipsImage_thumbnailed" alt="Car_30° Letf.png"></a></p>
<p><a href="https://gsap.com/community/uploads/monthly_2026_08/Car_30Right.png.8ae28155b3aa7e0d7ca04bec244724e5.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="15000" src="https://gsap.com/community/uploads/monthly_2026_08/Car_30Right.png.8ae28155b3aa7e0d7ca04bec244724e5.png" data-ratio="93.6" width="297" class="ipsImage ipsImage_thumbnailed" alt="Car_30° Right.png"></a></p>
<p><a href="https://gsap.com/community/uploads/monthly_2026_08/Car_60Letf.png.f73519acfe628b55bde79c9bdde163b3.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="15001" src="https://gsap.com/community/uploads/monthly_2026_08/Car_60Letf.png.f73519acfe628b55bde79c9bdde163b3.png" data-ratio="86.92" width="344" class="ipsImage ipsImage_thumbnailed" alt="Car_60° Letf.png"></a></p>
<p><a href="https://gsap.com/community/uploads/monthly_2026_08/Car_60Right.png.538293ac85c97b92100f9cec6cc23361.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="15002" src="https://gsap.com/community/uploads/monthly_2026_08/Car_60Right.png.538293ac85c97b92100f9cec6cc23361.png" data-ratio="86.92" width="344" class="ipsImage ipsImage_thumbnailed" alt="Car_60° Right.png"></a></p>
<p><a href="https://gsap.com/community/uploads/monthly_2026_08/Car_Image.png.e5f0faa69f9cf9545107d39fbe22d6ab.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="15003" src="https://gsap.com/community/uploads/monthly_2026_08/Car_Image.png.e5f0faa69f9cf9545107d39fbe22d6ab.png" data-ratio="99.6" width="253" class="ipsImage ipsImage_thumbnailed" alt="Car_Image.png"></a></p>
<p><a href="https://gsap.com/community/uploads/monthly_2026_08/Display_Car_line7inch.png.d7f36575e22e8375f5bee638a497e312.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="15010" src="https://gsap.com/community/uploads/monthly_2026_08/Display_Car_line7inch.png.d7f36575e22e8375f5bee638a497e312.png" data-ratio="60" width="800" class="ipsImage ipsImage_thumbnailed" alt="Display_Car_line 7inch.png"></a></p>
<p><a href="https://gsap.com/community/uploads/monthly_2026_08/FullLeft_GreyLines.png.35a82d41b1e4db19eb51d6bf38798dff.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="15011" src="https://gsap.com/community/uploads/monthly_2026_08/FullLeft_GreyLines.png.35a82d41b1e4db19eb51d6bf38798dff.png" data-ratio="81.4" width="484" class="ipsImage ipsImage_thumbnailed" alt="Full Left_Grey Lines.png"></a></p>
<p><a href="https://gsap.com/community/uploads/monthly_2026_08/LeftGreen_RightRed.png.b568c5cc47cc4b310e9a098ca1a87c90.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="15013" src="https://gsap.com/community/uploads/monthly_2026_08/LeftGreen_RightRed.png.b568c5cc47cc4b310e9a098ca1a87c90.png" data-ratio="81.4" width="484" class="ipsImage ipsImage_thumbnailed" alt="Left Green_Right Red.png"></a></p>
<p><a href="https://gsap.com/community/uploads/monthly_2026_08/LeftRed_RightGreen.png.f09950364e1ef2bae57589d56181faf8.png" class="ipsAttachLink ipsAttachLink_image" ><img data-fileid="15014" src="https://gsap.com/community/uploads/monthly_2026_08/LeftRed_RightGreen.png.f09950364e1ef2bae57589d56181faf8.png" data-ratio="81.4" width="484" class="ipsImage ipsImage_thumbnailed" alt="Left Red_Right Green.png"></a></p>]]></description><guid isPermaLink="false">45519</guid><pubDate>Mon, 10 Aug 2026 04:52:59 +0000</pubDate></item></channel></rss>
