CSS3中动画的一些使用方法介绍

关于@keyframes和动画的介绍

CSS动画主要的组件是@keyframes,这个规则就是用来创建动画的。将@keyframes当作是时间轴的不同阶段,在其内部,你可以自定义时间轴的不同阶段,每个阶段有不同的CSS声明。

然后,为了使CSS动画生效,需要将@keyframes和一个选择器绑定。最后将会逐渐解析@keyframes内的全部代码,以阶段为划分,慢慢改变把最初的样式变成新的样式。

@keyframes元素

首先,定义动画的分隔。@keyframes的属性如下:

1、选择一个名字(在案例我选择tutsFade)

2、阶段划分:0%–100%,从0%到100%

3、CSS样式:你想要在每一个阶段用到的样式

例如:

@keyframe tutsFade{
    0%{
        opacity:1;
    }
    100%{
        opacity:0;
    }
}

 

          或者:

@keyframe tutsFade{
     from{
           opacity:1;
     }
     to{
           opacity:0;
     }
}

 

还有一种简写形式:

@keyframe tutsFade{
     to{
           opacity:0;
     }
}

 

上述代码将对元素的透明度应用一个过渡效果:从1到0,三种方式最终的效果相同。

动画

Animation作为一个选择器去调用@keyframes。Animation有很多的属性:

1、animation-name:@keyframes的名字(例如tutsFade)

2、animation-duration:动画持续的时间

3、animation-timing-function:设置动画的速度特效,可以选择linear/ease-in/ease/ease-out/ease-in-out/cubic-bezier

4、animation-delay:动画开始之前的时间延迟

5、animation-iteration-count:动画循环的次数

6、animation-direction:规定动画是否反向轮播,normal是默认值,正常播放;alternate表示动画反向轮播

7、animation-fill-mode:规定动画在播放之前或之后,其动画效果是否可见(none/forwards/backwards/both)

例如:
.element {
  animation-name: tutsFade;
  animation-duration: 4s;
  animation-delay: 1s;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  animation-direction: alternate;
}
 

            简写:
.element {
  animation: tutsFade 4s 1s infinite linear alternate;
}
     添加私有前缀
            需要添加特定浏览器的私有前缀以确保最好的浏览器支持:chrome&Safari:-webkit-;Firefox:-moz-;Opera:-o-;IE:-ms-
            修改如下:
.element {
    -webkit-animation: tutsFade 4s 1s infinite linear alternate;
    -moz-animation: tutsFade 4s 1s infinite linear alternate;
    -ms-animation: tutsFade 4s 1s infinite linear alternate;
    -o-animation: tutsFade 4s 1s infinite linear alternate;
    animation: tutsFade 4s 1s infinite linear alternate;
}
 

          @keyframes也一样
@-webkit-keyframes tutsFade { /* your style */ }
@-moz-keyframes tutsFade { /* your style */ }
@-ms-keyframes tutsFade { /* your style */ }
@-o-keyframes tutsFade { /* your style */ }
@keyframes tutsFade { /* your style */ }
 

为了得到更多浏览器供应商的私有前缀,你可以去http://css3please.com/,查找,上面提供了非常丰富的资源。

多动画

可以添加多个动画,各个动画之间用逗号分隔。

.element {
  animation: tutsFade 4s 1s infinite linear alternate,
             tutsRotate 4s 1s infinite linear alternate;
}
@keyframes tutsFade {
  to {
    opacity: 0;
  }
}
@keyframes tutsRotate {
  to {
    transform: rotate(180deg);
  }
}
 

     方形到圆形的动画教程
             利用上面的规则,我将创建一个简单的图形动画。总共会有5个阶段,并且在每个阶段都会对元素定义不同的Border-radius,rotation和background-color。
            1、基本元素
div {
  width: 200px;
  height: 200px;
  background-color: coral;
}
 

2、声明Keyframes

创建一个名为square-to-circle的keyframe元素,包含5个阶段

@keyframes square-to-circle {
  0%  {
    border-radius:0 0 0 0;
    background:coral;
    transform:rotate(0deg);
  }
  25%  {
    border-radius:50% 0 0 0;
    background:darksalmon;
    transform:rotate(45deg);
  }
  50%  {
    border-radius:50% 50% 0 0;
    background:indianred;
    transform:rotate(90deg);
  }
  75%  {
    border-radius:50% 50% 50% 0;
    background:lightcoral;
    transform:rotate(135deg);
  }
  100% {
    border-radius:50%;
    background:darksalmon;
    transform:rotate(180deg);
  }
}
3、应用动画

将定义的动画应用之前的div

div {
  width: 200px;
  height: 200px;
  background-color: coral;
  animation: square-to-circle 2s 1s infinite alternate;
}
 

4、使用时间函数和添加私有前缀

最后要添加的一个动画属性是animation-timing-function,它对动画元素的速度、加速和减速进行定义。一个类似的工具是:CSS Easing Animation Tool,可以使用它来计算时间函数。

在案例中,我给动画添加了一个cubic-bezier函数。

div {
  width: 200px;
  height: 200px;
  background-color: coral;
  animation: square-to-circle 2s 1s infinite cubic-bezier(1,.015,.295,1.225) alternate;
}
 

为了保证最好的浏览器支持,还必须添加私有前缀(没有添加前缀的代码如下)

div {
  width: 200px;
  height: 200px;
  background-color: coral;
  animation: square-to-circle 2s .5s infinite cubic-bezier(1,.015,.295,1.225) alternate;
}
 
@keyframes square-to-circle {
  0%  {
    border-radius:0 0 0 0;
    background:coral;
    transform:rotate(0deg);
  }
  25%  {
    border-radius:50% 0 0 0;
    background:darksalmon;
    transform:rotate(45deg);
  }
  50%  {
    border-radius:50% 50% 0 0;
    background:indianred;
    transform:rotate(90deg);
  }
  75%  {
    border-radius:50% 50% 50% 0;
    background:lightcoral;
    transform:rotate(135deg);
  }
  100% {
    border-radius:50%;
    background:darksalmon;
    transform:rotate(180deg);
  }
}
 

这个在FireFox显示会有点异常,为了在FireFox有绝佳的显示效果,可以给div添加如下样式

outline: 1px solid transparent;

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索浏览器
时间
css3怎么使用动画、css3实现动画的方法、css3 动画制作方法、灭火器的使用方法动画、口袋动画使用方法,以便于您获取更多的相关知识。

时间: 2024-08-01 19:55:34

CSS3中动画的一些使用方法介绍的相关文章

在word文档中打"√“的几种方法介绍

  有时候,我们在做电子调查报告或者填写一些资料表,会遇到一些word文档中有小方框[□],需要在里面打钩[√],说实在的,碰到的时候还真有些烦,我想很多人都有这样的感触吧,下面小编就为大家介绍在word文档中打"√"的几种方法,不会的朋友快快来学习吧! 第一种,利用Word中的"符号"插入钩. 首先打开word文档,选择插入-符号 再符号中-选择其他符号命令 字体中选择数字运算符,找到"√ 钩",点击插入即可. 第二种,利用输入法在Word中打

JavaScript中消除闭包的一般方法介绍

 这篇文章主要介绍了JavaScript中消除闭包的一般方法介绍,本文直接给出了操作示例,需要的朋友可以参考下     JavaScript 的闭包是一个其主动发展的特性, 也是一个被动发展的特性. 也就是说, 一方面, JS 有了闭包能更好解决一些问题. 另一方面, JS 为了解决某些问题, 而不得不使用闭包勉强来解决问题. 前者这里不讨论, 如果 JS 闭包能更好的解决问题, 当然使用闭包更好. 我讨论的是后者, 是因为 JS 本身的限制, 而不得不磕磕绊绊地用闭包来解决的问题, 例如"变量

word文档如何分页?在Word中使文档分页方法介绍

步骤 1.打开word,不管是什么版本,应该都可以设置文字分页的.写上一些文字,或者打开已经写好的word,或者下载下来的文档 2.然后,在最上面的那一栏主菜单栏上面找到页面布局这个菜单,然后点击一下他,之后会显示出来很多子菜单. 3.在众多子菜单里面,找到分隔符这个选项.单击它,又会出来很多选项.此时会出现分解符和分页符,两个都可以选. 4.如果选择分页符,就要在你想要分页的文字前面用鼠标点击一下,使光标停在你想要分页的那一行的上面,之后再按照上面的提示点击分页符就直接分页了. 5.如果是要分

PHP中COOKIE及时生效的方法介绍

 本篇文章主要是对PHP中COOKIE及时生效的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 通常,php里要浏览器刷一下才能出现cookie,怎么才能让cookie及时生效呢,下面分享一个让cookie及时生效的一个方法,很实用,代码如下:  代码如下: /**  * 设置cookie  * @param string $name 键名  * @param mixed $value 值  * @param int $expire 过期时间,默认是一天  */ public fi

PHP字符串中特殊符号的过滤方法介绍

 本篇文章主要是对PHP字符串中特殊符号的过滤方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 有时候我们会遇到过滤字符串中特殊字符的问题,本文提供了一个处理特殊字符串的方法,可能有遗漏,如果读者发现了可以  代码如下: function strFilter($str){     $str = str_replace('`', '', $str);     $str = str_replace('·', '', $str);     $str = str_replace('~'

jquery中的$(document).ready()使用方法介绍

 本篇文章主要是对jquery中的$(document).ready()使用方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 window.onload = function(){ alert("welcome"); } 这样的写法作用是希望在页面加载完,自动执行定义js代码(function).   $(document).ready(function(){.... })这个函数是用来取代页面中的window.onload;   document.ready()

CSS3 多栏文本的使用方法介绍

多栏文本是CSS3的一个新特性,用于灵活地显示长篇内容,提高可读性. 1,使用column-count设置栏数 IE只有IE10和IE11支持 column-count 属性. Chrome.Firefox.Safari和Opera也支持多栏文本,但需要使用开发商前缀的属性. 下面将文本分成3栏,不管窗口尺寸如何栏目宽度都会自动缩放: <style> .Content {     text-align: justify;     -moz-column-count: 3;     -webki

MySQL数据库中备份/恢复的两方法介绍

  下面介绍MySQL数据库备份/恢复的两种方法. 方法一: query($sql); } //将生成的临时备份文件合在一起 $outfile = date("Y-m-d").".sql"; if(file_exists($dbdir.$outfile)) @unlink($dbdir.$outfile); $fpr = fopen($dbdir.$outfile, "a"); foreach($txtname as $txt){ if(file

jQuery中阻止冒泡事件的方法介绍_jquery

一.冒泡事件简介 当我们点击一个控件的时候,如果包括这个控件的父控件也有click事件,则会继续执行.比如:div下的a都有click事件,点击a的时候,会alert出现2次.这个现象叫做冒泡事件. 这个事件从原始元素开始一直冒泡到DOM树的最上层.目标元素: 任何一个事件的目标元素都是最开始的那个元素,在我们的这个例子中也就是按钮,并且它在我们的元素对象中以属性的形式出现.使用事件代理的话我们可以把事 件处理器添加到一个元素上,等待一个事件从它的子级元素里冒泡上来,并且可以很方便地得知这个事件