javascript - 文字闪亮效果无法正常工作我该如何解决这个问题
问题描述
我想在给定的文本上添加光泽效果,所以我有这个:
const prepareCaption = document.querySelector(".prepareCaption");
function Shine() {
prepareCaption.classList.remove("shine");
setTimeout(() => prepareCaption.classList.add("shine"), 10);
}
function show() {
prepareCaption.style.top = '5vh';
prepareCaption.style.opacity = '1';
}
setTimeout(() => show(), 2500);
setTimeout(() => Shine(), 10000);
.prepareCaption {
position: relative;
font-size: 3em;
filter: drop-shadow(0px 0px 5px #100021) drop-shadow(1px .1em 1px #0d021a);
text-align: center;
width: 100%;
color: #f50035;
margin: 0 auto;
opacity: 0;
top: -2.5vh;
transition: top 0.3s ease-in-out, opacity 0.3s ease-in-out;
}
.shine {
background-image: linear-gradient(-40deg, transparent 0%, transparent 40%, #fff 50%, transparent 60%, transparent 100%);
background-position: -100%, 0%;
background-repeat: no-repeat, repeat;
background-size: 10em, auto;
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
animation: shine 2s ease-in-out 1;
}
@-webkit-keyframes shine {
from { background-position: -100%, 0%; }
to { background-position: 200%, 0%; }
}
<div class="prepare-container">
<p class="prepareCaption">This should be shining</p>
</div>
如您所见,它无法正常工作,并且在添加闪耀类后文本立即隐藏。
期望的行为是在红色文本上闪耀一次明亮的闪光效果。
我怎样才能解决这个问题?
解决方案
您只需要添加与文本颜色相同的光泽背景颜色即可。
const prepareCaption = document.querySelector(".prepareCaption");
function Shine() {
prepareCaption.classList.remove("shine");
setTimeout(() => prepareCaption.classList.add("shine"), 10);
}
function show() {
prepareCaption.style.top = '5vh';
prepareCaption.style.opacity = '1';
}
setTimeout(() => show(), 2500);
setTimeout(() => Shine(), 10000);
.prepareCaption {
position: relative;
font-size: 3em;
filter: drop-shadow(0px 0px 5px #100021) drop-shadow(1px .1em 1px #0d021a);
text-align: center;
width: 100%;
color: #f50035;
margin: 0 auto;
opacity: 0;
top: -2.5vh;
transition: top 0.3s ease-in-out, opacity 0.3s ease-in-out;
}
.shine {
/* currentColor = color property */
background-color: currentColor;
background-image: linear-gradient(-40deg, transparent 0%, transparent 40%, #fff 50%, transparent 60%, transparent 100%);
background-position: -100% 0%;
background-repeat: no-repeat;
background-size: 60%;
-webkit-text-fill-color: transparent;
-webkit-background-clip: text;
animation: shine 4s ease-out 1 forwards;
}
@keyframes shine {
from {
background-position: -100% 0%;
}
to {
background-position: 300% 0%;
}
}
<div class="prepare-container">
<p class="prepareCaption">This should be shining</p>
</div>
推荐阅读
- javascript - 立即在 eventListener 中运行 JavaScript 函数
- r - 停止选项卡的默认执行
- java - 我在输出 JsonFile 中的键以相反的顺序显示
- android - 在Android中设置View的高度
- python-3.x - 如何摆脱在 Python Selenium 中使用 ChromeDriver 启动 Google Chrome 的响应消息
- amazon-web-services - aws cli - 如何仅查询 ec2 on demand 实例
- c++ - C++处理超级基本错误我应该怎么做?
- reactjs - 当tiltReverse 设置为{false} 时,react-parallax-tilt 包会干扰对子项的悬停效果
- reactjs - 如何将 MUI 手风琴的标题颜色更改为灰色?
- assembly - 设置 VMIN 和 VTIME Termios 程序集