css实现文字爱心动画

597 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情

演示

动画.gif

技术栈

animation-delay


animation-delay 属性定义动画什么时候开始。

animation-delay 值单位可以是秒(s)或毫秒(ms)。

提示: 允许负值,-2s 使动画马上开始,但跳过 2 秒进入动画。

默认值:	0
继承:	no
版本:	CSS3
JavaScript 语法:	object object.style.animationDelay="2s"

transform

transform 属性向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。 语法:

none	定义不进行转换。	测试
matrix(n,n,n,n,n,n)	定义 2D 转换,使用六个值的矩阵。	测试
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)	定义 3D 转换,使用 16 个值的 4x4 矩阵。	
translate(x,y)	定义 2D 转换。	测试
translate3d(x,y,z)	定义 3D 转换。	
translateX(x)	定义转换,只是用 X 轴的值。	测试
translateY(y)	定义转换,只是用 Y 轴的值。	测试
translateZ(z)	定义 3D 转换,只是用 Z 轴的值。	
scale(x,y)	定义 2D 缩放转换。	测试
scale3d(x,y,z)	定义 3D 缩放转换。	
scaleX(x)	通过设置 X 轴的值来定义缩放转换。	测试
scaleY(y)	通过设置 Y 轴的值来定义缩放转换。	测试
scaleZ(z)	通过设置 Z 轴的值来定义 3D 缩放转换。	
rotate(angle)	定义 2D 旋转,在参数中规定角度。	测试
rotate3d(x,y,z,angle)	定义 3D 旋转。	
rotateX(angle)	定义沿着 X 轴的 3D 旋转。	测试
rotateY(angle)	定义沿着 Y 轴的 3D 旋转。	测试
rotateZ(angle)	定义沿着 Z 轴的 3D 旋转。	测试
skew(x-angle,y-angle)	定义沿着 X 和 Y 轴的 2D 倾斜转换。	测试
skewX(angle)	定义沿着 X 轴的 2D 倾斜转换。	测试
skewY(angle)	定义沿着 Y 轴的 2D 倾斜转换。	测试
perspective(n)	为 3D 转换元素定义透视视图。	测试

源码

HTML的设定

<div class="love">
    <div class="love_horizontal">
      <div class="love_vertical">
        <div class="love_word">掘金爱肥学</div>
      </div>
    </div>
  </div>
  <div class="love">
    <div class="love_horizontal">
      <div class="love_vertical">
        <div class="love_word">肥学爱掘金</div>
      </div>
    </div>
  </div>
  <div class="love">
    <div class="love_horizontal">
      <div class="love_vertical">
        <div class="love_word">肥学</div>
      </div>
    </div>
  </div>
  <div class="love">
    <div class="love_horizontal">
      <div class="love_vertical">
        <div class="love_word">掘金</div>
      </div>
    </div>
  </div>

延迟设置

#ui .love:nth-child(62) .love_vertical {
  animation-delay: -18600ms;
}
#ui .love:nth-child(63) .love_horizontal {
  animation-delay: -18900ms;
}
#ui .love:nth-child(63) .love_vertical {
  animation-delay: -18900ms;
}
#ui .love:nth-child(64) .love_horizontal {
  animation-delay: -19200ms;
}
#ui .love:nth-child(64) .love_vertical {
  animation-delay: -19200ms;
}
#ui .love:nth-child(65) .love_horizontal {
  animation-delay: -19500ms;
}
#ui .love:nth-child(65) .love_vertical {
  animation-delay: -19500ms;
}
#ui .love:nth-child(66) .love_horizontal {
  animation-delay: -19800ms;
}
#ui .love:nth-child(66) .love_vertical {
  animation-delay: -19800ms;
}
#ui .love:nth-child(67) .love_horizontal {
  animation-delay: -20100ms;
}
#ui .love:nth-child(67) .love_vertical {
  animation-delay: -20100ms;
}
#ui .love:nth-child(68) .love_horizontal {
  animation-delay: -20400ms;
}
#ui .love:nth-child(68) .love_vertical {
  animation-delay: -20400ms;
}
#ui .love:nth-child(69) .love_horizontal {
  animation-delay: -20700ms;
}
#ui .love:nth-child(69) .love_vertical {
  animation-delay: -20700ms;
}
#ui .love:nth-child(70) .love_horizontal {
  animation-delay: -21000ms;
}
#ui .love:nth-child(70) .love_vertical {
  animation-delay: -21000ms;
}
#ui .love:nth-child(71) .love_horizontal {
  animation-delay: -21300ms;
}
#ui .love:nth-child(71) .love_vertical {
  animation-delay: -21300ms;
}
#ui .love:nth-child(72) .love_horizontal {
  animation-delay: -21600ms;
}

旋转和移动设置


@keyframes vertical {
  0% {
    transform: translateY(180px);
  }
  10% {
    transform: translateY(45px);
  }
  15% {
    transform: translateY(4.5px);
  }
  18% {
    transform: translateY(0px);
  }
  20% {
    transform: translateY(4.5px);
  }
  22% {
    transform: translateY(34.61538px);
  }
  24% {
    transform: translateY(64.28571px);
  }
  25% {
    transform: translateY(112.5px);
  }
  26% {
    transform: translateY(64.28571px);
  }
  28% {
    transform: translateY(34.61538px);
  }
  30% {
    transform: translateY(4.5px);
  }
  32% {
    transform: translateY(0px);
  }
  35% {
    transform: translateY(4.5px);
  }
  40% {
    transform: translateY(45px);
  }
  50% {
    transform: translateY(180px);
  }
  71% {
    transform: translateY(428.57143px);
  }
  72.5% {
    transform: translateY(441.17647px);
  }
  75% {
    transform: translateY(450px);
  }
  77.5% {
    transform: translateY(441.17647px);
  }
  79% {
    transform: translateY(428.57143px);
  }
  100% {
    transform: translateY(180px);
  }
}