博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用lottie 模仿san的动画
阅读量:5924 次
发布时间:2019-06-19

本文共 2293 字,大约阅读时间需要 7 分钟。

在百度前端技术学院学习 设计师学院 绿(大佬)的课程 (第一课QAQ)

然后模仿san官网的动画效果

模仿的效果 pc端食用更佳!

大佬的实现已经很棒了 个人只让部分动画变得平滑

transition: transform .3s;复制代码

这样可以让鼠标移出Div的时候更加平滑

分界线~~~


首先贴出资料和大佬的教程

  • ......

大概就是这么写 大家可以去Google搜教程 官方案例很不错

首先布局 结构和样式都可以借鉴san官网 利用控制台(so easy~)

复制代码

这是结构 具体样式可以查看我的github文件

然后就是js 控制动画效果了

引入jquery (方便~)

  • 在github上的build/player获取最新版本的lottie.js文件 或者 从AE的插件导出
  • 在HTML引入文件
复制代码
  • 调用lottie.loadAnimation()启动一个动画。将一个对象作为参数
var 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循环绑定事件 将上面封装进一个方法
setBodymovin = function (cards, len) {  while (len--) {    var bodymovinLayer = cards[len].getElementsByClassName('bodymovin')[0]    var animData = {      container: bodymovinLayer,      renderer: 'svg',      prerender: true,      loop: false,      autoplay: false,      path: bodymovinLayer.getAttribute('data-movpath')    }    anim = lottie.loadAnimation(animData);    (function (anim) {      var card = cards[len]      $(card).on('mouseenter', function () {        anim.play()      })      $(card).on('mouseleave', function (e) {        anim.stop()      })    })(anim)  }}复制代码
  • 最后获取元素调用
var resourceCards = document.querySelectorAll('.resource-block')var facilityCards = document.querySelectorAll('.facility-block')var len = resourceCards.lengthsetBodymovin(resourceCards, len)setBodymovin(facilityCards, len)复制代码

最后贴 gulp 任务

const gulp = require('gulp')const connect = require('gulp-connect')gulp.task('connect', function(){  connect.server({    root: 'app',    port: 8000,    livereload: true  })})gulp.task('html', function(){  gulp.src('./app/*.html')    .pipe(connect.reload())})gulp.task('css', function(){  gulp.src('./app/css/*.css')    .pipe(connect.reload())})gulp.task('watch', function () {  gulp.watch(['./app/*.html'], ['html'])  gulp.watch(['./app/css/*.css'], ['css'])})gulp.task('default', ['connect','watch'])复制代码

具体代码见github源码,大佬多给给意见哦~~~ 也可以私戳我哈 Qq: 952822399

新开了个Qq群,大家也可以进来互相交流~ iD 718639024

转载地址:http://roavx.baihongyu.com/

你可能感兴趣的文章
Fiddler 手机抓包
查看>>
jQuery 实现观察者模式
查看>>
javascript 的原始数据类型
查看>>
SpringBoot整合Rabbitmq设置消息请求头
查看>>
C#强制类型转换
查看>>
PHP-购物网站开发设计(一)
查看>>
Vue.js 组件编码规范
查看>>
logstash安装及基础入门
查看>>
【Unity】1.1 安装Unity 5.3.4 开发环境
查看>>
【Android】21.4 图片动画缩放示例
查看>>
Chrome开发人员工具使用技巧
查看>>
算法笔记--二项式反演
查看>>
HTTP/HTTPS 学习笔记
查看>>
ubuntu开机出现错误“Error found when loading /root/.profile”解决
查看>>
《Play for Java》学习笔记(四)Controller
查看>>
OcciWrapper使用指南(高性能Oracle访问组件)
查看>>
word2010 2007中如何去掉首页页码
查看>>
Python安装
查看>>
C# 4.0 新特性
查看>>
Clone探讨 深度克隆-浅克隆-运算符赋值
查看>>