前言
实现两组单词逐渐减短,最后只保留首字母的效果
效果:
正文
<template>
  <div class="header">
    <div style="margin-right: 12px; display: inline-flex">
      <div
        class="door"
        id="book1"
        v-for="(letter, index) in lettersBook1"
        :key="index"
        :style="{
          animationDelay: `${(lettersBook1.length - index - 1) * 0.2}s`,
        }"
        :class="{ fadeOut: index !== 0 && isShowFade }"
      >
        <span class="left-panel">{{ letter }}</span>
      </div>
    </div>
    <div style="display: inline-flex">
      <div
        class="door"
        id="book2"
        v-for="(letter, index) in lettersBook2"
        :key="index"
        :style="{
          animationDelay: `${(lettersBook2.length - index - 1) * 0.2}s`,
        }"
        :class="{ fadeOut: index !== 0 && isShowFade }"
      >
        <span class="left-panel">{{ letter }}</span>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      lettersBook1: ["B", "o", "o", "k"],
      lettersBook2: ["1", "2", "o", "k"],
      isShowFade: false,
    };
  },
  mounted() {
    setTimeout(() => {
      this.isShowFade = true;
      let book1 = document.querySelector("#book1");
      book1.style.opacity = "0.4";
      let book2 = document.querySelector("#book2");
      book2.style.transform = "translateX(-58px)";
    }, 1000);
  },
};
</script>
<style>
.fadeOut {
  animation: fadeOut 0.5s ease-in-out;
  animation-fill-mode: forwards;
}
@keyframes fadeOut {
  0% {
    opacity: 1;
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    transform: translateX(-45px);
  }
}
</style>
ps.其实可以优化一下,让后面的单词减少的时候就往前移动
扩展
css3动画
CSS3 3D转换之3D旋转 rotate非常简单粗暴的小猪佩奇图片旋转案例
animation.css使用
官网
安装&全局引入
npm install animate.css --save
//main.js中
import "animate.css";
接着就可以使用了。
注意点:
- 如果装了其他版本的animation.css,重装另一个版本后需要重启服务器生效。
- 目前最新的animation.css版本是4.1.1。vue2使用时,翻转Y存在一点问题。
补充
CSS3 动画w3cschool的css3动画基础理论学习
 27 个前端动画库让你的交互更加炫酷很多库可以参考样式和写法~
 css动画-animation各个属性详解写的很详细,也是比较基础的。
Vue+wow.js+animate.css-实现页面滚动可视区域动画效果展示-案例 有效果有源码,看起来不错。



















