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秒的时间完成背景颜色以及宽度的变化,并无限制重复这两秒的动画

*

未完待续  ---

http://www.php.cn/css-tutorial-356867.html

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

  1. Java分布式互联网架构/微服务/高性能/springboot/springcloud 2018年10月17日直播内容

    2018年10月17日直播内容 大规模并发必备的消息中间件技术ActiveMq 网盘链接: https://pan.baidu.com/s/1GlxsZ2JnrvX- YN16-S7lQw 提取码: ...

  2. 2016年12月17日 星期六 --出埃及记 Exodus 21:12

    2016年12月17日 星期六 --出埃及记 Exodus 21:12 "Anyone who strikes a man and kills him shall surely be put ...

  3. 2015年8月17日,杨学明老师《产业互联网化下的研发模式转型》在中国科学院下属机构CNNIC成功举办!

    2015年8月17日,杨学明老师为中国网络新闻办公室直属央企中国互联网络中心(CNNIC)提供了一天的<产业互联网化下的研发模式转型>内训课程.杨学明老师分别从产业互联网化的问题与挑战.传 ...

  4. 8月17日 Power-BI关于全国房地产开发投资情况分析 QQ群视频交流开课啦

    <ignore_js_op> 数读|中国的经济只剩下房地产了么? 引言: 近日一则标题为“房奴们又立功啦,7月份新增贷款几乎都来自房贷!”的报道吸引了大众的目光.该报道指出在央行8月13日 ...

  5. 2016年11月17日 星期四 --出埃及记 Exodus 20:8

    2016年11月17日 星期四 --出埃及记 Exodus 20:8 "Remember the Sabbath day by keeping it holy.当记念安息日,守为圣日.

  6. 2016年10月17日 星期一 --出埃及记 Exodus 19:1

    2016年10月17日 星期一 --出埃及记 Exodus 19:1 In the third month after the Israelites left Egypt--on the very d ...

  7. 西安Uber优步司机奖励政策(1月11日~1月17日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  8. 2018年12月8日广州.NET微软技术俱乐部活动总结

    吕毅写了一篇活动总结,写得很好!原文地址是:https://blog.walterlv.com/post/december-event-microsoft-technology-salon.html ...

  9. 2018年3月24日上海MVP线下技术交流活动简报

    2018年3月24日下午,几位上海MVP自发组织了一次线下的技术交流会,主要由MVP胡浩牵头,我(陈晴阳).刘鑫.朱兴亮和胡浩各自做了一次主题演讲,具体主题是: 陈晴阳:<这还是我认识的Visu ...

随机推荐

  1. centos6.5系统hadoop2.7安装sqoop

    一.sqoop简介 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ...

  2. 快速求出n!的质因数的个数

    一般做组合数的题目都要进行质因数的分解,我们一般是for循环对每个数进行质因数分解,大多数情况都不会超时,但极少数的情况下,题目会不允许这样的做法,所以我们需要学会一种更快的方法来求质因数. 我们一般 ...

  3. Use formatter to format your JAVA code

    In order to make the codes looks unified and make it easy to understand, it's better to use the same ...

  4. mybatis思维导图(二)

    写在前面 上一篇文章写了mybatis的基本原理和配置文件的基本使用,这一篇写mybatis的使用,主要包括与sping集成.动态sql.还有mapper的xml文件一下复杂配置等.值得注意的是,导图 ...

  5. 微信第三方登录测试时报Scope参数错误或没有Scope权限解决方法

    一 报错信息: 二 出现原因分析: 出现这种错误网上查出现有的原因是: 1. 订阅号没有相关的权限 2. 账号没有认证,没有相关的权限 那么这里遇到问题两种都不是.开发账号是 服务号,而且也是认证号. ...

  6. [GO]有缓冲通道

    有缓冲通道就是在有能力保留数据的通道,那么通道在满的时候或者通道是空的时候,存数据和取数据就会发生阻塞 package main import ( "fmt" "time ...

  7. 深入理解Cookie和Session机制

    转载理解Cookie和Session机制 目录 Cookie机制什么是CookieCookie的不可跨域名性Unicode编码:保存中文BASE64编码:保存二进制图片设置Cookie的所有属性Coo ...

  8. 一个java多线程面试题

    线程a 打印 数字 0--12: 线程b 打印 字母 a--z; 打印结果:0ab1cd2ef3gh4ij5kl6mn7op8qr9st10uv11wx12yz 要求用到 线程间传值: 分析:线程a打 ...

  9. MVC模式在Java Web应用程序中的实例分析

    MVC在软件架构中是一种比较重要的架构思想,已经被广泛的应用在实际的java web项目开发中,我们所要了解和掌握的是mvc的架构思想和使用mvc模式来分析和解决问题的方法.当然相同或不同的项目都有各 ...

  10. hadoop之MapReduce学习

    为什么需要MapReduce 进行分析数据,计算方便和复用性强:而且是文件级别的 进程包括三个 mrappmaster:负责整个程序管理 maptask:负责map阶段的整个过程 reducemask ...