过渡(transition)

transition 又可以分为 transition-delaytransition-durationtransition-propertytransition-timing-function

  • transition-property

    指定要执行过渡效果的属性。多个属性用逗号隔开,过渡所有属性时可以使用 all。大部分属性(如颜色、marginpadding等)都支持过渡效果。但是,要过渡的属性必须是可计算的值(如 700px)。

    .box {
      transition-property: width, height;
    }
    
  • transition-duration

    指定过渡效果的持续时间,单位可以是 s 或 ms。过渡多个属性时,可用逗号隔开。

    .box {
      transition-duration: 1s,2000ms;
    }
    
  • transition-timing-function

    过渡的时序函数。

    .box {
      transition-duration: 1s,2000ms;
    }
    
  • transition-delay

    过渡动画延迟 xxx 执行。

  • transition

    将以上几个综合起来,没有顺序要求。但是,如果同时设置了过渡时间和延迟时间,则会把第一个当做过渡时间。

    * {
      margin: 0;
      padding: 0;
    }
    
    .d1 {
      width: 800px;
      height: 600px;
      background-color: blanchedalmond;
      overflow: hidden;
    }
    
    .d1 div {
      width: 100px;
      height: 100px;
    }
    
    .d2 {
      background-color: #ff6600;
      margin-bottom: 50px;
      margin-left: 0;
    
      /* 过渡 */
      /* transition: all 2s; */
      /* transition-property: width,height; */
      transition-property: margin;
      transition-duration: 3s;
      /* 指定过渡的方式,默认值是ease,慢->快->慢 */
      /* transition-timing-function: ease; */
      /* 线性,匀速 */
      /* transition-timing-function: linear; */
      /* 慢->快 */
      /* transition-timing-function: ease-in; */
      /* 慢->快->慢 */
      /* transition-timing-function: ease-in-out; */
      /* 通过贝塞尔曲线指定,其实上面的几种都是。 */
      /* transition-timing-function: cubic-bezier(.17,.67,.9,.25); */
      /* 分步执行过渡效果,就是在过渡时间内只走指定的步数而到达终点 */
      /* 第二个值默认值 end,表示在每time/steps (s) 结束时才执行 */
      /* 如果第二个参数是start,表示在每time/steps (s) 开始时就运动 */
      /* transition-timing-function: steps(3,start); */
      /* 过渡动画延迟 xx 后才执行 */
      transition-delay: 2s;
      /* 没有顺序要求 */
      /* 第一个时间是持续时间,第二个是延迟时间 */
      transition: margin-left 2s;
      
    }
    
    /* 当鼠标移入d1时,改变d2的宽高 */
    .d1:hover div {
      /* width: 200px;
      height: 200px; */
      margin-left: 700px;
    }
    
    .d3 {
      background: cornflowerblue;
      transition-property: margin;
      transition-duration: 3s;
      /* 指定过渡的方式,默认值是 ease, 慢->快->慢*/
      /* transition-timing-function: ease; */
    }
    
    <div class="d1">
      <div class="d2"></div>
      <div class="d3"></div>
    </div>
    

    注意

    使用过渡时,必须要指定过渡属性和过渡的时间。

  • 实现走动效果

<div class="nav"></div>
.nav {
  width: 132px;
  height: 271px;
  margin: 0 auto;
  background-image: url(./img/1.png);
  background-position: 0 0;
  transition: background-position 0.5s steps(3,start);
}

.nav:hover {
  background-position: -396px 0;
}