最近工作时研究了一下css3动画和js动画,主要是工作中为了增强页面的趣味性,大家都有意无意的添加了很多动画效果,当然大部分都是css3动画效果,可以gpu加速,这会减少移动端的性能需求。
今天主要说的是蜂窝效果,具体效果大家等下可以运行源码,这里就不放gif图了。
css3的原理很简单,就是通过更改background-size,由于css3中的background中可以设置repeat属性,来使背景图片在x,y方向平铺。一开始先设置background-size:10%, 10%,(这个数值可以自由定义,但不介意设置过大,否则效果不明显), 最后更改backg-size:100%, 100%;这样会使背景图片充满整个屏幕,哦,对了不要忘记设置background-position:50% 50%;否则你会感觉怪怪的,设置background-position是为了是背景图片以中心点的位置来平铺,而系统默认会已左上角来平铺。然后通过设置animation动画来调用动画就可以实现这种效果了
<pre name="code" class="html">.honey {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
background: url(2.jpg) repeat;
background-size: 30% 30%;
background-position: center center;
-webkit-animation: honeycomb 3s 1 linear;
}
@-webkit-keyframes honeycomb {
0% {
background-size: 10% 10%;
}
100% {
background-size: 100% 100%;
}
}
使用css3来实现这种蜂窝式的动画效果,原理简单,并且效果很完美,但是唯一一点的不完美在于可能会有一部分手机不兼容。并且通过在animation中修改background-size,这种行为很少,虽然不会引起浏览器的重排,但是也会引起浏览器的局部重绘。
至于使用canvas来实现吗,这个纯属无聊,不建议大家使用这种方法,在这里使用canvas来绘制,完全是属于我的无聊之举,不过若是你对canvas动画有意向,可以留意下面的canvas实现方案。canvas绘制的原理很简单,通过传入wi