transitions animations transform

184 阅读1分钟

在没有这些之前动画的实现:

#demo{
  width:100px;
  height:100px;
  border:1px solid red;
  position:relative;
  left:0;
}

var n = 1                               
var id=setInterval ( ()=>{ 
  if(n<=200){
    n=n+1
    document.getElementById('demo').style.left=n+'px'; 
  }
  else{
    clearInterval(id)
  }
},1000/60)

现在不必在这么繁琐了!

实现动画的两种方式:

第一张:transitions(过渡,也可以说是单个动作)
第二种:animations(动画)

1.transitions

CSS transitions 可以决定哪些属性(变化时)发生动画效果,持续多久 (设置 duration) ,何时开始 (设置 delay),以及过渡方式,比如匀速地或先快后慢)。

transition: 属性名(all代表所有的属性) | 时长 | 过渡方式 | 延迟
默认:all 0 ease 0
完整写法:
transition-property: all; /* 过渡属性 */
transition-duration: 0; /* 耗时 */
transition-timing-function: ease; /* 效果,默认 ease(缓入缓出) */
transition-delay: 0; /* 延迟 */

过渡方式:

linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier | step-start | step-end | steps
linear 线性---动画会以恒定的速度从初始状态过渡到结束状态
ease 缓动----动画开始时逐步加速,中间逐渐减慢,结束时逐步加速
ease-in-out -----开始慢 中间加速 结束慢

display属性的显示与消失是无法进行过渡的,改成visibility:hidden ==> visibile可以

2.animations

CSS 中,如果按一秒24帧的画法来写代码,未免太过繁琐。所以我们把动画拆解为动作(transition),一个动作表示从一个状态到另一个状态的变化,然后把一组动作串起来,即是 CSS 中的动画(animation)

1.声明关键帧
2.@keyframe添加动画(使用from-to或者%写法)

 语法:

animation:动画名 | 时长 | 过渡方式 | 延迟 | 次数 | 方向 | 填充模式 | 是否暂停

完整写法:
animation-name: none; /* 动画名称 */
animation-duration: 0; /* 耗时 */
animation-timing-function: ease; /* 效果,默认缓入缓出 与transition取值是一样的 */animation-delay: 0; /* 延迟 */
animation-iteration-count: 1; /* 循环次数infinite(无线循环) */animation-direction: normal; /* 正放 or 倒放reverse */

3.transform(变形)

虽然名字和 transition 有点像,但是它和动画无关,transition 是一个状态到另一个状态的变化过程,而 transform 仅仅是静止的最终状态

matrix 矩阵变换
translate 位移
scale 缩放
rotate 绕轴旋转
skew[skju:] 倾斜
perspective 透视距离(可简单理解为眼睛离屏幕的距离)????-----

注意:

transform原点位于正中心 ,坐标轴写在另一篇