实现原理
复制一个相同的文本,使用行内元素包裹定位覆盖在原文本上,再使用背景渐变加动画的方式实现文字一个一个出现的效果。需要注意的是动画原理中修改的元素必须是能修改的数值类,并且是css属性,所以这里需要使用@property将代码中--p定义为一个css属性才能让css动画完整的执行。
优点:纯css实现
缺点:当背景为图片或者较为复杂的渐变色时不适合用该方法
完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background-color: rgb(0, 0, 0);
color: #fff;
}
.content {
position: relative;
width: 800px;
margin: 100px auto;
text-indent: 2em;
}
.text {
font-size: 24px;
line-height: 38px;
}
.cover {
position: absolute;
top: 0;
}
.cover-text {
--p: 0%;
background: linear-gradient(to right, #0000 var(--p), #000 calc(var(--p) + 20px));
color: transparent;
animation: move 5s linear forwards;
}
@property --p {
syntax: '<percentage>';
inherits: false;
initial-value: 0%;
}
@keyframes move {
to {
--p: 100%;
}
}
</style>
</head>
<body>
<div class="content">
<p class="text">
Houdini 是一组底层 API,它们公开了 CSS 引擎的各个部分,从而使开发人员能够通过加入浏览器渲染引擎的样式和布局过程来扩展 CSS。Houdini 是一组 API,它们使开发人员可以直接访问CSS
对象模型 (CSSOM),使开发人员可以编写浏览器可以解析为 CSS 的代码,从而创建新的 CSS 功能,而无需等待它们在浏览器中本地实现。
</p>
<p class="cover">
<span class="text cover-text">
Houdini 是一组底层 API,它们公开了 CSS 引擎的各个部分,从而使开发人员能够通过加入浏览器渲染引擎的样式和布局过程来扩展 CSS。Houdini 是一组 API,它们使开发人员可以直接访问CSS
对象模型 (CSSOM),使开发人员可以编写浏览器可以解析为 CSS 的代码,从而创建新的 CSS 功能,而无需等待它们在浏览器中本地实现。
</span>
</p>
</div>
</body>
</html>