下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

利用纯CSS3打造逼真的多层云彩动画特效教程

作者:课课家教育     来源: http://www.kokojia.com点击数:1222发布时间: 2016-09-24 11:00:54

标签: css3教程动画css3代码

Web开发

     在网页上使用动画,可以通过flash,Silverlight,javaScript,css等技术来实现。其中前两种技术需要依赖插件,对移动端的支持较差,Javascript不依赖于浏览器,但对制作者在编程方面有一定的要求,书写起来不太方便。相比之下,CSS不但兼容性好,书写起来也非常简便,特别是当CSS3推出以后,其动画功能更是强大了不少。下面将向大家介绍利用纯CSS3打造逼真的多层云彩动画特效教程.

  首先大家可以看一下效果图:

利用纯CSS3打造逼真的多层云彩动画特效教程_css3教程_多层云彩_代码

  该效果使用多层云彩重叠而成,而每一层云彩都是一张独立的图片,为了让它们支持滚动,并且每次滚动到末端跳回去之后可以无缝连接,我们制作的图片需要前1/3和后1/3的内容完全一致,这样跳转的时候就不会产生突变了。

  由此可知,云彩图片的宽度应该设置为容器宽度的3倍。

  注意此处不能使用jpg图片,因为需要透明背景。

  在开始制作之前,我们先准备好3张云彩的图片,把它们放入到HTML文件目录下的images目录,并分别命名为clouds_one.png,clouds_two.png和clouds_three.png。

  而天空则使用蓝色作为背景,无需单独制作图片。

  下面我们就来构建基本的HTML结构,把3个云层包在一个div里面即可。

把3个云层包在一个div里面代码

  除了构建基本HTML以外,以上代码还为最外层的sky容器设置了高度等于480像素,宽度始终占满整个页面,同时用蓝色填充背景。

  注意到我们还设置了position等于relative(相对布局),这是因为里面的3层需要重叠,必须使用绝对布局,而为了绝对布局不相对于整个页面,我们给sky层设置了这一属性。

  clouds_one,clouds_two和clouds_three都要实现云彩移动,也就是说它们有共用的部分,要对它们统一使用相同样式,我们可以用属性选择器[class^=clouds_]来进行样式的定义,它会匹配class开头等于clouds_的所有元素。

 用属性选择器[class^=clouds_]来进行样式的定义的代码

  注意到此处的width设置为300%,原因前面已解释。

  接着,由于三个云层用的是不同的图片,所以背景图需要单独定义到对应的class上。

  完整代码如下:

把背景图单独定义到对应的class上的代码

  运行一下,效果如下图所示。

把背景单独定义到对应的class上

  把背景图单独定义到对应的class上效果图

  现在我们要开始实现滚动动画了,使用的是CSS3的animation。

  使用animation需要了解@keyframes规则,其具体格式如下。

了解@keyframes规则代码

  其中cloud_an为动画的名字,稍候我们会绑定上。

  from代表起始的状态,to代表最终状态。所以以上动画代表x坐标从原点向左移动200%的容器宽度。

  说个题外话,如果想在中间添加状态,就可以通过百分比的形式来实现:

from代表起始的状态

    下面来绑定一下,比如绑到所有的clouds上。

绑定所有clouds代码

  新增的4项功能完全一致,不同的前缀用于兼容不同的浏览器。

  以其中一项为例,cloud_an代表要绑定的动画名称,50s代表动画持续时间等于50秒,linear表示云彩做的是匀速运动,infinite表示要无限循环播放。

  再次运行,效果如下图所示,云彩滚动起来了。

 云彩滚动效果图

  但是现在所有的云层都是以同样的速度进行滚动,所以缺乏层次感。体现层次感的一个方法是实现近大远小的感觉,我们需要为不同云层调整不同的速度。同样的路程,时间越长,速度越慢。因此不同云层,50s这个值不能共用。

  既然如此,我们就把animation部分单独定义到指定的clouds上吧。

  调整后的完整代码如下,可以看到,@keyframes也做了浏览器兼容处理。

增加云层层次感

  再次运行,效果如下图所示,云层已经错开了。

云层错开效果图

  如果还是觉得单调,那我们可以再给背景色来一个变暗的动画。以体现出云层变厚导致天色阴暗的效果。

使背景色变暗的代码

  再次运行,天色就有变暗效果了,如下图所示。

天色变暗效果图

  最后补充一点,由于该动画面积较大,滚动的时候可能会导致CPU占用较高,这时候我们可以通过translate3d的功能让浏览器认为这是3D变换,从而开启显卡加速,提升渲染效率。

开启显卡加速,提升渲染效果的代码

  但如果你的网站面向的是使用低端机器的用户,那么可能显卡加速无法正常开启,导致强制回退到CPU渲染,运行起来可能更卡。

  所以是否使用translate3d,还要视网站面向的用户群而定。

  本例所制作的效果滚动面积大,空间感较强,把它应用在网站上,将会让整个页面让用户看起来就像一幅画,相当大气。所以它非常适用于类似于房地产展示那种高大上的网站设计中。此外,较为传统的网站也可以把这效果用到banner上,同样能增加整站的层次感。因此,本例的应用领域非常广泛,既能用于整体的设计,也能进行局部的润色。

赞(0)
踩(0)
分享到:
上一篇:HTML基本框架
华为认证网络工程师 HCIE直播课视频教程