首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GSAP ScrollTrigger - Pin动画不能正常工作

GSAP ScrollTrigger - Pin动画不能正常工作
EN

Stack Overflow用户
提问于 2022-03-18 15:00:10
回答 1查看 3.2K关注 0票数 1

我有一个名为.listing__nav的元素,我想把它钉在卷轴上。

.listing__nav接触到window的顶部时,我希望它成为固定的,并且只有当banner元素进入视图时才解锁。

为了实现这一点,我尝试了以下几点:

代码语言:javascript
复制
$(function() {

  var action = gsap.set('.listing__nav', {
    position: 'fixed',
    paused: true
  });

  ScrollTrigger.create({
    trigger: '.listing__nav',
    start: 'top 0px',
    onEnter: () => action.play(),
    onLeaveBack: () => action.reverse(),
  });

  gsap.to('.listing__nav', {
    ease: 'none',
    scrollTrigger: {
      trigger: ".banner",
      scrub: 0.3,
      end: 'bottom 110%',
      markers: false,
    }
  });


});
代码语言:javascript
复制
:root {
  --black: #000000;
  --white: #FFFFFF;
  --grey: #707070;
}

header {
  background-color: var(--grey);
  padding: 30px 0;
}

.spacer {
  background-color: var(--black);
  height: 300px;
}

.listing__nav {
  padding: 80px 0 52px 0;
  border-bottom: 1px solid var(--black);
}
.listing__spacer {
  padding: 100px 0;
  height: 1000px;
  background-color: var(--black);
}

.banner {
  background-color: var(--grey);
  color: var(--white);
  padding: 60px 0;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/gsap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.9.1/ScrollTrigger.min.js"></script>

<main>
  <header>Header</header>
  <div class="spacer"></div>
  <div class="listing">
    <nav class="listing__nav">Nav</nav>
    <div class="listing__spacer">Spacer</div>
  </div>
  <div class="banner">Banner</div>
</main>

正如你所看到的,.listing__nav并没有将它钉在预定的位置,而是固定在窗口的底部,这给它带来了不正常的行为。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-20 13:40:43

下面的JS解决了这个问题。

我创建了两个不需要的ScrollTriggers

代码语言:javascript
复制
$(function() {

  ScrollTrigger.create({
    trigger: '.listing__nav',
    pin: true,
    start: 'top top',
    scrub: 0.5,
    endTrigger: ".banner",
    end: "top bottom",
    pinSpacing: false,
    markers: true
  });

});

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71529008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档