因此,我一直在尝试使用来自anime.js which is this one的惊人动画。
但是当我在复制代码后使用它时,此动画不起作用,但可在Codepen上使用。我已经完全按照原样使用了代码。
以下是我添加anime.js和其他js文件的方式:
<script type="text/javascript" src="https://codepen.io/juliangarnier/pen/75efae7724dbc3c055e918057fc4aca5"></script>
<script src="anime-master/lib/anime.min.js"></script>
<script src="js/sphere.js"></script>
sphere.js
是包含来自codepen的js代码的文件。其他所有内容都完全相同。我做错了什么吗?还是我想念这里。
我真的很感谢您的帮助。
检查以下动画js代码后,错误状态为:
未定义UncaughtReferenceError动漫 在以下代码的
anime.set()
部分。
function fitElementToParent(el, padding) {
var timeout = null;
function resize() {
if (timeout) clearTimeout(timeout);
anime.set(el, {scale: 1});
var pad = padding || 0;
var parentEl = el.parentNode;
var elOffsetWidth = el.offsetWidth - pad;
var parentOffsetWidth = parentEl.offsetWidth;
var ratio = parentOffsetWidth / elOffsetWidth;
timeout = setTimeout(anime.set(el, {scale: ratio}), 10);
}
resize();
window.addEventListener('resize', resize);
}
var sphereAnimation = (function() {
var sphereEl = document.querySelector('.sphere-animation');
var spherePathEls = sphereEl.querySelectorAll('.sphere path');
var pathLength = spherePathEls.length;
var hasStarted = false;
var aimations = [];
fitElementToParent(sphereEl);
var breathAnimation = anime({
begin: function() {
for (var i = 0; i < pathLength; i++) {
aimations.push(anime({
targets: spherePathEls[i],
stroke: {value: ['rgba(255,75,75,1)', 'rgba(80,80,80,.35)'], duration: 500},
translateX: [2, -4],
translateY: [2, -4],
easing: 'easeOutQuad',
autoplay: false
}));
}
},
update: function(ins) {
aimations.forEach(function(animation, i) {
var percent = (1 - Math.sin((i * .35) + (.0022 * ins.currentTime))) / 2;
animation.seek(animation.duration * percent);
});
},
duration: Infinity,
autoplay: false
});
var introAnimation = anime.timeline({
autoplay: false
})
.add({
targets: spherePathEls,
strokeDashoffset: {
value: [anime.setDashoffset, 0],
duration: 3900,
easing: 'easeInOutCirc',
delay: anime.stagger(190, {direction: 'reverse'})
},
duration: 2000,
delay: anime.stagger(60, {direction: 'reverse'}),
easing: 'linear'
}, 0);
var shadowAnimation = anime({
targets: '#sphereGradient',
x1: '25%',
x2: '25%',
y1: '0%',
y2: '75%',
duration: 30000,
easing: 'easeOutQuint',
autoplay: false
}, 0);
function init() {
introAnimation.play();
breathAnimation.play();
shadowAnimation.play();
}
init();
})();
答案 0 :(得分:0)
删除它,您不需要它。
<script type="text/javascript" src="https://codepen.io/juliangarnier/pen/75efae7724dbc3c055e918057fc4aca5"></script>
下面一行对您不起作用
<script src="anime-master/lib/anime.min.js"></script>
anime-master/lib/anime.min.js
是否正确$( document ).ready()
答案 1 :(得分:0)
尝试将与anime.js交互的js代码移动到此类HTML文件中
var animation = anime.timeline({...})
animation.add({...})
因此,在您的情况下,您必须将sphere变量移动到html文件中,并且看起来像这样
<html>
...
<script src="your_other_js_file.js"></script>
<script>
var sphereAnimation = (function() {
//your code here
})();
</script>
...
</html>
这解决了我的问题,我真的不知道为什么仅仅通过将其从js文件移动到html就可以了,但是目前此临时性修复可以解决
我也很确定,有一种更好的方法