css如何让元素平均分布在圆上

clipboard.png
如何已知圆中心有一个relative的点,现在for循环一些absolute的浮动子元素在里面,如何让
这些子元素完美分布在圆上,等差是没用的,用弧度公式也没成功,求大神解答

阅读 6.7k
2 个回答
<style>
    .zh-circle{position: relative;width: 240px;height: 240px;border-radius: 50%;border: 1px solid #f00;box-sizing: border-box;margin: 100px auto 0;}
    .zh-circle li{position: absolute;z-index: 2;left: 50%;top: 0;width: 40px;height: 40px;margin: -20px 0 0 -20px;border: 1px solid #f00;border-radius: 50%;box-sizing: border-box;list-style: none;transform-origin: 20px 140px;}
</style>
<ul class="zh-circle">
    <!-- <li></li> -->
</ul>
<script>
    var liSize = 10,
        li = '';
    for(var i=0; i<liSize; i++) {
        li += '<li style="transform: rotate('+360/liSize*i+'deg)"></li>';
    }
    $('.zh-circle').html(li);
</script>

图片描述

描述一下:
1、transform-origin: x y z; 设置旋转中心点,示例中为什么是20px 140px呢,正常情况下是0 120px的,但前端做了margin向上向左偏移20px,所以这里需要加回来。

2、360/liSize*i 设置叠加旋转角度

说下思路,就不写代码了:
1,先定位一个小圆在12点钟的位置,然后,循环克隆元素,每克隆一个用translate:ratate()进行旋转,可以先试一下

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题