我遇到问题,我有一个绝对位置的div,我试图用无限循环旋转360度。但是如果我使用转换:translate(-50%, - 50%)来完全居中这个div,它就不会正常工作。
HTML
<div class="randomName"></div>
CSS
.randomName {
background-color: orange;
width: 1500px;
height: 1500px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
animation: orbita 2s linear infinite;
-webkit-animation: orbita 2s linear infinite;
-moz-animation: orbita 2s linear infinite;
-o-animation: orbita 2s linear infinite;
}
@keyframes orbita {
0% {transform: rotate(0deg);}
100% {transform: rotate(360deg);}
}
不确定为什么不起作用。有人可以指导我吗?谢谢!
答案 0 :(得分:1)
使用动画时,您通过指定新的属性覆盖初始转换属性。相反,您需要附加旋转以进行翻译,以使两者都能正常工作:
.randomName {
background-color: orange;
width: 150px;
height: 150px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
animation: orbita 2s linear infinite;
-webkit-animation: orbita 2s linear infinite;
-moz-animation: orbita 2s linear infinite;
-o-animation: orbita 2s linear infinite;
}
@keyframes orbita {
0% {
transform:translate(-50%, -50%) rotate(0deg);
}
100% {
transform:translate(-50%, -50%) rotate(360deg);
}
}
<div class="randomName"></div>
另一个解决方案是使用另一种方式使元素居中并保持动画原样。
以下是使用flex将元素居中的示例:
body {
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
.randomName {
background-color: orange;
width: 150px;
height: 150px;
animation: orbita 2s linear infinite;
-webkit-animation: orbita 2s linear infinite;
-moz-animation: orbita 2s linear infinite;
-o-animation: orbita 2s linear infinite;
}
@keyframes orbita {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<div class="randomName"></div>