javascript - 模糊+不透明度文本动画在 Google Chrome 浏览器中闪烁
问题描述
因此,有一个小功能可以逐字创建文本动画,但是在每个单词动画结束时它会闪烁(例如不透明度 1-0-1 在一秒钟内跳转),我尝试自己修复它并找出了 chrome for某些原因不喜欢 filter: blur(0) (0 或任何低数字)。有什么提示可以解决吗?因为在 Firefox 和 Opera 中一切正常。
function fadeIn(quoteSpans) {
Array.prototype.forEach.call(quoteSpans, function(word) {
let animate = word.animate([{
opacity: 0,
filter: "blur(3px)"
},{
opacity: 1,
filter: "blur(0px)"
}],
{
duration: 1000,
delay: delay,
fill: 'forwards'
}
);
delay= delay+300;
})
}
解决方案
您的代码在技术上是正确的,但是您看到的问题是浏览器无法正确实现新功能。
这并不是说浏览器在这方面做得不好,但一天的人力只有这么多,而且添加的每一个功能都必须在多个硬件平台上工作,并且有可能破坏已经存在的功能。
在我的电脑上,你的动画在 chrome 上运行得很好,通常是不同的显卡驱动程序/硬件导致了这样的错误。
所以基本上你有3个选择。您可以在 chrome 上打开错误报告并等待他们修复它。
您可以找出导致浏览器失败的硬件配置,并要求您的客户不要使用该配置(显然是个坏主意)。
或者您必须跳出框框思考并找出导致浏览器失败的原因。然后想办法在不触发错误的情况下达到同样的效果。
在您的示例中,我会做出一个有根据的猜测,即同时设置模糊和更改不透明度对于您的浏览器来说太难处理了。
因此,也许您可以做的不是将两种效果都添加到同一个文本元素中,而是仅将模糊动画放在文本上,并在文本上放置一个白色 div。
将文本不透明度保留为 1,但将白色 div 从 1 淡出到 0。然后用户将看到文本“淡入”,因为文本上方的 div“淡出”。
这将防止浏览器不得不处理同一元素上的不透明度和模糊,并且可能会解决您的问题。
推荐阅读
- python-3.x - 尝试为 YouTube API 运行烧瓶应用程序:authlib.oauth2.rfc6749.errors.InvalidClientError: (invalid_client) Unauthorized
- python - 在 Visual Studio Code 的另一个目录中调试 python 模块
- r - 如何对动物园对象列表中的匹配元素求和?
- acumatica - 您可以通过对基于 REST 的端点的一次调用来创建多个客户吗?
- angular - Angular 表单 - 在子组件模板中访问 FormArray
- angularjs - 可扩展网格未与父网格对齐
- python - 使用 del __builtins__.__dict__["__import__"] 删除后如何恢复 __import__
- python-3.x - 使用模块请求登录到具有 2 个不同输入页面的网站
- r - 使用来自另一个 xts 对象的数据更新一个 xts 时间序列对象
- c# - Unity - 拖动停止后继续物体惯性?