为了账号安全,请及时绑定邮箱和手机立即绑定

GSAP 3 ScrollTrigger 不适用于动态变化的值(不刷新/重新计算)

GSAP 3 ScrollTrigger 不适用于动态变化的值(不刷新/重新计算)

慕娘9325324 2023-07-06 17:49:14
我在使用 GSAP 的 ScrollTrigger 时遇到问题。我在不同的视口宽度中设置了固定元素的高度,并且在调整窗口大小时效果很好。但现在我想通过单击按钮来更改固定元素的高度。我使用ScrollTrigger.refresh();但没有任何反应。有人可以告诉我如何修复它吗?ScrollTrigger.create({  trigger: '.box',  pin: true,  start: 'top center',  end: () => `+=${$('.h-500').height() - $('.box').height()}`,  markers: true,  id: "box",  onRefreshInit: () => {  },  onRefresh: () => {  }});function resizeBox(){  $('.box').css('height', '50px');  ScrollTrigger.refresh();}body{  margin: 0;}.space {  width: 100%;}.h-500 {  height: 500px;  background: yellow;}.h-1000 {  height: 1000px;}.box {  width: 100px;  height: 100px;  background: red;}button {  position: fixed;  top: 0;  right: 0;  z-index: 999;  font-size: 20px;}@media only screen and (max-width: 600px) {  .box {    height: 5vw;  }}<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><script src="https://unpkg.com/gsap@3/dist/ScrollTrigger.min.js"></script><script src="https://unpkg.co/gsap@3/dist/gsap.min.js"></script><div class="space h-1000"></div><div class="space h-500">  <div class="box"></div></div><div class="space h-1000"></div><button onclick="resizeBox()">resizeBox</button>
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

这是一个有点棘手的情况,因为您正在调整固定的同一元素的大小。ScrollTrigger 会自动缓存维度等,因此当刷新发生时,ScrollTrigger 会清除所有内联样式(这恰好会清除您设置的新值),然后恢复到其缓存状态。我们(GreenSock)尚未确定这是否是一个错误:)


至于目前如何解决这种情况,您可以在盒子周围创建一个空容器并将其固定:


<div class="pin-container">

  <div class="box"></div>

</div>

trigger: ".pin-container"

演示


查看完整回答
反对 回复 2023-07-06
  • 1 回答
  • 0 关注
  • 237 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信