博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
-webkit-animation- 实践
阅读量:5922 次
发布时间:2019-06-19

本文共 2759 字,大约阅读时间需要 9 分钟。

hot3.png

-webkit-animation- 实践  

2013-01-05 14:55:47|  分类:  |  标签:      |字号 订阅

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge

今天研究了一下很久之前就像学的css3创意幻灯片效果,也就是Github上比较出名的impress.js,具体demo请戳地址:,Github地址请戳:,其实impress不是本篇博文的重点,我会另找时间介绍impress.js这个方便的演示库用法,重点是我在作者bartaz的github里面瞎逛,发现一个他之前做的关于CSS 3D 的简单知识普及幻灯片,就是用impress.js做的,地址如下:,大家是不是刚进去就被那个很3D feel不停左右摆的标题吸引住了!!

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge
 

我之前也有写过一篇关于CSS3 transition的,来向大家介绍CSS3的魅力和一些transition的用法,当然,我只是很粗浅地介绍了CSS3动画的冰山一角,实际上CSS3所实现的效果已经超乎我们的想象了,不过客观上来讲,我个人不大建议涉水太深,毕竟这个领域还在探索阶段,先把现有知识扎扎实实先学好,闲暇时再捣鼓捣鼓这些效果,才是正道,嘿嘿。

因为我已经完全被这种效果吸引了,决定研究一下这个是怎么实现的,就将其代码拷贝下来,然后一行行解读,基本明白了原理,大家注意,我以下讲的例子,如标题所说,是webkit内核的浏览器,如chrome,safri等浏览器才可以浏览的哦!

首先是html代码:

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge

然后是简单的字体设置,这个大家随意吧,我懒就直接复制原网站的效果

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge
 

嗯嗯,完成以上代码后,就是这样子的:

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge

可是这个只是第一步,我们发现最终效果,在转的时候,会有3D的效果,3D的效果是怎么出来的呢,没错,就是比2D做了一个坐标,3D效果出来除了利用自身在不断循环摇摆之外,还有就是利用本身字体的位置深浅,简单来说,就是利用字体离屏幕的远近不同,再加上摇摆,便有了3D的效果,那么现在我们先为字体加上深浅的效果,CSS3的transition有一个transform效果,我之前写的那篇文章里面也有用到这个效果,具体使用参考可以移步,我们利用到的就是translate属性,可是设置x,y,z三个坐标系,都是参照自身为止来移动的,大家猜对了,就是利用改变z属性来改变字距离屏幕距离的,z值设置越大,就离我们越近,负值反之。

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge

设置完之后就是这个效果,可能有人会奇怪,为啥没啥变化,不是说有将字的远近调整了吗,怎么感觉他们没变过,如图

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge
 

这是因为我们没有对h1设置一个很关键的属性:-webkit-transform-style:preserve-3d,个属性有两个值,preserve-3d|flat。前者可以使其子元素能够在他的3d空间的基础上应用3d变换,简单来说,就是这个画布变成3维的了,加上之后,就是这样(PS:用了style属性之后字体会有锯齿感,可能是渲染机制的问题吧,这个问题我不知道大家会不会出现,大家可以试试

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge
 

不是一样么!!这不是坑爹么?!!!其实不然,主要是因为现在虽然有深浅效果了,只是因为整体没有做过透视处理,透视的原理,大家可以去搜索一下,其实也很简单,就是想象成镜头距离物件的距离,默认是无限远,就是看起来完全没有透视感。火影忍者里的很多打斗就大量运用了夸张的透视效果。

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge
 

为了大家更好地理解,上两个测试对比图,可以看看透视的魅力,哦忘了介绍,透视可以写,-webkit-perspective:数值,也可以直接写在-webkit-transform里面。

perspective为781px时(整体有做过旋转,方便大家同时看一下translate属性

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge
perspective为309px时效果,那么大家也可以知道,
值越小,透视感越强,也就是深浅的感觉越强,用数学的解释,就是坐标轴的比例问题
-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge

接下来,就是给h1加上-webkit-transition:all 2s ease-in-out;来让其渐变变换,这个之前写的transition文章已经介绍过,这里就不专门解释了,最后就来到关键的一部了,我刚开始一直不理解,demo上面不停循环的摆来摆去的效果是怎么实现的,然后查了一些资料才知道,是利用CSS的关键帧和-webkit-animation的alternate属性值来实现动画的,这里重新说一下animation的用法

这里引用不懂大师的文章介绍: 

-webkit-animation是一个复合属性, 

-webkit-animation: name duration timing-function delay iteration_count direction; 

包括以下几个属性 

 (1) -webkit-animation-name 这个属性的使用必须结合@-webkit-keyframes一起使用 

 eg: @-webkit-keyframes fontchange{ 

 0%{font-size:10px;} 

 30%{font-size:15px;} 

 100%{font-siez:12px;} 

 } 百分比的意思就是duration的百分比,如果没有设置duration的话,则表示为无穷大 div{ -webkit-animation-name:fontchange;} 

(2)-webkit-animation-duration 表示动画持续的时间 

(3)-webkit-animation-timing-function 表示动画使用的时间曲线 【语法】:

 -webkit-animation-timing-function: ease | linear | ease-in | ease-out | ease-in-out 

(4)-webkit-animation-delay 表示开始动画之前的延时 【语法】 -webkit-animation-delay: delay_time; 

(5)-webkit-animation-iteration-count 表示动画要重复几次,infinite为无限次(实现关键) 

 【语法】-webkit-animation-iteration-count: times_number;

(6) -webkit-animation-direction 

表示动画的方向 【语法】-webkit-animation-direction: normal(默认) | alternate normal 方向始终向前 alternate 当重复次数为偶数时方向向前,奇数时方向相反

综合上面的解释,最终CSS代码如下:

-webkit-animation- 实践 - Mr.F - China ◎ D ◎ Fangge

So Enjoy It!!

转载于:https://my.oschina.net/u/867090/blog/177716

你可能感兴趣的文章
div中嵌套div速度将会同样很慢
查看>>
公选网站作业4_2.php
查看>>
NUC_HomeWork1 -- POJ2067(最短路)
查看>>
JavaWeb第六周作业
查看>>
『2019/4/8 TGDay1模拟赛 反思与总结』
查看>>
动态生成多选框
查看>>
Codefoeces dp练习题
查看>>
查看hive参数
查看>>
玩转Java对象和XML相互转换
查看>>
解析Hash表算法
查看>>
Linux学习笔记二:tar命令使用
查看>>
杭电2187--悼念512汶川大地震遇难同胞——老人是真饿了
查看>>
element-ui 日期选择范围限制,只允许选择上下浮动一个月内的日期
查看>>
CSS 盒子模型
查看>>
JS 变量的数据类型转换
查看>>
【转】CString, BSTR, LPCTSTR之间的关系和区别
查看>>
在SceneControl中交互绘制点和线,通过GraphicLayer3D显示
查看>>
React Native使用init新建项目出现异常
查看>>
上传和下载(批量图片)
查看>>
bzoj 3759 Hungergame 博弈论+线性基
查看>>