html - 为什么添加旋转动画会偏移我的图像?
问题描述
我试图制作一个旋转的标志,但是一旦添加了动画,它就会跳下来,我不知道为什么。我只是添加-webkit-animation: rotation 5s infinite linear;
而不是调整位置。
这是它的实时版本,您可以单击初始动画后的徽标以添加旋转类。任何想法如何使其保持原位?
const EL_logo = document.querySelector(".permanent-logo");
EL_logo.addEventListener("click", () => {
EL_logo.classList.add("rotate-logo");
});
.permanent-logo {
position: relative;
left: 50%;
transform: translate(-50%, -50%);
top: 70px;
width: 120px;
}
.rotate-logo {
animation: rotation 5s infinite linear;
}
@keyframes rotation {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(359deg);
}
}
<div class="initial-overlay">
<div class="logo-container">
<img class="permanent-logo" src="https://i.stack.imgur.com/g2LtV.png" alt="logo">
</div>
</div>
解决方案
如果您的元素已经应用了非动画变换transform: translate(-50%, -50%)
,则animation
关键帧还应该考虑初始变换 - 因为后来的变换不会添加到顶部,而是合成在现有的变换上。
你应该重复它们transform: translate(-50%, -50%) rotate(0deg);
:
const EL_logo = document.querySelector(".permanent-logo");
EL_logo.addEventListener("click", () => {
EL_logo.classList.add("rotate-logo");
});
.permanent-logo {
position: relative;
left: 50%;
transform: translate(-50%, -50%);
top: 70px;
width: 120px;
}
.rotate-logo {
animation: rotation 5s infinite linear;
}
@keyframes rotation {
0% {
transform: translate(-50%, -50%) rotate(0deg);
}
100% {
transform: translate(-50%, -50%) rotate(359deg);
}
}
<div class="initial-overlay">
<div class="logo-container">
<img class="permanent-logo" src="https://i.stack.imgur.com/g2LtV.png" alt="logo">
</div>
</div>
推荐阅读
- python-3.x - 在搜索字符时,我删除了 *.txt 文件中多余的 \n 并打印出来。但我不明白为什么它只打印这个
- javascript - 如何检查数组中的object.values是否按顺序相同
- javascript - 将自定义变量传递给 PayPal
- c# - 从代码运行 PS CMDLet 返回错误:“无法识别”
- java - jax-ws 响应不是预期的
- python - Python - 带盒约束和 L1 正则化的线性回归
- c# - 如果 Discord.Net C# 中不存在,如何按名称查找频道并创建它
- typescript - react-query QueryObserverResult 的打字稿问题
- python - SLACK,PYTHON:如何以机器人的身份在消息中发送文件?
- javascript - 消息 SONARqube - 通过测试每个属性来限制此循环的作用