css动画

2019-12-04  本文已影响0人  fanison

1.浏览器渲染原理

2.渲染方式

查看属性触发流程

3.CSS动画优化

4.transform

作用:旋转、缩放、倾斜或平移给定元素

  transform: translateX(50px);
  transform: translateY(50px);
  transform: translate(50px,50px);

translate(-50%,-50%)实现绝对定位元素的居中

  <div class="wrapper">
    <div id="demo"></div>
  </div>
.wrapper{
  border:1px solid green;
  position:relative;
  height:300px;
  width:300px;
}  
#demo{
  width: 100px;
  height: 100px;
  border: 1px solid red;
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
}
  transform: scaleX(1.5);
  transform: scaleY(1.5);
  transform: scale(1.5,0.5);

5.transition

transition: height 1s ease 1s ;

这其实是一个简写形式,可以单独定义成各个属性

transition-property: height;
transition-duration: 1s;
transition-timing-function: ease;
transition-delay: 1s;
指定属性,时长:
transition: height 1s;
transition: left 1s, top 400ms;
过渡方式:
transition: 1s ease;
延迟:它指定了动画发生的顺序,使得多个不同的transition可以连在一起,形成复杂效果
transition: 1s height, 1s width 1s ;

上面代码指定,width在1秒之后,再开始变化,也就是延迟(delay)1秒

6.animation

animation可以实现复杂的动画,使用animation首先需要定义动画过程,也就是关键帧

@keyframes xxx {
  0% {
    transform: none;
  }
  50%{
    transform: translateX(200px);
  }
  100%{
    transform: translateX(200px) translateY(100px);
  }
}

定义了关键帧之后就可以给DOM元素绑定动画

#demo.start{
  animation: xxx 1.5s;
}

div:hover {
  animation: 1s 1s rainbow linear 3 forwards normal;
}

这是一个简写形式,可以分解成各个单独的属性

div:hover {
  animation-name: rainbow;
  animation-duration: 1s;
  animation-timing-function: linear;
  animation-delay: 1s;
  animation-fill-mode:forwards;
  animation-direction: normal;
  animation-iteration-count: 3;
}

animation-fill-mode:

设置CSS动画在执行之前和之后如何将样式应用于其目标。

div:hover {
  animation: 1s xxx forwards;
  /* animation-fill-mode: forwards; */
}

animation-direction

指示动画是否反向播放

div:hover {
  animation: 1s xxx 3 reverse;
}

transition、animation Demo

上一篇下一篇

猜你喜欢

热点阅读