【校招VIP】前端CSS实现跳动的文字

08月14日 收藏 0 评论 1 前端开发

【校招VIP】前端CSS实现跳动的文字

转载声明:文章链接: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>


C 1条回复 评论
Alone

大佬的文章让我受益匪浅,如痴如醉,以后的日子还希望能够得到大佬的谆谆指点

发表于 2024-05-03 23:00:00
0 0