模仿san的hover动画
在百度前端技术学院学习 设计师学院 绿(大佬)的课程 (第一课QAQ) 传送门
然后模仿san官网的动画效果 san
这是我模仿的效果 传送们 pc端食用更佳!
大佬的实现已经很棒了 个人只让部分动画变得平滑 比如说鼠标移出的时候增加了
1 | transition: transform .3s; |
这样可以让鼠标移出Div的时候更加平滑
分界线~~~
首先贴出资料和大佬的教程
- http://ife.baidu.com/course/detail/id/18
- https://zhuanlan.zhihu.com/uxelement
- https://baidu.github.io/san/
- https://github.com/airbnb/lottie-web
- https://codepen.io/airnan/project/editor/ZeNONO/
- https://www.youtube.com/watch?v=5XMUJdjI0L8
- ……
大概就是这么写 大家可以去Google搜教程 官方案例很不错
首先布局 结构和样式都可以借鉴san官网 利用控制台(so easy~)
1 | <div class="resource-block"> |
这是结构 具体样式可以查看我的github文件 传送门
然后就是js 控制动画效果了
引入jquery (方便~)
在github上的build/player获取最新版本的lottie.js文件 或者 从AE的插件导出
在HTML引入文件
1
<script src="js/lottie.js"></script>
调用lottie.loadAnimation()启动一个动画。将一个对象作为参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18var animData = {
container: bodymovinLayer,
renderer: 'svg',
prerender: true,
loop: false,
autoplay: false,
path: bodymovinLayer.getAttribute('data-movpath')
}
# animData 导出的动画数据的Object
# container 渲染动画的dom元素
# renderer 'svg'/'canvas'/'html'来设置渲染器
# prerender 这个根据英文应该是预渲染
# loop 是否循环播放
# autoplay 是否自动播放
# path 路径while循环绑定事件 将上面封装进一个方法
1 | setBodymovin = function (cards, len) { |
- 最后获取元素调用
1
2
3
4
5
6
7
8
var resourceCards = document.querySelectorAll('.resource-block')
var facilityCards = document.querySelectorAll('.facility-block')
var len = resourceCards.length
setBodymovin(resourceCards, len)
setBodymovin(facilityCards, len)
最后贴 gulp 任务
1 | const gulp = require('gulp') |
具体代码见github源码
大佬多给给意见哦~~~
Qq: 952822399