网上搜了搜,没看到用js,css 动画做的效果。用jquery的也没看懂,所以记录一下。
实现途径:css 动画实现花瓣飘落,旋转。js 实现随机出现花瓣,以及消失。
缺点:perspective属性没用出效果;css动画出现卡顿,需要渲染跟3d加载,暂时不会弄。
优点:学过的都会懂,随便改。至于能不能改成你想要的,你猜……
css动画代码:
#petala{
transform-origin: center;
animation: rotateFallc 5s infinite ;
}
@-webkit-keyframes rotateFallc{
0%{transform:rotate3d(0,0,0,0deg) }
1%{transform:rotate3d(1,0,1,-2deg) translate(-1px,1px)}
2%{transform:rotate3d(1,0,1,-4deg) translate(-2px,2px)}
3%{transform:rotate3d(1,0,1,-6deg) translate(-3px,3px)}
4%{transform:rotate3d(1,0,1,-8deg) translate(-4px,4px)}
5%{transform:rotate3d(1,0,1,-10deg) translate(-5px,5px)}
6%{transform:rotate3d(1,0,1,-12deg) translate(-6px,6px)}
7%{transform:rotate3d(1,0,1,-14deg) translate(-7px,7px)}
8%{transform:rotate3d(1,0,1,-16deg) translate(-8px,8px)}
9%{transform:rotate3d(1,0,1,-18deg) translate(-9px,9px)}
10%{transform:rotate3d(1,0,1,-20deg) translate(-10px,10px)}
11%{transform:rotate3d(1,0,1,-22deg) translate(-11px,11px)}
12%{transform:rotate3d(1,0,1,-24deg) translate(-12px,12px)}
13%{transform:rotate3d(1,0,1,-26deg) translate(-13px,13px)}
14%{transform:rotate3d(1,0,1,-28deg) translate(-14px,14px)}
15%{transform:rotate3d(1,0,1,-30deg) translate(-15px,15px)}
16%{transform:rotate3d(1,0,1,-32deg) translate(-16px,16px)}
17%{transform:rotate3d(1,0,1,-34deg) translate(-17px,17px)}
18%{transform:rotate3d(1,0,1,-36deg) translate(-18px,18px)}
19%{transform:rotate3d(1,0,1,-38deg) translate(-19px,19px)}
20%{transform:rotate3d(1,0,1,-40deg) translate(-20px,20px)}
21%{transform:rotate3d(1,0,1,-42deg) translate(-21px,21px)}
22%{transform:rotate3d(1,0,1,-44deg) translate(-22px,22px)}
23%{transform:rotate3d(1,0,1,-46deg) translate(-23px,23px)}
24%{transform:rotate3d(1,0,1,-48deg) translate(-24px,24px)}
25%{transform:rotate3d(1,0,1,-50deg) translate(-25px,25px)}
26%{transform:rotate3d(1,0,1,-52deg) translate(-26px,26px)}
27%{transform:rotate3d(1,0,1,-54deg) translate(-27px,27px)}
28%{transform:rotate3d(1,0,1,-56deg) translate(-28px,28px)}
29%{transform:rotate3d(1,0,1,-58deg) translate(-29px,29px)}
30%{transform:rotate3d(1,0,1,-60deg) translate(-30px,30px)}
31%{transform:rotate3d(1,0,1,-62deg) translate(-31px,31px)}
32%{transform:rotate3d(1,0,1,-64deg) translate(-32px,32px)}
33%{transform:rotate3d(1,0,1,-66deg) translate(-33px,33px)}
34%{transform:rotate3d(1,0,1,-68deg) translate(-34px,34px)}
35%{transform:rotate3d(1,0,1,-70deg) translate(-35px,35px)}
36%{transform:rotate3d(1,0,1,-72deg) translate(-36px,36px)}
37%{transform:rotate3d(1,0,1,-74deg) translate(-37px,37px)}
38%{transform:rotate3d(1,0,1,-76deg) translate(-38px,38px)}
39%{transform:rotate3d(1,0,1,-78deg) translate(-39px,39px)}
40%{transform:rotate3d(1,0,1,-80deg) translate(-40px,40px)}
41%{transform:rotate3d(1,0,1,-81deg) translate(-41px,41px)}
42%{transform:rotate3d(1,0,1,-82deg) translate(-42px,42px)}
43%{transform:rotate3d(1,0,1,-83deg) translate(-43px,43px)}
44%{transform:rotate3d(1,0,1,-84deg) translate(-44px,44px)}
45%{transform:rotate3d(1,0,1,-85deg) translate(-45px,45px)}
46%{transform:rotate3d(1,0,1,-86deg) translate(-45px,46px)}
47%{transform:rotate3d(1,0,1,-87deg) translate(-45px,47px)}
48%{transform:rotate3d(1,0,1,-88deg) translate(-48px,48px)}
49%{transform:rotate3d(1,0,1,-89deg) translate(-49px,49px)}
50%{transform:rotate3d(1,0,1,-90deg) translate(-50px,50px)}
51%{transform:rotate3d(1,0,1,-89deg) translate(-51px,51px)}
52%{transform:rotate3d(1,0,1,-88deg) translate(-52px,52px)}
53%{transform:rotate3d(1,0,1,-87deg) translate(-53px,53px)}
54%{transform:rotate3d(1,0,1,-86deg) translate(-54px,54px)}
55%{transform:rotate3d(1,0,1,-85deg) translate(-55px,55px)}
56%{transform:rotate3d(1,0,1,-84deg) translate(-56px,56px)}
57%{transform:rotate3d(1,0,1,-83deg) translate(-57px,57px)}
58%{transform:rotate3d(1,0,1,-82deg) translate(-58px,58px)}
59%{transform:rotate3d(1,0,1,-81deg) translate(-59px,59px)}
60%{transform:rotate3d(1,0,1,-80deg) translate(-60px,60px)}
61%{transform:rotate3d(1,0,1,-78deg) translate(-61px,61px)}
62%{transform:rotate3d(1,0,1,-76deg) translate(-62px,62px)}
63%{transform:rotate3d(1,0,1,-74deg) translate(-63px,63px)}
64%{transform:rotate3d(1,0,1,-72deg) translate(-64px,64px)}
65%{transform:rotate3d(1,0,1,-70deg) translate(-65px,65px)}
66%{transform:rotate3d(1,0,1,-68deg) translate(-66px,66px)}
67%{transform:rotate3d(1,0,1,-66deg) translate(-67px,67px)}
68%{transform:rotate3d(1,0,1,-64deg) translate(-68px,68px)}
69%{transform:rotate3d(1,0,1,-62deg) translate(-69px,69px)}
70%{transform:rotate3d(1,0,1,-60deg) translate(-70px,70px)}
71%{transform:rotate3d(1,0,1,-58deg) translate(-71px,71px)}
72%{transform:rotate3d(1,0,1,-56deg) translate(-72px,72px)}
73%{transform:rotate3d(1,0,1,-54deg) translate(-73px,73px)}
74%{transform:rotate3d(1,0,1,-52deg) translate(-74px,74px)}
75%{transform:rotate3d(1,0,1,-50deg) translate(-75px,75px)}
76%{transform:rotate3d(1,0,1,-48deg) translate(-76px,76px)}
77%{transform:rotate3d(1,0,1,-46deg) translate(-77px,77px)}
78%{transform:rotate3d(1,0,1,-44deg) translate(-78px,78px)}
79%{transform:rotate3d(1,0,1,-42deg) translate(-79px,79px)}
80%{transform:rotate3d(1,0,1,-40deg) translate(-80px,80px)}
81%{transform:rotate3d(1,0,1,-38deg) translate(-81px,81px)}
82%{transform:rotate3d(1,0,1,-36deg) translate(-82px,82px)}
83%{transform:rotate3d(1,0,1,-34deg) translate(-83px,83px)}
84%{transform:rotate3d(1,0,1,-32deg) translate(-84px,84px)}
85%{transform:rotate3d(1,0,1,-30deg) translate(-85px,85px)}
86%{transform:rotate3d(1,0,1,-28deg) translate(-86px,86px)}
87%{transform:rotate3d(1,0,1,-26deg) translate(-87px,87px)}
88%{transform:rotate3d(1,0,1,-24deg) translate(-88px,88px)}
89%{transform:rotate3d(1,0,1,-22deg) translate(-89px,89px)}
90%{transform:rotate3d(1,0,1,-20deg) translate(-90px,90px)}
91%{transform:rotate3d(1,0,1,-18deg) translate(-91px,91px)}
92%{transform:rotate3d(1,0,1,-16deg) translate(-92px,92px)}
93%{transform:rotate3d(1,0,1,-14deg) translate(-93px,93px)}
94%{transform:rotate3d(1,0,1,-12deg) translate(-94px,94px)}
95%{transform:rotate3d(1,0,1,-10deg) translate(-95px,95px)}
96%{transform:rotate3d(1,0,1,-8deg) translate(-96px,96px)}
97%{transform:rotate3d(1,0,1,-6deg) translate(-97px,97px)}
98%{transform:rotate3d(1,0,1,-4deg) translate(-98px,98px)}
99%{transform:rotate3d(1,0,1,-2deg) translate(-99px,99px)}
100%{transform:rotate3d(1,0,1,0deg) translate(-100px,100px)}
}
因为会出现卡顿,所以用笨法子消除……
js随机出现花瓣和消失代码
function $id(id){
return document.getElementById(id);
}
function rand(min,max){
return Math.round(Math.random()*(max -min) +min);
}
var petala =$id("petala");
// var perspectiveA =rand(-100,-10);
function fall(ida){
var ida =ida;
var positionInitialx=rand(0,1200);
var positionInitialy=rand(0,500);
ida.style.position="absolute";
ida.style.left=positionInitialx +"px";
ida.style.top=positionInitialy +"px";
// ida.style.perspective=perspectiveA;
ida.style.animation="rotateFallc 5s 1 ";
setTimeout(function(){
ida.style.display="none";
},5000);
}
// create petals
function createPetals(){
var petal = document.createElement("img");
var imgSrc ="abcdefghijklmno".split("");
var imgNum = rand(0,14);
petal.src='img/petals/'+imgSrc[imgNum]+'.gif';
var diva = document.getElementsByTagName("div")[0];
diva.appendChild(petal);
fall(petal);
}
var timer =setInterval(createPetals,500);
document.onmousedown = function(){
clearInterval(timer);
}
消失不该用display:none该用remove()。
有代码累赘的地方,欢迎大神赐教。如有更简便的方法,希望能通知小的一声。