Skrollr 运行动画一次,然后停止
Skrollr run animation once only then stop
如何在 Skrollr 中运行一次动画,然后杀死它?
我试过:
beforerender
方法,但会杀死所有动画- 寻找设置单个 Skrollr 实例的方法,但它是一个单例
- 删除或重命名对象的
attributes
-
null
确定对象的className
- 切换 CSS 类
每次,看起来这些值都缓存在 Skrollr 中并触发,无论我的努力如何。我在这里错过了什么?
我想改进这个问题:
https://github.com/Prinzhorn/skrollr/wiki/Tips
在 wiki 的"提示"选项卡下,有一个有用的代码段:
skrollr.init({
beforerender: function(data) {
return data.curTop > data.lastTop;
}
});
实际上,使用此代码,它只会在您向下滚动时才进行动画处理,因此将导致动画将播放一次,或者换句话说,当您向上滚动时它不会"回头",就像 CSS 动画填充模式一样:向前;
好吧,我终于找到了一个半解决方案。 我已经完全删除了节点并重新插入了一个新节点。 这是我的代码,所以你可以得到这个想法:
// Before this, poll window.onscroll to wait for the skrollable-after
// class to be applied.
if (!this.flags.learnmore && Toolbox.hasClass(this.dom.learnmoreslider, 'skrollable-after')) {
// Sort of a misleading name, sorry, not an exact clone
var clone = document.createElement("span");
clone.innerHTML = this.dom.learnmoreslider.innerHTML;
// This was the end condition of the animation
// (it slid text horizontally) so it has to look the same.
clone.style.marginLeft = "250px";
var parent = this.dom.learnmoreslider.parentNode;
parent.appendChild(clone);
// This must be removed after in order to maintain the parent reference.
parent.removeChild(this.dom.learnmoreslider);
// Raise a flag or remove the listener or something, you're done
this.flags.learnmore = true;
}
}
有点笨拙,但可以解决问题。 我肯定仍然对杀死动画的正确方法感兴趣。
这样的事情应该可以工作:
skroller = skrollr.init({
render: function(data) {
scroll = data.curTop;
if ((scroll >= 200) && (!element.hasClass('active'))) {
element.addClass('active').removeAttr('data-start data-end');
skroller.refresh();
}
}
});
相关文章:
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 设置随机数,然后每5秒随机减少一次,直到达到0(javascript)
- 显示数字,然后每5秒随机更改一次(javascript)
- 单击时预置图像 - 仅预置一次,然后停止
- 如何每 10 秒调用一次 JS 函数,然后以角度激活一个函数
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- 做一件事,然后在react js中每隔15秒做一次
- 地图,rails 4.2,javascript,鼠标悬停,只工作一次(或两次).然后在重新加载之后
- 一次选中4个复选框,然后将页面重定向到新页面
- 其中是在ReactJS中放置一个值的最佳位置,该值由传入的初始参数计算一次,然后再也不会更改
- Flickity gallery - 如何循环浏览一次然后停止自动播放
- 引导 2 轮播循环一次,然后停止
- 如何使函数在 2 分钟后执行,然后每隔 2 分钟执行一次
- Javascript 这个关键字在原型函数中的递归执行一次,然后未定义
- 调用函数一次,然后设置间隔
- 然后,Jquery 加载内容每 2 秒刷新一次
- jQuery事件触发一次,然后再也不会触发
- 如何只运行一个函数一次,然后运行另一个依赖于相同元素的函数
- 在所有地方重复$(),或者声明一次然后重用