javascript - 页面加载后,Safari 仅加载一次带有 javascript 和 css 的动画
问题描述
我正在网站上创建登录弹出窗口。我只是注意到,当使用 Safari 多次打开弹出窗口(打开和关闭它)时,动画只会在页面加载后第一次打开模式时显示。在 Chrome 中,一切正常,每次都会显示动画。我在这个 codepen 中简化了问题,问题也很明显。 https://codepen.io/bvonr/pen/BaZVxxK 这种行为的原因是什么。我该如何解决这个问题,以便动画不仅在 Chrome 中而且在 Safari 中一直显示?我认为问题出在我的 CSS 的这些行中。
.animate {
animation: zoom 0.6s
}
@keyframes zoom {
from {transform: scale(0)}
to {transform: scale(1)}
}
解决方案
“在我的页面加载之前发生的事情”的一个常见解决方案是监听页面已加载事件,然后做一些事情:
window.addEventListener('load', () => {
const myAnimationElement = document.querySelector("#my-animation-element")
myAnimationElement.classList.add("animate");
});
此事件仅在整个页面和所有相关资源都已加载时才会触发。加载事件
关于您的CSS,它似乎很好,如果这不能解决它,您可以尝试在页面卸载之前通过监听正确的事件然后在它触发时删除该类,从您的元素和动画中删除该类,但这似乎很奇怪你需要这样做。卸载事件
我也会检查这个网页:https ://caniuse.com/?search=animations
我希望这会有所帮助,如果没有,我很抱歉。
推荐阅读
- amazon-web-services - 如何向队列添加权限以允许不同帐户中的用户对队列的权限
- mysql - Sum price based on date and print based on clubs in mysql
- sql - TempDB 驱动器已满 - 程序需要多少性能?
- android - 在导航栏下方绘制叠加层
- python - 我是否必须分别为训练和测试数据进行拟合 PCA
- c++ - 我在下面的代码中收到错误“超出输出限制”
- angularjs - REST 请求因 URI 编码路径参数而失败
- kubernetes - 无法使用绑定公共 IP 的 VM 设置 kuberenetes
- mysql - 通过请求正文快速发送数据,但请求方法是 GET?
- sublimetext3 - sublime text 2 构建系统:错误 5 访问被拒绝