上篇CSS常用样式(三)这篇博文中已经介绍过了CSS中具有动画效果的transition、transform,今天来大概说说CSS中的animation。animation的加入会使得动画效果更加乐观。

  animation

   animation的实现需要通过keyframes来实现。keyframes(关键帧),类似于flash当中的关键帧。关键帧有其自己的语法规则,他的命名是由"@keyframes"开头,后面紧接着是这个“动画的名称”加上一对花括号“{}”,括号中就是一些不同时间段样式规则,有点像我们css的样式写法一样。对于一个"@keyframes"中的样式规则是由多个百分比构成的,如“0%”到"100%"之间,我们可以在这个规则中创建多个百分比,我们分别给每一个百分比中给需要有动画效果的元素加上不同的属性,从而让元素达到一种在不断变化的效果,比如说移动,改变元素颜色,位置,大小,形状等。不过有一点需要注意的是,我们可以使用“fromt”“to”来代表一个动画是从哪开始,到哪结束,也就是说这个 "from"就相当于"0%"而"to"相当于"100%",值得一说的是,其中"0%"不能像别的属性取值一样把百分比符号省略,我们在这里必须加上百分符号(“%”)如果没有加上的话,我们这个keyframes是无效的,不起任何作用。因为keyframes的单位只接受百分比值。

  不同浏览器下的写法:  

内核类型 写法
Webkit(Chrome/Safari) -webkit-animation
Gecko(Firefox) -moz-animation
Presto(Opera)  
Trident(IE) -ms-animation
W3C animation

 

  属性说明:

 1、animation-name:检索或设置对象所应用的动画名称,必须与规则@keyframes配合使用。动画名可自由取,语义化的更好

 2、animation-duration:检索或设置对象动画的持续时间

 3、animation-timing-function:检索或设置对象动画的过渡类型

  取值:

  linear:线性过渡。等同于贝塞尔曲线(0.0, 0.0, 1.0, 1.0)

  ease:平滑过渡。等同于贝塞尔曲线(0.25, 0.1, 0.25, 1.0)

  ease-in:由慢到快。等同于贝塞尔曲线(0.42, 0, 1.0, 1.0)

  ease-out:由快到慢。等同于贝塞尔曲线(0, 0, 0.58, 1.0)

  ease-in-out:由慢到快再到慢。等同于贝塞尔曲线(0.42, 0, 0.58, 1.0)

  cubic-bezier(<number>, <number>, <number>, <number>):特定的贝塞尔曲线类型,4个数值需在[0, 1]区间内

 4、animation-iteration-count:检索或设置对象动画的循环次数

    取值:

    infinite:无限循环

    number:指定对象动画的具体循环次数

 5、animation-direction:检索或设置对象动画在循环中是否反向运动

    取值:

    normal:正常方向

    alternate:正常与反向交替

 6、animation-play-state:检索或设置对象动画的状态

    running:运动

    paused:暂停

 7、animation-fill-mode:检索或设置对象动画时间之外的状态

    取值:

    none:默认值。不设置对象动画之外的状态

    forwards:设置对象状态为动画结束时的状态

    backwards:设置对象状态为动画开始时的状态

    both:设置对象状态为动画结束或开始的状态

  下面举个例子综合说明:

  CSS代码:

    #animation
{
width: 250px;
height: 250px;
background-color: brown;
opacity: 0.5;
position:absolute;
left:40%;
overflow: hidden; }
#animation span
{
font-family: "微软雅黑";
font-size: 20px;
color: #ccc;
opacity:;
display: block;
margin: 30px; }
#text1:hover
{
-moz-animation-play-state:paused;/*鼠标经过时暂停动画*/
-webkit-animation-play-state:paused;
-o-animation-play-state:paused;
-ms-animation-play-state:paused;
animation-play-state:paused; }
#text2:hover
{
-moz-animation-play-state:paused;
-webkit-animation-play-state:paused;
-o-animation-play-state:paused;
-ms-animation-play-state:paused;
animation-play-state:paused; }
#text1
{ -webkit-animation-name:animation1;/*动画名称*/
-webkit-animation-duration:4s;/*动画持续时间*/
-webkit-animation-timing-function:ease-in;/*变化由慢到快*/
-webkit-animation-delay: 2s;/*过了2S后开始动画*/
-webkit-animation-iteration-count: infinite;/*设置动画无限播放*/
-webkit-transform: translate(55px); animation-name:animation1;
animation-delay: 4s;
animation-timing-function: ease-in;
animation-delay: 2s;
animation-iteration-count: infinite;
transform: translate(55px); -ms-animation-name:animation1;
-ms-animation-duration:4s ;
-ms-animation-timing-function: ease-in;
-ms-animation-delay: 2s;
-ms-animation-iteration-count: infinite;
-ms-transform: translate(55px); -moz-animation-name:animation1;
-moz-animation-delay:4s ;
-moz-animation-timing-function: ease-in;
-moz-animation-delay: 2s;
-moz-animation-iteration-count: infinite;
-moz-transform: translate(55px);
}
#text2
{
-webkit-animation-name:animation2;/*动画名称*/
-webkit-animation-duration:4s;/*动画持续时间*/
-webkit-animation-timing-function:ease-in;/*变化由慢到快*/
-webkit-animation-delay: 2s;/*过了2S后开始动画*/
-webkit-animation-iteration-count: infinite;/*设置动画无限播放*/
-webkit-transform: translate(60px); animation-name:animation2;
animation-delay: 4s;
animation-timing-function: ease-in;
animation-delay: 2s;
animation-iteration-count: infinite;
transform: translate(60px); -ms-animation-name:animation2;
-ms-animation-duration:4s ;
-ms-animation-timing-function: ease-in;
-ms-animation-delay: 2s;
-ms-animation-iteration-count: infinite;
-ms-transform: translate(60px); -moz-animation-name:animation2;
-moz-animation-delay:4s ;
-moz-animation-timing-function: ease-in;
-moz-animation-delay: 2s;
-moz-animation-iteration-count: infinite;
-moz-transform: translate(60px); }
@-webkit-keyframes animation1
{
0%{-webkit-transform: translate(-10px);opacity:;}
20%{-webkit-transform: translate(25px);opacity: 0.5;}
45%{-webkit-transform: translate(45px);opacity:;}
100%{-webkit-transform: translate(60px);opacity: 0.8;} }
@-webkit-keyframes animation2
{
0%{-webkit-transform: translate(280px);opacity:;}
30%{-webkit-transform: translate(200px);opacity: 0.5;}
65%{-webkit-transform: translate(130px);opacity:;}
100%{-webkit-transform: translate(60px);opacity:0.8;}
}

  HTML代码: 

<div id="animation">
<span id="text1">这是ly婠婠的博客</span>
<span id="text2">欢迎访问和评论!</span>
</div>

效果如下:

解析说明:

在这个例子中,效果如上图。这里主要是利用animation和translate来达到一个文字渐进的效果。translate的作用是让文字根据给定值发生平移。animation则利用关键帧和百分比数值来将平移过程细分成几个帧,然后设置持续时间,一帧帧连接起来形成动画。

CSS常用样式(四)之animation的更多相关文章

  1. CSS常用样式及示例

    CSS常用样式及示例 一.简介      层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集) ...

  2. 从零开始学习前端开发 — 9、标签嵌套规则及CSS常用样式覆盖

    1. 块级元素可以包含内联元素或某些块级元素,但内联元素却不能包含块级元素,它只能包含其它的内联元素: <div><h1></h1><p></p& ...

  3. css常用样式对文本的处理演练

    CSS文本属性可定义文本的外观,这是毫无疑问的,其次css可以通过以下属性改变文字的排版,比方说letter-spacing实现字符间距text-indent: 2em;完成首行缩进2字符word-s ...

  4. css常用样式font控制字体的多种变换

    CSS 字体属性定义文本的字体系列.大小.加粗.风格(如斜体)和变形(如小型大写字母)font-family控制字体,由于各个电脑系统安装的字体不尽相同,但是基本装有黑体.宋体与微软雅黑这三款字体,通 ...

  5. CSS常用样式属性

    1.CSS字体和文本相关属性 属性 font-family 规定文本的字体系列,比如:“serif” ''sans-serif" font-size 规定文本的字体尺寸 font-style ...

  6. css常用样式属性详细介绍

    对于初学css的来说,肯定会觉得这么多样式不好记,而且记住了也容易忘,其实刚开始我们不用去记这么多的样式,确实是记了也会忘,刚开始只需记住一些常用的就可以了,然后在慢慢的使用过程当中接触并学习一些高级 ...

  7. CSS常用样式整理

    元素边框显示圆角:-moz-border-radius适用于火狐浏览器,-webkit-border-radius适用于Safari和Chrome两种浏览器. 浏览器渐变背景颜色: FILTER: p ...

  8. CSS常用样式(二)

    一.边框样式 1.border:复合属性.设置对象边框的特性. 取值: border-width: 设置或检索对象边框宽度. border-style: 设置或检索对象边框样式. border-col ...

  9. css 常用样式命名规则

    大家在写css的时候,对一些html标签起一个合适的名字是个很头疼的事情,现在给大家分享项目中常用的名字供参考. 外套:wrap  ——用于最外层 头部:header  ——用于头部 主要内容:mai ...

随机推荐

  1. 邻接表无向图(一)之 C语言详解

    本章介绍邻接表无向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实现 ...

  2. [转载]基于TFS实践敏捷-修复Bug和执行代码评审

    本主题阐释了这些功能,以继续这一关注虚拟敏捷团队成员的一天的教程. Peter 忙于编写一些代码以完成积压工作 (backlog) 项任务.但是,他的同事发现了一个阻碍他们工作的 Bug,他想立即修复 ...

  3. 再次用CodeIgniter实现简易blog

    天变冷了,人也变得懒了不少,由于工作的需要,最近一直在学习CodeIgniter(CI)框架的使用,没有系统的从PHP基本语法学起,在网上靠百度谷歌,东拼西凑的实现了一些简单的功能.所以,老PHPer ...

  4. Java生成BASE64编码

    1.所需jar包: BASE64Encoder.jar 2.在导包过程中,可能会出现工程不识别的情况.即:不能找到BASE64Encoder的jar包.此时,可以有两种方法解决这个问题: a.  只需 ...

  5. 简单登录实例Login

    本人菜鸟~~学习过程中~~请求老大们指导!!谢谢!!! 从基础学习,坚持下去,每天进步一点点!! 1.首先要实现登录,通俗点总得有个登陆的样子吧,也就是人要有个脸面嘛!说做就做!自己属于菜鸟级别的,所 ...

  6. Windows Azure HandBook (10) 测试本地网络到微软云的延迟

    <Windows Azure Platform 系列文章目录> 之前遇到一些微软云的客户,在使用海外数据中心的时候,需要评估本地网络到微软云网络的延迟. 我们建议部署到微软云上的服务,离最 ...

  7. Windows Azure Web Site (11) 使用源代码管理器管理Azure Web Site

    <Windows Azure Platform 系列文章目录> 熟悉Azure Web Site平台的读者都知道,我们可以通过FTP等方式,把本地的Web Application部署到微软 ...

  8. msvc2013编译qt5.6源码

    1.回顾 说起到qt的编译,真是领人痛心啊,不仅编译选项繁多,而且编译时间比较久,总是能使想编译qt源码的人望而却步,呵呵...我就是其中一个,不知道从什么时候开始就想着把qt的源码编译一下,也尝试过 ...

  9. Android开发中遇到的requestFeature() must be called before adding content异常

    缘起 上一篇博文中讲到了几种实现全屏显示Activity内容的方法.然而实际在实现中发现了一些问题,在本篇博文中进行总结下.首先交代一下开发环境,本人使用的是Android Studio 1.5.1, ...

  10. TinyOS和Deluge的安装模拟(二)

    TinyOS的安装 TinyOS的安装是一件麻烦的事情,它不像其他的开发环境那样配置简单.要想成功安装好TinyOS,需要选择好PC操作系统,TinyOS安装文件的版本,工具链的版本…….总之,安装过 ...