当前位置: 首页 > 面试题库 >

使用CSS围绕圆旋转对象?

卫沈义
2023-03-14
问题内容

我正在尝试使三个对象绕一个圆旋转。到目前为止,我已经能够使一个对象绕圆旋转。如果不弄乱代码,我将一无所获。谁能建议最好的方法来做到这一点?这是代码的一部分。谢谢!

.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解决方案,适用于任意数量的外部项目。

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>


 类似资料:
  • 我目前正在尝试绕世界x轴旋转一个位置向量(0,0,1),然后将其旋转回其原始位置(只是尝试使其工作)。我阅读了旋转矩阵,并使它工作(排序),但我现在相当卡住了。 如图和代码所示,我在起点(0,0,1)处创建了一个立方体,并将其向下旋转30度。但顺时针旋转时,它的旋转角度似乎超过30度。但是,当我逆时针(30度)旋转它时,它确实旋转了适当的量。这导致它没有在它应该(0,0,1)的起点处结束。 我想知

  • 我想知道如何围绕它的Y轴旋转一个物体。 例如,我想旋转谷歌示例应用程序hello\u ar\u java的droid机器人https://github.com/google-ar/arcore-android-sdk/tree/master/samples/hello_ar_java围绕其Y轴,角度为alpha。

  • 我有一个球员(绿色),我想让他左右旋转。 这可以通过在其局部Y轴上旋转来轻松实现。然而,问题是播放器可能会沿其局部X轴旋转。这是一张草图: 以下是从顶部看到的视图: 我需要沿红线旋转播放器。我需要这样做,不管他现在在X轴上有什么旋转。(玩家像超人一样飞行,见第一张图片) 通过使用父对象可以很容易地解决此问题,但这在我当前的设置中是不可能的。我当前使用的代码在局部旋转时会出现奇怪的旋转: 如何在全局

  • 问题内容: 有没有一种简单的方法可以围绕图片中心旋转图片?我首先使用了AffineTransformOp。看起来很简单,而且需要,并且在一个整洁的Google会话中为矩阵找到正确的参数。所以我认为… 我的结果是这样的: 如果您忽略旋转90度的倍数的情况,这非常简单(sin()和cos()无法正确处理)。该解决方案的问题在于,它围绕图片左上角的(0,0)坐标点进行变换,而不是围绕图片中心进行正常的变

  • 我在下面有一个类,我将其附加到一个对象上,以使其围绕其轴旋转。我把雪碧的枢轴通过检查员送来了。 这正是我想要的效果,但是我遇到的问题是,每当我触摸并拖动它,然后再次触摸并拖动它,它就会捕捉到一个新的位置。 我想让它做的是,当它旋转,然后再次旋转时,精灵保持其相同的旋转,而不是捕捉到一个新的位置,我想精灵的角度重置为0。接下来,我想让角度持续旋转。所以如果我朝正方向旋转,角度应该在正方向上不断增加,

  • 问题内容: 将转盘旋转到半圆形(北半球)图像的顶部作为背景。范围可以是0-180度。输入进行画布转换的方法时,刻度盘将旋转并停在匹配的值上。这是我根据phrogz传递的帮助和示例进行的尝试 问题答案: 通常,您要执行的操作是: 将上下文转换为画布上对象应旋转的点。 旋转上下文。 通过对象内旋转中心的负偏移来转换上下文。 在0,0处绘制对象。 在代码中: 这是一个实际的示例,展示了这一点。(旋转的数