无尽的旋转DIV,但具有绝对定位

时间:2017-12-23 19:12:47

标签: html css css3 css-animations css-transforms

我遇到问题,我有一个绝对位置的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);}  
}

不确定为什么不起作用。有人可以指导我吗?谢谢!

1 个答案:

答案 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>