在百度前端技术学院学习 设计师学院 绿(大佬)的课程 (第一课QAQ) 传送门css
而后模仿san官网的动画效果 sanhtml
模仿的效果 传送们 pc端食用更佳!前端
大佬的实现已经很棒了 我的只让部分动画变得平滑jquery
transition: transform .3s;
复制代码
这样可让鼠标移出Div的时候更加平滑git
分界线~~~github
首先贴出资料和大佬的教程web
大概就是这么写 你们能够去Google搜教程 官方案例很不错json
首先布局 结构和样式均可以借鉴san官网 利用控制台(so easy~)gulp
<div class="resource-block">
<a href="" class="resource-item">
<div class="resource-item-top resource-item-top-two">
<div
id="bm"
class="bodymovin"
data-movpath="js/compass.json">
</div>
</div>
<div class="resource-item-bottom">
<h5>教程</h5>
<p>教程是入门的捷径,请从这里开始了解San</p>
</div>
</a>
</div>
复制代码
这是结构 具体样式能够查看个人github文件 传送门canvas
而后就是js 控制动画效果了
引入jquery (方便~)
<script src="js/lottie.js"></script>
复制代码
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 路径
复制代码
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.length
setBodymovin(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