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

问题描述 投票:2回答:1

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

不知道为什么不工作。有人可以指导我吗?谢谢!

html css css3 css-animations css-transforms
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.