【问题标题】:Parallax effect with GSAPGSAP 的视差效果
【发布时间】:2021-04-13 15:29:24
【问题描述】:

我有一个问题要问你,希望你能帮助我。我正在使用 GSAP, -ScrollTrigger v3.5.1 为自己构建视差效果,并为自己构建了一个名为 parallax() 的函数。

我想在我的 DOM 中使用不同设置的区域内为多个对象设置动画,这很有效。

问题:如果在我的代码中多次调用该函数,动画将不再流畅,尤其是当我使用负值和正值时。

JS:

parallax($('#fixed-hero-container .container'), $('#fixed-hero-container'), 0.3, -50, 0.3, true);
parallax($('#fixed-hero-container .container.container-d'), $('#fixed-hero-container'), 0.3, 100, 0.3, true);

function parallax(elA, elT, dur, val, scr, mark) {
        let tl = gsap.timeline();

        tl.to( elA, dur, {
            scrollTrigger: {
                trigger: elT,
                scrub: scr,
                markers: mark,
                start: '50% 50%',
                end: '55% 5%'
            },
            y: val,
            ease: 'power4.out'
        });
    }

HTML:

<div id="fixed-hero-container">
                <div class="fname">
                    <span class="container">M</span>
                    <span class="container container-d">a</span>
                    <span class="container">s</span>
                    <span class="container container-d">s</span>
                    <span class="container">i</span>
                    <span class="container container-d">m</span>
                    <span class="container">o</span>
                </div>

                <div class="name">
                    <span class="container">C</span>
                    <span class="container container-d">i</span>
                    <span class="container">l</span>
                    <span class="container container-d">l</span>
                    <span class="container">u</span>
                    <span class="container container-d">f</span>
                    <span class="container">f</span>
                    <span class="container container-d">o</span>
                </div>

                <!--<div class="scrollIndicator"></div>-->
            </div>

通过 CSS 我给单个 .container = transform: translate(X,Y) 作为起点,因为每个元素的起点不同。
每个跨度都有 display: inline-block;

【问题讨论】:

标签: javascript html jquery css gsap


【解决方案1】:

您对同样具有.container-d 类的.container 元素应用了两次parallax 函数。

也许您打算在第一个中使用.container:not(.container-d)

parallax($('#fixed-hero-container .container:not(.container-d)'), $('#fixed-hero-container'), 0.3, -50, 0.3, true);
parallax($('#fixed-hero-container .container.container-d'), $('#fixed-hero-container'), 0.3, 100, 0.3, true);

function parallax(elA, elT, dur, val, scr, mark) {
  let tl = gsap.timeline();

  tl.to(elA, dur, {
    scrollTrigger: {
      trigger: elT,
      scrub: scr,
      markers: mark,
      start: '0',
      end: '55% 5%'
    },
    y: val,
    ease: 'power4.out'
  });
}
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"&gt;&lt;/script&gt;&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.5.1/gsap.min.js"&gt;&lt;/script&gt;&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.5.1/ScrollTrigger.min.js"&gt;&lt;/script&gt;&lt;div id="fixed-hero-container"&gt; &lt;div class="fname"&gt; &lt;span class="container"&gt;M&lt;/span&gt; &lt;span class="container container-d"&gt;a&lt;/span&gt; &lt;span class="container"&gt;s&lt;/span&gt; &lt;span class="container container-d"&gt;s&lt;/span&gt; &lt;span class="container"&gt;i&lt;/span&gt; &lt;span class="container container-d"&gt;m&lt;/span&gt; &lt;span class="container"&gt;o&lt;/span&gt; &lt;/div&gt;&lt;div class="name"&gt; &lt;span class="container"&gt;C&lt;/span&gt; &lt;span class="container container-d"&gt;i&lt;/span&gt; &lt;span class="container"&gt;l&lt;/span&gt; &lt;span class="container container-d"&gt;l&lt;/span&gt; &lt;span class="container"&gt;u&lt;/span&gt; &lt;span class="container container-d"&gt;f&lt;/span&gt; &lt;span class="container"&gt;f&lt;/span&gt; &lt;span class="container container-d"&gt;o&lt;/span&gt; &lt;/div&gt;&lt;/div&gt;&lt;style&gt;body,html{min-height:300vh;margin:0;padding:0}#fixed-hero-container{font-family:Arial,Helvetica,sans-serif;font-weight:700;font-size:34px;text-align:center;height:100vh;padding-top:20vh;background:#222;color:#fff}.container{display:inline-block}&lt;/style&gt;

【讨论】:

    猜你喜欢
    • 2022-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多