案例-设备【GSAP】
步骤
- 设置初始值
- 动画
- 循环
TweenMax.set("#mac", {
transformOrigin: 'bottom 0%',
scale: 0 });
TweenMax.set("#ipad", {
transformOrigin: 'bottom 0%',
autoAlpha: 0,
scale: 0 });
......
使用TweenMax.set 设置初始值包括动画起始位置 基点位置
缩放至0 ---> 这样可以控制出现位置。
逐渐出现
const visible = item => {
let tl = new TimelineMax();
tl.to(item, .5, {
scale: 1,
autoAlpha: 1,
ease: Elastic.easeOut.config(1, 0.75) });
return tl;
};
Bar跳跃
const bars = item => {
let tl = new TimelineMax();
tl.staggerTo(item, 1, {
scaleY: 0,
transformOrigin: 'bottom 0%',
yoyo: true,
repeat: -1,
ease: Power0.easeNone,
stagger: {
amount: 1.5 } });
return tl;
};
…
声明时间线
const master = new TimelineMax({ delay: .5 });
master.timeScale(1.5); // 获取/设定动画速度 - 1.5倍速
master.add('s'); // 辅助工具 - 方便后面时间管理
master.
add(visible('#mac'), 's+=1.1').
add(visible('#phone'), 's+1.2').
add(visible('#ipad'), 's+1.3').
add(visible('#stuff-on-mac'), 's+1.4').
add(visible('#stuff-on-iphone'), 's+1.5').
add(visible('#stuff-on-ipad'), 's+1.6'). // 出现
add(bars('.bar'), 's+1.6'). // 动画
add(bars('.shade'), 's+1.6').
add(lines('.line'), 's+1.6').// 线条动画
add(lines('.line2'), 's+1.6').
add(device('.device'), 's+1.6').
add(device('.device2'), 's+1.6');
运动路径
在SVG动画工具包中,沿运动路径设置动画的功能非常有用。让我们探索实现这一目标的几种方法,包括即将推出的CSS运动路径模块和新发布的GSAP3
大多数自然动作倾向于遵循弓形的轨迹,动画应遵循此原理,通过遵循暗示的“弧”来实现更大的真实感。
<script>
// 1. 选择运动的路径
const path = MorphSVGPlugin.pathDataToBezier("#linePath", {
align: ".plane"
});
console.log(path);
// 2. 选择要运动的物体
let tl = new TimelineMax();
tl.staggerTo(".box", 8, {
bezier: {
values: path,
type: "cubic",
autoRotate: true
},
ease: SlowMo.ease.config(0.3, 0.1, false),// 运动曲线
repeat: -1,
}, 0.5)
</script>
SVG变形
<script>
ani = TweenMax.from("#linePath",3,{
drawSVG: "10%",
},{
drawSVG:"true"
})
ani.yoyo(true).repeat(-1);
</script>