html - 使用 CSS 围绕圆圈旋转对象?

标签 html css css-animations

我试图让三个物体围绕一个圆圈旋转。到目前为止,我已经能够让一个物体绕着圆圈旋转。如果不弄乱代码,我无法获得多个。谁能建议实现这一目标的最佳方法?这是代码的一部分和 fiddle 。谢谢!

这是 Demo

.outCircle {
  width: 200px;
  height: 200px;
  background-color: lightblue;
  left: 270px;
  position: absolute;
  top: 50px;
  -moz-border-radius: 100px;
  -webkit-border-radius: 100px;
  border-radius: 100px;
}
.rotate {
  width: 100%;
  height: 100%;
  -webkit-animation: circle 10s infinite linear;
}
.counterrotate {
  width: 50px;
  height: 50px;
  -webkit-animation: ccircle 10s infinite linear;
}
.inner {
  width: 100px;
  height: 100px;
  background: red;
  -moz-border-radius: 50px;
  -webkit-border-radius: 50px;
  border-radius: 100px;
  position: absolute;
  left: 0px;
  top: 0px;
  background-color: red;
  display: block;
}
@-webkit-keyframes circle {
  from {
    -webkit-transform: rotateZ(0deg)
  }
  to {
    -webkit-transform: rotateZ(360deg)
  }
}
@-webkit-keyframes ccircle {
  from {
    -webkit-transform: rotateZ(360deg)
  }
  to {
    -webkit-transform: rotateZ(0deg)
  }
}
<div class="outCircle">
  <div class="rotate">
    <div class="counterrotate">
      <div class="inner">hello
      </div>
    </div>
  </div>
</div>

最佳答案

适用于任意数量外部元素的 Jquery 解决方案。

Jquery 无耻地从ThiefMaster♦ 偷来的以及他们在此 Q & A 的回答

var radius = 100; // adjust to move out items in and out 
var fields = $('.item'),
  container = $('#container'),
  width = container.width(),
  height = container.height();
var angle = 0,
  step = (2 * Math.PI) / fields.length;
fields.each(function() {
  var x = Math.round(width / 2 + radius * Math.cos(angle) - $(this).width() / 2);
  var y = Math.round(height / 2 + radius * Math.sin(angle) - $(this).height() / 2);
  if (window.console) {
    console.log($(this).text(), x, y);
  }
  $(this).css({
    left: x + 'px',
    top: y + 'px'
  });
  angle += step;
});
body {
  padding: 2em;
}
#container {
  width: 200px;
  height: 200px;
  margin: 10px auto;
  border: 1px solid #000;
  position: relative;
  border-radius: 50%;
  animation: spin 10s linear infinite;
}
.item {
  width: 30px;
  height: 30px;
  line-height: 30px;
  text-align: center;
  border-radius: 50%;
  position: absolute;
  background: #f00;
  animation: spin 10s linear infinite reverse;
}
@keyframes spin {
  100% {
    transform: rotate(1turn);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
</div>

关于html - 使用 CSS 围绕圆圈旋转对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39020670/

相关文章:

css - CSS 关键帧动画出现意外行为

html - 从中心出现关键帧动画

html - 为什么下一行的 div 会留出一点空白?

css - 媒体查询高度用作最小宽度中的宽度

html - CSS 列表以未知数量逐渐淡入

javascript - Jquery SlideDown 偶尔工作

html - 保留 HTML 中的换行符但换行文本 : possible?

javascript - 为什么我的图标没有显示?

html - <image> 上的文本使用 CSS

html - 在 float 之间居中行内 block 元素