2018年1月17日总结 css3里transition 和animation 区别

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;}

>>>>>  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). 上述的.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.我们看到,按钮hove 之后,hover 样式里所有css描述的变化都具备有transition所描述的动画。

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

transition: 0.4s background ease-in

  2) 我们在上面diam中看到了background,是的没错,就是因为它指定了动画中只背景颜色具有动画。

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

e. 我们在实际项目中会发现,有时候我们需要一个动画具备一个延迟的展现,不希望他立即就产生动画,此时transition 的又一个属性就出来了,transition-delay

transition:0.4s 1s

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

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

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

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

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

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

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; }
        }

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

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

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

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

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

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

A. 你可以把这个进程理解成一个函数,@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秒的时间完成背景颜色以及宽度的变化,并无限制重复这两秒的动画

*

原文地址:https://www.cnblogs.com/zjx2011/p/8306753.html

时间: 2024-10-10 13:30:00

2018年1月17日总结 css3里transition 和animation 区别的相关文章

2018年4月17日笔记

装饰器 作用:在不改变原函数功能的前提下,给现有函数新增功能 装饰器通过@来使用,相当于把原函数作为参数,传给现有函数 例1: 已有函数hello()如下,在hello()函数打印结果前后各加一行字符,作为现有函数的打印结果 def hello(): print("Hello World!") 例2:在例1的基础上,原函数hello()带有参数 例3:在例2原函数带参数的情况下,现有函数startEnd()也带有参数 个人总结: 在原函数和现有函数都带参数的情况下(例3): 先传现有函

2018年5月17日笔记

python操作redis set操作 sadd(name, values) 增加 scard(name) 获取 spop(name) 删除并返回set中的一个随机元素 srem(name, value) 删除set中的一个指定元素 sunion(keys) 返回指定集合的并集 sinter(keys) 返回指定集合的交集 hash操作 hset(name, key, value) 设置单个元素 hmset(name, {"k1": "v1", "k2&q

2018年11月17日 内存报警实用命令

原文地址:https://www.cnblogs.com/xcj2018/p/9989197.html

六周第三次课(1月17日) 9.6/9.7 awk

六周第三次课(1月17日)9.6/9.7awk ==================================================================================================================================================================================================================================

2018年3月29日 11:02:33 关于docker分享之分布式存储 glusterfs

2018年3月29日 11:02:33 关于docker分享之分布式存储 glusterfs 经典语录: 实际实验搭建:前提 是要保证 一个 /data目录不和根分区在同一个磁盘!1.centos7安装glusterfs参考链接:https://wiki.centos.org/SpecialInterestGroup/Storage/gluster-Quickstart#To Use the RPMs from Storage SIG, you need to install the cento

政府工作报告-2018年3月5日在第十三届全国人民代表大会第一次会议上李克强总理所做报告

政府工作报告--2018年3月5日在第十三届全国人民代表大会第一次会议上国务院总理 李总理 各位代表: 现在,我代表国务院,向大会报告过去五年政府工作,对今年工作提出建议,请予审议,并请全国政协委员提出意见. 一.过去五年工作回顾 第十二届全国人民代表大会第一次会议以来的五年,是我国发展进程中极不平凡的五年.面对极其错综复杂的国内外形势,以习主席同志为核心的党中央团结带领全国各族人民砥砺前行,统筹推进"五位一体"总体布局,协调推进"四个全面"战略布局,改革开放和社会

【旅行】2月17日 南京 - 日照 451公里自驾过年

一. 行程安排 1. 2月15日 - 16日,出发前准备工作 2. 2月17日 05:00 AM,南京市江宁区太平花苑 出发 - 预计当日13:00 PM抵达 山东省日照市东港区.如下图:     3. 如特殊情况,例如路上堵车,天气情况等,考虑在淮安住宿一晚.2月18日返家. 二. 行程    早上5点半左右出发,离开南京收费站,前方是南京长江四桥.早上路上空荡荡.    路上有大雾,行驶2小时后来到盱眙服务区休息.等待雾小些,同时发现了高速公路提供的Wifi,打发下时间.    春运?  

2017年3月17日下午日志

2017年3月17日下午复习了高等数学,继续观看了张宇高等数学第十二讲教学视频高等数学部分计算题题型数列极限的计算原则和方法,深入学习了夹逼准则题型和解决方法,也叫哪里跑准则,认识了很重要的数学家费马和罗尔极其相关数学史,初步学到费马定理.完成英语单词的背诵.

北京Uber优步司机奖励政策(4月17日)

滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里:http://www.cnblogs.com/mfryf/p/4642173.html 打豪车应用:uber详细攻略(附100元优惠码:DL8T6):http://www.cnblogs.com/mfryf/p/4752167.h