转载声明:文章链接:https://blog.csdn.net/qq_39583550/article/details/128380183
效果图

首选来一个简单的布局
这里就不用多说,都是简单排版
<h1>一个爬坑的Coder</h1>html {
  height: 100%;
}
body {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
}
h1 {
  font-size: 48px;
}每个文字独立出来
每个文字都有动画,那每个字都应该是单独,可以把每个文字单独用一个标签包裹起来,这样就可以了。但是手动操作太过于麻烦了,还得上JavaScript
const h1 = document.querySelector("h1");
// $&包括替换字符串中整个匹配项的副本
h1.innerHTML = h1.innerText.replace(/\S/g, "<span>$&</span>");
制作css动画
h1 span {
  /* 内联元素(inline)动画不起作用, 因此要设置为‘inline-block’ */
  display: inline-block;
  animation: jump 500ms ease-in-out;
}
@keyframes jump {
  0%,
    100% {
      transform: translateY(0);
    }
  50% {
    transform: translateY(-10px);
  }
}此时发现所有文字都是一起动画的,为了达到效果,我们需要给每个文字加上动画延迟(后面的要比前面的动画开始时间要迟一点),这样就可以一个接着一个动。
给每个文字都加上动画延迟
h1 span {
  /* 内联元素(inline)动画不起作用, 因此要设置为‘inline-block’ */
  display: inline-block;
  animation: jump 500ms ease-in-out;
  animation-delay: var(--delay);
}
document.querySelectorAll("span").forEach((span, index) => {
  // 我们可以借助css变量,或者直接通过js给animation-delay属性设置值
  span.style.setProperty("--delay", `${index * 150}ms`);
});
所有代码
通过以上的步骤分析,就可以达到效果。
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      html {
        height: 100%;
      }
      body {
        display: flex;
        justify-content: center;
        align-items: center;
        height: 100%;
      }
      h1 {
        font-size: 48px;
      }
      h1 span {
        /* //   内联元素(inline)动画不起作用, 因此要设置为‘inline-block’ */
        display: inline-block;
        animation: jump 500ms ease-in-out;
        animation-delay: var(--delay);
      }
      @keyframes jump {
        0%,
        100% {
          transform: translateY(0);
        }
        50% {
          transform: translateY(-10px);
        }
      }
    </style>
  </head>
  <body>
    <h1>一个爬坑的Coder</h1>
    <script>
      const h1 = document.querySelector("h1");
      // 包括替换字符串中整个匹配项的副本
      h1.innerHTML = h1.innerText.replace(/\S/g, "<span>$&</span>");
      document.querySelectorAll("span").forEach((span, index) => {
        span.style.setProperty("--delay", `${index * 150}ms`);
      });
    </script>
  </body>
</html>
                
                    
                            
                            
                                    
                                    
大佬的文章让我受益匪浅,如痴如醉,以后的日子还希望能够得到大佬的谆谆指点