html - 如何在背景颜色穿过文本时为文本颜色设置动画
问题描述
我有一些带有动画背景的文本,基本上只是在悬停时从上到下填充的纯色。我希望文本在背景穿过文本时改变颜色。因此,如果它在文本中途暂停,甚至是一个字母,部分文本将是一种颜色,而其余文本将是另一种颜色。我知道我已经在某处看到过这种情况,但现在找不到任何示例。
在下面的 gif 中,我的文本只是在颜色之间转换,但这并不是我想要的效果。
解决方案
我要做的是使用伪元素(例如“::before”)复制文本并具有不同的颜色和背景,将其绝对定位在另一个之上,然后转换剪辑路径(以及IE 和 Safari 支持的剪辑)。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.example {
color: #115;
background: #fff;
font-size: 2.5em;
padding: .25em;
position: relative;
}
.example:hover,
.example:focus {
/* this empty rule is a fix for IE10 */
}
.example::before {
content: attr(data-text);
color: #fff;
background: #115;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
padding: .25em;
clip: rect(0,0,2em,0);
clip-path: inset(0 100% 0 0);
-moz-transition: clip .5s;
-webkit-transition: clip .5s;
transition: clip-path .5s, clip .5s;
}
.example:hover::before,
.example:focus::before {
clip: rect(0,1920px,2em,0); /* for old browsers that don't support viewport units */
clip: rect(0,100vw,2em,0); /* can't transition this if 'auto' is specified for any edge */
clip-path: inset(0);
}
</style>
</head>
<body>
<h2 class="example" data-text="Example">Example</h2>
</body>
</html>
推荐阅读
- java - JUnit 嵌套测试未运行
- csh - 如何在c-shell中将特殊字符作为参数传递
- python - python setup.py egg_info 检查日志以获得完整的命令输出 为什么要安装 instagram-scraper
- string - 如何将持续时间字符串格式化为天-小时-分钟字符串?
- postgresql - 在 Postgres 中是否有函数的内部版本号之类的东西?
- r - 无法在 CentOS7 上安装 facebook 先知的 R 库
- java - Java Graphics2D 仅在使用 nvidia-* 驱动程序时闪烁 (Ubuntu)
- flutter - Dart 的基于 Web 的调试器有 API 吗?
- javascript - NullInjectorError:没有 MatSelectionList 的提供者
- macos - 在 /Applications/Xcode.app 中找不到 Xcode