【发布时间】:2020-02-19 03:26:03
【问题描述】:
我正在尝试仅使用 css 渲染“太阳系”图,同心圆很容易使用 css 边界半径、边界和一些变换来完成,但我正在尝试找到一种方法来获得小“行星”遵循“轨道”或彩色边界。必须有更精确的方法来实现这一目标
如果你看这张图片,你会明白我在做什么:
以及它目前的外观,抱歉内联 css...
<div style="width:100%; height:100vh; padding:0px; background-color:white; display:flex; flex-direction:column; position:relative; align-items:flex-end;">
<div style="width:250px; height:250px; position:absolute; border-radius:50%; background-color:red; top:50%; transform:translateY(-50%) translateX(50%); right:0px"></div>
<div style="width:450px; height:450px; position:absolute; border-radius:50%; border:2px solid red; top:50%; transform:translateY(-50%) translateX(50%); right:0px"></div>
<div style="width:650px; height:650px; position:absolute; border-radius:50%; border:2px solid red; top:50%; transform:translateY(-50%) translateX(50%); right:0px"></div>
<div style="width:850px; height:850px; position:absolute; border-radius:50%; border:2px solid red; top:50%; transform:translateY(-50%) translateX(50%); right:0px"></div>
<div style="position:absolute; height:70%; width:100px; top:50%; transform:translateY(-50%); right:15%; outline:1px solid red;">
<div style="width:25px; height:25px; border-radius:50%; border:1px solid red; position:absolute; top:0px; left:0px;"></div>
<div style="width:25px; height:25px; border-radius:50%; border:1px solid red; position:absolute; transform:translateY(-50%); top:50%; right:100%;"></div>
<div style="width:25px; height:25px; border-radius:50%; border:1px solid red; position:absolute; bottom:0px; left:0px;"></div>
</div>
<div style="position:absolute; height:80%; width:100px; top:50%; transform:translateY(-50%); right:55%; outline:1px solid red;">
<div style="width:50px; height:50px; border-radius:50%; border:1px solid red; position:absolute; top:0px; left:0px;"></div>
<div style="width:50px; height:50px; border-radius:50%; border:1px solid red; position:absolute; transform:translateY(-50%); top:50%; right:100%;"></div>
<div style="width:50px; height:50px; border-radius:50%; border:1px solid red; position:absolute; bottom:0px; left:0px;"></div>
</div>
</div>
【问题讨论】:
-
如果你的轨道行星的半径是r,轨道圆的直径是d,做一个宽高等于(d + r/2)的盒子。将你的星球放在盒子里 x: 50%, y: 0,然后旋转外盒子。该框应位于圆圈的中心。
-
跟进我上一条评论的小提琴示例:jsfiddle.net/tyLg48sx
标签: javascript css vue.js