前言:这是笔者学习之后自己的理解与整理。如果有错误或者疑问的地方,请大家指正,我会持续更新!

  • translate:平移;是transform的一个属性;
  • transform:变形;是一个静态属性,可以改变元素的形状或位置,做出 2d 或 3d 效果;
  • transition:过渡,转变;使 css 属性值在一段时间内平滑的变化,需要有触发条件(如 hover 等),是 animation 的简化版;
  • animation:动画;可以设置多帧效果,然后把它们组合变换,按动画效果展示出来;

transition

  过渡,右有四个子属性:

  • transition-property:过渡属性,默认为 all;
  • transition-duration:过渡效果花费的时间,默认值是0,以秒或毫秒计,不能为负值;
  • transition-timing-function:定义过渡效果的速度,默认值 ease(开始和结束慢,中间快),可以设置 linear(匀速)、ease-in(慢速开始)、ease-out(慢速结束)、ease-in-out(和ease类似,开始和结束慢,但是中间更快)、贝塞尔曲线;
  • transition-delay:定义过渡延时时间;默认值为0(直接开始),以秒或毫秒计,可为负值;
  • transition的四个子属性可以缩写,用空格隔开;其中 duration(过渡时间)和 delay(延时时间)两个值都是时间,当两个值都存在时,第一个是 duration(过渡时间),第二个是 delay(延时时间);如果只存在1个时间,那就是 duration(过渡时间),delay(延时时间)默认为0;
  • transition可以同时设置多个属性的过渡效果,用逗号隔开;
  • transition需要有触发条件,animation 则不需要;

  建议看 大神的这篇博文,讲的比较详细,里面还有关于 API 的东西;

  

  想整个 hover 效果的,弄了好久,又是 iframe(在 jsrun.cn 网站上做出效果,然后分享,自动生成 iframe 链接),又是 js 的,都没弄出来,好像是没有 js 权限,懒得整了。

  <style type="text/css">
* {
padding: 0;
margin: 0;
} .wrapper {
margin: 100px;
height: 300px;
border: 10px solid #f0f;
background: #0ff;
position: relative;
cursor: pointer;
} .test {
width: 100px;
height: 100px;
background: #f60;
position: absolute;
left: 30px;
top: 30px;
transition: width 1s ease-in-out 2s,
height 2s ease-in,
background 3s linear,
left .5s ease-out,
top 1.5s ease-in;
} .wrapper:hover .test {
width: 150px;
height: 50px;
background: #ff0;
left: 200px;
top: 150px;
}
</style>
<div class="wrapper">
<div class="test"></div>
</div>

animation

  动画,一种样式到另一种样式的动画效果,可以改变任意多的次数任意多的样式,用百分比来规定发生的时间,或关键词"from"和"to",等同于"0%"和"100%";

  1. 先用 @keyframes 定义动画的名称,然后根据时间轴来写不同的动画效果;
  2. 在需要做动画效果的元素身上设置 animation 属性,并绑定动画名称,然后设置动画持续时间、时间函数、延时、播放次数、播放方向、播放状态、填充模式等;

@keyframes:

  • @keyframes,声明动画名称;时间轴的百分比顺序可以随便排列,最后浏览器都是从0%到100%按顺序解析,0%不可以省略百分号;
  • 设置小于0%或者大于100%的百分比是无效的;
  • 如果0%或100%没有写动画效果的属性,那么将应用元素默认的属性值;
  • 如果多个 @keyframes 的名称相同,那么只有最后一个有效,如果最后一个 @keyframes 没有写任何属性,那么动画效果就是没有的(不管前面相同名称的 @keyframes)

animation-duration

  动画执行完成所需时间,默认为0(没有动画效果),不能为负值,否则将没有动画效果;

animation-timing-function

  类似与transition的时间函数,默认值ease(开始和结束慢,中间快),可以设置linear(匀速)、ease-in(慢速开始)、ease-out(慢速结束)、ease-in-out(和ease类似,开始和结束慢,但是中间更快)、贝塞尔曲线;

animation-delay

  定义延时多长时间后开始播放动画;可以设置负值(从提前多少秒的位置开始播放动画);

animation-interation-count

  循环次数,默认值是1,可以设置整数或小数,不能是0以及负值,也可以设置关键词"infinite"(无限次数);

animation-direction

  默认值 normal(正向),可设置 reverse(反向)、alternate(在奇数次正向,偶数次反向;也就是说动画顺序是0%---100%---0%---100%---...)、alternate-reverse(在奇数次反向,偶数次正向,也就是说动画顺序是100%---0%---100%---0%---...);

  safari 浏览器不支持 alternate 和 alternate-revers 属性;

animation-fill-mode

  定义动画开始帧和结束帧的动作;默认值是 none(动画结束后,回归到初始状态,不是0%,是元素本身属性);

  可设置 forwards(元素停留在动画结束的状态,这个值并不一定是100%的位置,因为可能是反向播放,也可能播放次数是小数);

  可设置 backwards(元素停留在动画开始的状态,这个值不一定是0%的位置,因为延迟开始的时间可能是负值);

  可设置 both,意思是同时具有 forwards 和 backwards 的效果;

animation-play-state

  设置动画运行(running)或者暂停(paused);

  建议看 大神的这篇博文,讲的比较详细,里面还有关于API的东西;

  六面体旋转:

  <style type="text/css">
* {
padding: 0;
margin: 0;
} li {
list-style: none;
} .wrapper {
width: 600px;
height: 600px;
margin: 0 auto;
} .demo-container {
position: relative;
width: 600px;
height: 600px;
perspective: 1800px;
/*定义视距*/
} @keyframes bigMove {
0% {
transform: rotateX(-25deg)rotateY(-45deg);
} 20% {
transform: rotateX(-25deg)rotateY(135deg);
} 100% {
transform: rotateX(-25deg)rotateY(135deg);
}
} @keyframes smallMove {
0% {
transform: rotateX(-25deg)rotateY(-45deg);
} 20% {
transform: rotateX(-25deg)rotateY(-405deg);
} 100% {
transform: rotateX(-25deg)rotateY(-405deg);
}
} .box {
width: 300px;
height: 300px;
position: absolute;
left: 50%;
top: 50%;
margin-left: -150px;
margin-top: -150px;
transform: rotateX(-25deg)rotateY(-45deg);
transform-style: preserve-3d;
animation: bigMove 5s infinite ease-in-out 2s;
} .box li {
width: 300px;
height: 300px;
box-shadow: 0 0 5px #98b5e0;
text-align: center;
font: 28px/300px "microsoft yahei";
color: #fff;
position: absolute;
top: 0;
left: 0;
background: radial-gradient(circle, rgba(165, 193, 235, .5) 0%, rgba(134, 167, 218, .5) 50%);
} .box .front {
transform: translateZ(150px);
} .box .back {
transform: translateZ(-150px)rotateY(180deg);
} .box .left {
transform: translateX(-150px)rotateY(-90deg);
} .box .right {
transform: translateX(150px)rotateY(90deg);
} .box .top {
transform: translateY(-150px)rotateX(90deg);
} .box .bottom {
transform: translateY(150px)rotateX(-90deg);
} /*inner*/
.inner {
width: 100px;
height: 100px;
position: absolute;
left: 50%;
top: 50%;
margin-left: -50px;
margin-top: -50px;
transform-style: preserve-3d;
transform: rotateX(-25deg)rotateY(-45deg);
animation: smallMove 5s infinite ease-in-out 2s;
} .inner li {
width: 100px;
height: 100px;
box-shadow: 0 0 2px #0b65ea;
text-align: center;
font: 28px/100px "microsoft yahei";
color: #fff;
position: absolute;
top: 0;
left: 0;
background: radial-gradient(circle, rgba(84, 153, 218, .5) 0%, rgba(73, 130, 215, .5) 50%);
} .inner .front {
transform: translateZ(50px);
} .inner .back {
transform: translateZ(-50px)rotateY(180deg);
} .inner .left {
transform: translateX(-50px)rotateY(-90deg);
} .inner .right {
transform: translateX(50px)rotateY(90deg);
} .inner .top {
transform: translateY(-50px)rotateX(90deg);
} .inner .bottom {
transform: translateY(50px)rotateX(-90deg);
}
</style>
<div class="wrapper">
<div class="demo-container">
<ul class="box">
<li class="front"></li>
<li class="back"></li>
<li class="left"></li>
<li class="right"></li>
<li class="top"></li>
<li class="bottom"></li>
</ul>
<ul class="inner">
<li class="front"></li>
<li class="back"></li>
<li class="left"></li>
<li class="right"></li>
<li class="top"></li>
<li class="bottom"></li>
</ul>
</div>
</div>

  球旋转:

  

  <style type="text/css">
* {
padding: 0;
margin: 0;
} li {
list-style: none;
} body {
background: #000;
} .wrapper {
width: 600px;
height: 600px;
margin: 0 auto;
perspective: 1800px;
} .demo-container {
position: relative;
width: 600px;
height: 600px;
overflow: hidden;
} @keyframes boxXuanzhuan {
0% {
transform: rotateX(50deg)rotateZ(170deg)rotateY(50deg);
} 30% {
transform: rotateY(50deg)rotateX(170deg)rotateZ(30deg);
} 60% {
transform: rotateZ(50deg)rotateY(170deg)rotateX(95deg);
} 100% {
transform: rotateX(50deg)rotateZ(170deg)rotateY(66deg);
}
} .box {
width: 600px;
height: 600px;
position: absolute;
left: 50%;
top: 50%;
margin-left: -300px;
margin-top: -300px;
/*transition: all 3s;*/
/*transform: rotateX(-134deg)rotateY(64deg);*/
transform-style: preserve-3d;
animation: boxXuanzhuan 30s infinite ease alternate;
} @keyframes liXuanZhuan {
0% {
background: #acf91a;
color: #00B700;
border-radius: 50%;
width: 50px;
height: 30px;
box-shadow: 0 0 10px #adff2f;
} 30% {
background: #f9641a;
color: #f71af9;
border-radius: 20%;
width: 60px;
height: 50px;
box-shadow: 0 0 10px #818217;
} 70% {
background: #6932bf;
color: #FFFFFF;
border-radius: 50%;
width: 50px;
height: 50px;
box-shadow: 0 0 10px #adff2f;
} 100% {
background: #acf91a;
color: #00B700;
border-radius: 10%;
width: 50px;
height: 30px;
box-shadow: 0 0 10px #adff2f;
}
} .box li {
background: #00FF99;
position: absolute;
width: 60px;
height: 60px;
left: 50%;
top: 50%;
margin-left: -30px;
margin-top: -30px;
font: 22px/60px "microsoft yahei";
color: #F08787;
border-radius: 50%;
text-align: center;
animation: liXuanZhuan 20s infinite ease alternate;
} .item1 {
transform: translateZ(250px);
} .item2 {
transform: translateZ(-250px);
} .item3 {
transform: rotateY(90deg)translateZ(250px);
} .item4 {
transform: rotateY(-90deg)translateZ(250px);
} .item5 {
transform: rotateY(45deg)translateZ(-250px);
} .item6 {
transform: rotateY(-45deg)translateZ(-250px);
} .item7 {
transform: rotateY(45deg)translateZ(250px);
} .item8 {
transform: rotateY(-45deg)translateZ(250px);
} .item9 {
transform: rotateY(-45deg)rotateX(45deg)translateZ(250px);
} .item10 {
transform: rotateY(-135deg)rotateX(45deg)translateZ(250px);
} .item11 {
transform: rotateY(45deg)rotateX(45deg)translateZ(250px);
} .item12 {
transform: rotateY(135deg)rotateX(45deg)translateZ(250px);
} .item13 {
transform: rotateY(-45deg)rotateX(-45deg)translateZ(250px);
} .item14 {
transform: rotateY(-135deg)rotateX(-45deg)translateZ(250px);
} .item15 {
transform: rotateY(45deg)rotateX(-45deg)translateZ(250px);
} .item16 {
transform: rotateY(135deg)rotateX(-45deg)translateZ(250px);
} .item17 {
transform: rotateX(90deg)translateZ(250px);
} .item18 {
transform: rotateX(-90deg)translateZ(250px);
}
</style>
<div class="wrapper">
<div class="demo-container">
<ul class="box">
<li class="item1"></li>
<li class="item2"></li>
<li class="item3"></li>
<li class="item4"></li>
<li class="item5"></li>
<li class="item6"></li>
<li class="item7"></li>
<li class="item8"></li>
<li class="item9"></li>
<li class="item10"></li>
<li class="item11"></li>
<li class="item12"></li>
<li class="item13"></li>
<li class="item14"></li>
<li class="item15"></li>
<li class="item16"></li>
<li class="item17"></li>
<li class="item18"></li>
</ul>
</div>
</div>

transition和animation做动画(css动画二)的更多相关文章

  1. 【从无到有】教你使用animation做简单的动画效果

    今天写写怎么用animation属性做一些简单的动画效果 在CSS选择器中,使用animition动画属性,调用声明好的关键帧 首先声明一个动画(关键帧): @keyframes name{ from ...

  2. 一排盒子,jq鼠标移入的盒子动画移出停止动画,css动画

    css .category > div.active { animation: servicetobig 0.5s ease 1 forwards; } @keyframes serviceto ...

  3. CSS动画-transition/animation

    HTML系列: 人人都懂的HTML基础知识-HTML教程(1) HTML元素大全(1) HTML元素大全(2)-表单 CSS系列: CSS基础知识筑基 常用CSS样式属性 CSS选择器大全48式 CS ...

  4. CSS3与动画有关的属性transition、animation、transform对比

    最近应公司需求,需要用css3做动画,终于把以前一直傻傻分不清楚的三个属性理解了. 索性在这里进行一个简单的对比,加深自己的记忆. 浏览器兼容性 CSS3 transform 属性 Internet ...

  5. Web高性能动画及渲染原理(1)CSS动画和JS动画

    目录 一. CSS动画 和 JS动画 1.1 CSS动画 1.2 JS动画 1.3 小结 二. 使用Velocity.js实现动画 示例代码托管在:http://www.github.com/dash ...

  6. 高性能Web动画和渲染原理系列(1)——CSS动画和JS动画

    [摘要] 介绍CSS动画和JS动画的基本特点,以及轻量级动画库velocity.js的基本用法. 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园 ...

  7. transform,transition,animation 的混合使用——进阶

    今天我们来讲述css3能够做成动画的最小独立单元,并且讲述如何使用这些独立的单元来构成一个‘高大尚’的组合动画. 这是我在网上找的一个案例,修改后的效果图,虽说不是特别的‘高大尚’,但我认为这也跟高大 ...

  8. transfrom、transition、animation区别

    transfrom transform是静态属性,非动画属性,和margin-left.margin-top类似. translate:平移,类似position:relative;translate ...

  9. css 动画 transform transition animation

    1.transform  transform 是通过在浏览器里面让网页元素 移动 旋转 透明 模糊 等方法来实现改变其外观的技术 -webkit-transform : translate(3em,0 ...

随机推荐

  1. 在oracle中,group by后将字符拼接,以及自定义排序

    1.在oracle中,group by后将字符拼接.任务:在学生表中,有studentid和subject两个字段.要求对studentid进行group by分组,并将所选科目拼接在一起.oracl ...

  2. 漫谈Java IO之基础篇

    Java的网络编程如果不是专门搞服务器性能开发或者消息分发,几乎可能涉及不到.但是它却是面试找工作必问的一个知识点,涵盖的知识体系也非常广泛,从Java底层IO原理到操作系统内核组成,再到网络TCP. ...

  3. Mybatis 常用标签

    MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦.拼接的时候要确保不能忘了必要的空格,还要注意省掉 ...

  4. 实现Windows数据绑定

    dataSet数据集   dataset驻留于内存临时存储数据简单的理解为一个临时数据库将数据源的数据保存在内存中独立于任何数据库创建dataset对象引入命名空间:system.Datadatase ...

  5. Alpha第八天

    Alpha第八天 听说 031502543 周龙荣(队长) 031502615 李家鹏 031502632 伍晨薇 031502637 张柽 031502639 郑秦 1.前言 任务分配是VV.ZQ. ...

  6. 201621123060《JAVA程序设计》第八周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 源代码: publ ...

  7. Alpha冲刺置顶随笔

    项目名称:城市安全风险管控系统 小组成员: 张梨贤.林静.周静平.黄腾飞 Alpha冲刺随笔 Alpha冲刺Day1:http://www.cnblogs.com/linlkg/p/7896980.h ...

  8. 201621123062《Java程序设计》第一周学习总结

    1.本周学习总结 关键词: 初步熟悉Java的基本组成.语言特点(简单性.结构中立性).运行环境.简单语法等. 关键概念之间的联系: 1.JVM是Java程序唯一认识的操作系统,其可执行文件为.cla ...

  9. socketpair创建双向通信的管道(全双工通信)

    Linux下socketpair介绍: socketpair创建了一对无名的套接字描述符(只能在AF_UNIX域中使用),描述符存储于一个二元数组,例如sv[2] .这对套接字可以进行双工通信,每一个 ...

  10. 团队作业4——第一次项目冲刺(Alpha版本)11.16

    a. 提供当天站立式会议照片一张 举行站立式会议,讨论项目安排: 整理各自的任务汇报: 全分享遇到的困难一起讨论: 讨论接下来的计划: b. 每个人的工作 (有work item 的ID) 1.前两天 ...