这是一款效果非常炫酷的纯CSS3西洋镜动画特效。该西洋镜动画使用CSS3的帧动画和3D transforms来制作,在animation动画的animation-timing-function参数使用steps来处理,制作出类似西洋镜的连续动画效果。
西洋镜1834年,William George Horner(威廉姆·乔治·候纳)发明了zoetrope(西洋镜)。它有一个呈鼓状的一个圆桶,桶内包含一组事先排好序号的连续图像,按照循环顺序转动图片就会产生动画效果,隐约包含了电影机的雏形在内。起初候纳称这种机器为Daedatalum,但是后来法国发明家Pierre Desvignes将它改名为西洋镜-zortrope(词根zoo表示动物生活,trope表示转动的事物)。
西洋镜非常容易制作。可以调节旋转速度,形成快速或慢速的动画效果。与其他电影设备的原理类似,西洋镜同样利用了人眼的视觉暂留特性,就是说,人眼所看到的物体会有十分之一秒左右的保存时间,因此当新的图片以小于十分之一秒的时间出现时,人眼会误以为图片是连续的,最终形成了动画效果。西洋镜还利用了所谓的动景运动现象,又称∮现象(phi-phenomenon),是指当两个刺激物按一定空间间隔和时间间隔相继呈现时,人看到原来两个静止的物体的连续运动的现象。
【百度百科】
使用方法
HTML结构
该CSS3西洋镜动画特效的效果类似于一个旋转木马,它的HTML结构使用一个<div>
元素来包裹一组用于展示的空的<div>
元素。
<div id="zoetrope"> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> </div>
CSS样式
在这个CSS3西洋镜动画特效中,整个<body>
被设置了透视效果,并且在西洋镜#zoetrope
元素和它的子元素上都使用了transform-style: preserve-3d;
来制作3D效果,由于IE浏览器不支持这个属性,所以在IE浏览器中看不到效果。
body { perspective: 500px; perspective-origin: 50% 30%; font-family: 'Open Sans', sans-serif; font-size: 16px; background: #E3DFD2; color: #585247; overflow: hidden; } #zoetrope { position: relative; width: 900px; height: 111px; margin: 100px auto; transform-style: preserve-3d; animation: zoetrope 3s steps(35) infinite; } #zoetrope div { position: absolute; width: 100px; height: 111px; left: calc(50% - 50px); bottom: 50%; transform-origin: 50% 0; background-image: url("../img/zeotrope.jpg"); background-size: 1200px 111px; background-repeat: no-repeat; transform-style: preserve-3d; }
该CSS3西洋镜动画特效的图片动画不是GIF图片,它使用的是一张类似电影胶片的雪碧图片:
这个动画的关键是在上面的animation
上,animation
动画的语法如下:
animation: [animation-name] [animation-duration] [animation-timing-function] [animation-delay] [animation-iteration-count] [animation-fill-mode];
这里的animation-timing-function
属性使用的是steps(35)
,表示每一帧的动画时间为3s/35=0.085s,这样不停的以高速沿Y轴旋转雪碧图片,就像真实的西洋镜快速的循环顺序转动图片产生动画效果一样。