web前端入门到实战:纯CSS画动态彩虹

html-css016

web前端入门到实战:纯CSS画动态彩虹,第1张

效果图如下

用两个嵌套的div容器,父容器来控制图标显示的位置,子容器用来写彩虹的样式。

1、定义父容器样式,控制图标位置,顺便给整个页面加个背景色,方便预览

2、彩虹样式,彩虹有一个左右摇摆的动画效果

3、投影样式,别忘了是同样有动画的哟

搞定,很简单有没有,跟着实现一遍,你也可以画出美丽的彩虹咯~

在Web里做动画选择其实已经很多了:

可以用 Flash 技术来做动画

可以用 GIF 来做一个无需交互的动画

可以用 CSS3 的 animation

也可以用 CSS3 的 transition

也可以用 SVG 来做动画

甚至 CSS2 的hover也可以实现简单的动画

还可以用通过在 Canvas 上作图来实现动画

也可以借助jQuery.animate方便地实现动画

Flash动画

不可否认,目前为止,Flash制作的动画在互联网还是占据了庞大的数量,几乎可以实现任何你想要的动画,甚至很多复杂的游戏都是用Flash实现,如果不是随着移动端的兴起,估计Flash会一直火热下去。

GIF动画

在以前,对于一些广告动画和一些小的icon动画之类的,GIF确实是不错的选择,体积还可以接受,制作也简单。但有GIF有一个致命的弱点就是不支持交互以及高清晰度的渲染,逐步的被JS和CSS3所替代。

CSS Hover动画

通过:hover我们可以实现一个滑动逐级展现的菜单,虽然非常简单,但这个是动画的雏形,在hover中,我们几乎可以为元素应用所有的css属性,并且兼容性不错。不过在ie6下只有a标签支持:hover。

Javscript动画

因为没有其它可用的实现方式,最初的前端动画都是JS来实现,实现上就是通过一个定时器setInterval每隔一定时间来改变元素的样式,动画结束时clearInterval即可。

尽管这种方式动画的可控性很强,但是问题也很明显:

1.性能不佳,因为需要不断获取和修改Dom的布局,所以导致了大量页面重排(repaint)。

2.缺乏标准,不同的库使用了不同的API,导致即使是简单的动画也有各不相同的实现方式,调整起来比较耗时。

3.带宽消耗,一个简单动画也需要引入一个类库,相对丰富的动画,代码量都很大,结果就是增加了http请求的大小,降低了页面的载入时间。

CSS3动画

CSS3动画相比与JS更轻量,性能更好,更易于实现,同时也不必担心缺乏标准和增加带宽消耗的问题。animation 相比 transtion 使用起来更为复杂,但也提供了更多的控制,其中最重要的就是 frame 的支持,不过通过一些简单的JS库

CSS3 animation动画

1、@keyframes 定义关键帧动画

2、animation-name 动画名称

3、animation-duration 动画时间

4、animation-timing-function 动画曲线

linear 匀速

ease 开始和结束慢速

ease-in 开始是慢速

ease-out 结束时慢速

ease-in-out 开始和结束时慢速

steps 动画步数

5、animation-delay 动画延迟

6、animation-iteration-count 动画播放次数 n|infinite

7、animation-direction

normal 默认动画结束不返回

Alternate 动画结束后返回

8、animation-play-state 动画状态

paused 停止

running 运动

9、animation-fill-mode 动画前后的状态

none 不改变默认行为

forwards 当动画完成后,保持最后一个属性值(在最后一个关键帧中定义)

backwards 在 animation-delay 所指定的一段时间内,在动画显示之前,应用开始属性值(在第一个关键帧中定义)

both 向前和向后填充模式都被应用

10、animation:name duration timing-function delay iteration-count direction同时设置多个属性

举例 等待条:

效果: