首页 web前端 css教程 关于css3里的transition和animation区别介绍

关于css3里的transition和animation区别介绍

Mar 16, 2017 am 10:06 AM

** 做了很久的项目了,transition和animation两个css3属性经常被用到实际项目当中,想想把它整理出来。如下:

1:先介绍transition:

a,在做项目中经常会遇见这样的情景,比如一个按钮,当鼠标移入进去的时候改变按钮背景颜色以及字体颜色,此时我们一般会这么做:

.btn{width: 80px;height: 25px;border: 1px solid #333;color:#333;text-align: center;line-height: 25px;} 
.btn:hover{background:green;color:white;}
登录后复制

关于css3里的transition和animation区别介绍

关于css3里的transition和animation区别介绍

b,我们会发现背景以及字体颜色是瞬间改变的,是不是会显得特别生硬呢

此时transition就登场了,见代码:


.btn{width: 80px;height: 25px;border: 1px solid #333;color:#333;text-align: center;line-height: 25px;} 

.btn:hover{background:green;color:white;transition:0.4s;}
登录后复制


 

c,加入transition后我们会发现按钮背景颜色以及字体颜色具备一个时间渐进的过程,直至结束。

这个渐进是怎么来的呢,没错,就是0.4s,

谈及0.4s,就要扯到transition的各项属性了,在此我不打算细致地都写进博客来,因为是完全可以自己查阅资料的。

(1:上述的0.4s是transition其中一个属性的简写: transition-duration

 transition-duration 顾名思义,表示动画持续的时间,也就是上面的0.4s了。在0.4秒的时间中完成背景颜色以及字体颜色的动画。

(2:涉及到0.4秒中持续的动画,我们就要谈及物体运动的快慢了,我们知道一个事物所具备的运动具有这几种:

     (a  linear:匀速

     (b  ease-in:加速

     (c  ease-out:减速

     (d  cubic-bezier函数:自定义速度模式(几乎不用)

 

上面代码中就简简单单只写了transition:0.4s;为什么具备有一个运动呢?

(3:是这样子的,transition有一个属性叫做transition-timing-function,默认是ease,它运动的形式是逐渐放慢的。

不简写就是 transition: 0.4s ease

 

d,我们看到,按钮hover之后,hover样式里所有css描述的变化都具备有transition所描述的动画。

这句话我解释的有点绕口,我们直接上代码解释吧:

1)若是只想让背景颜色具备一个时间段的变化,我们该怎么做呢?


transition: 0.4s background ease-in
登录后复制


2)我们在上面这句代码中看到了background,是的没错,就是因为它指定了动画中只背景颜色具备这个时间段的动画。

它是transition其中一个属性的简写,叫做:transition-property,顾名思义,指定属性。

 

e,我们在实际项目中会发现,有时候我们需要一个动画具备有一个延迟的展现,不希望他立即就产生动画

此时,transition的又一个属性就出来了,transition-delay

见代码:


transition: 0.4s 1s;
登录后复制


我们会发现,此时这个按钮的背景字体动画是在1秒钟之后才开始的。

 

----》   transition虽然简单好用,但是我们会发现它受到各种限制。

1:transition需要一个事件来触发,比如hover,所以没法在网页加载时自动发生

2:  transition是一次性的,不能重复发生,除非一再触发。

3: transition只能定义开始状态和结束状态,不能定义中间状态,也就是说只有两个状态。

4:一条transition规则,只能定义一个属性的变化,不能涉及多个属性。

 

(为了表达清晰,上述4条限制是我引用阮一峰大神博客里的简介)

 

为了突破这些限制,animation出来了。

 

2:animation:

 a),先不详细解释animation的各项属性了,我们直接来showing代码吧

.c{width: 100px;height: 100px;margin: 200px 0 300px 300px;background: orange; }
        .c:hover{animation: 2s change infinite;}

        @keyframes change {
            0% { background: orange; }
            50% { background: pink;width: 200px; }
            100% { background: red;height: 300px; }
        }
登录后复制


上面的代码会产生这样的效果,见截图:

关于css3里的transition和animation区别介绍关于css3里的transition和animation区别介绍

b),当鼠标移入p的时候,p会发生一系列的样式改变(截图无法表现过程),在2秒的时间完成背景颜色以及宽高的变化,并无限制重复这个两秒的动画,是因为什么呢?

c),我准备作这样的解释,此时,你需要做一个animation动画只需要3点

1. 需要一个承载动画的元素,如p

2. 当前的元素写一个animation的css,其中定义你所需要这个动画产生的效果。(你暂时不需要知道如何编写这个动画内部的css)

3. 编写一个动画进程,以@keyframes关键字来定义,而这个动画的进程有一个名字,如change,

  ----------》你可以把这个进程理解成一个函数,@keyframes对应的就是function,而change对应的就是函数名字-----------》最终等待被调用。

好了,明白了以上三点,我们就可以来剖析animation的庐山真面目了。

a)我们接着再来看这段代码:

animation: 2s change infinite;
    

@keyframes change {
       0% { background: orange; }
       50% { background: pink;width: 200px; }
       100% { background: red;height: 300px; }
}
登录后复制


1. 我们先来看这个“所谓的函数change”

    (1):这个change是animation其中的一个属性,叫做动画名字-----》 animation-name:change;

2. 我们再来看这个“百分比”

    (1):这个百分比你只要理解它是这个这个动画在多少时间内完成的一系列样式改变的进度。这个进度你可以描绘这个元素你想改变的的样式属性(可以定义多种)

    (2):当然也可以这样写:

@keyframes change {
            from { background: orange; }
            50% { background: pink;width: 200px; }
            to { background: red;height: 300px; }
}
登录后复制


3.看完了动画制作的过程,现在我们来看如何调用这个动画:见代码:


.c:hover{animation: 2s change infinite;}
登录后复制


(1),机智的你肯定看到了2s,是的没错,就是它让动画2秒完成。和transition一样,它是animation的一个属性,

                               叫做:animation-duration: 2s;

(2),机智的你肯定看到了change,是的没错,就是如此调用这个“动画函数”的.只需要在当前元素animation的css样式里写入就可以了。

(3),刚刚前面我们说了,这段代码会在鼠标移入p元素后2秒的时间完成背景颜色以及宽高的变化,并无限制重复这个两秒的动画

     *:注意看到无限制三个字,

     *:无限制怎么来的呢?此时这段代码只剩下infinite了。

     *:不用想,他也是animation其中之一属性:叫做 animation-iteration-count: infinite;

     *:这个属性是用来定义这个动画应该播放多少次,infinite代表的无限制(无数次),当然你也可以在让它播放一个定值的数次,比如3次


animation-iteration-count: 3;
登录后复制


在这里,你只需要在animation里的css里写入次数就可以了:


.c:hover{animation: 2s change 3;}
登录后复制


4:这个动画虽然已经介绍完了,但是我们会发现动画在两秒钟后又会恢复原样(初始状态):

关于css3里的transition和animation区别介绍

此时我们想让动画两秒执行完毕之后保持在结束状态,这该怎么办了,此时animation的另一个属性就派上用场了

-------------》animation-fill-mode:forwards;

在这里,你只需要在animation里的css里写入forwards就可以了:


.c:hover{animation: 2s change 3 forwards;}
登录后复制


2秒动画结束后就会是这样:

关于css3里的transition和animation区别介绍

5:同样的,animation也和transition一样具备延时动画的属性:

                    ------------》animation-delay: 1s;

同样的animation简写写法如下,代表鼠标移入p内,1秒后动画开始


.c:hover{animation: 2s 1s change 3 forwards;}
登录后复制


6:同样的,animation也和transition一样具备动画以何种速度呈现的属性:默认是ease,它运动的形式是逐渐放慢的。

                ------------------》animation-timing-function: ease;

    

    (a linear:匀速

    (b ease-in:加速

    (c ease-out:减速

    (d cubic-bezier函数:自定义速度模式(几乎不用)

****要改变运动形势只要添加相应的速度代表参数了,见代码:


.c:hover{animation: 2s 1s change 3 forwards linear;}
登录后复制


7:animation还有一个属性我就不打算细写了,--------》animation-direction,默认情况下是normal,

  它是用来改变动画播放不仅只可以从结束状态跳回到起始状态这种形式。

8:上面说过,animation浏览器一加载便可以自动触发:


.c{width: 100px;height: 100px;margin: 200px 0 300px 300px;background: orange; animation: 2s change forwards;}
登录后复制


** 此时你会发现,浏览器一运行这个p就开始动画了。至于什么时候触发,那就要看项目具体需求了。

 

结语:自此,css3中的两大动画transition和animation就介绍完了。如有错误,欢迎指正。

 

以上是关于css3里的transition和animation区别介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1276
29
C# 教程
1256
24
静态表单提供商的比较 静态表单提供商的比较 Apr 16, 2025 am 11:20 AM

让我们尝试在这里造成一个术语:“静态表单提供商”。你带上html

使Sass更快的概念证明 使Sass更快的概念证明 Apr 16, 2025 am 10:38 AM

在一个新项目开始时,Sass汇编发生在眼睛的眨眼中。感觉很棒,尤其是当它与browsersync配对时,它重新加载

每周平台新闻:HTML加载属性,主要的ARIA规格以及从iframe转移到Shadow dom 每周平台新闻:HTML加载属性,主要的ARIA规格以及从iframe转移到Shadow dom Apr 17, 2025 am 10:55 AM

在本周的平台新闻综述中,Chrome引入了一个用于加载的新属性,Web开发人员的可访问性规范以及BBC Move

带有HTML对话框元素的一些动手 带有HTML对话框元素的一些动手 Apr 16, 2025 am 11:33 AM

这是我第一次查看HTML元素。我已经意识到了一段时间,但是尚未将其旋转。它很酷,

纸张形式 纸张形式 Apr 16, 2025 am 11:24 AM

购买或建造是技术的经典辩论。自己构建东西可能会感觉更便宜,因为您的信用卡账单上没有订单项,但是

'订阅播客”链接应在哪里? '订阅播客”链接应在哪里? Apr 16, 2025 pm 12:04 PM

有一段时间,iTunes是播客中的大狗,因此,如果您将“订阅播客”链接到喜欢:

托管您自己的非JavaScript分析的选项 托管您自己的非JavaScript分析的选项 Apr 15, 2025 am 11:09 AM

有很多分析平台可帮助您跟踪网站上的访问者和使用数据。也许最著名的是Google Analytics(广泛使用)

See all articles