我正在尝试使用CSS和Javascript创建下面的图片。
我已经成功地创建了半圆,但是我不知道如何将不同的线条根据圆周对齐。我祈求CSS神灵能够在我的探索中帮助我。
这是我到目前为止的代码:
这是我到目前为止的代码:
.roll-degrees{
position: absolute;
top: 0px;
z-index: 1;
}
.roll-curve{
width:400px;
height:120px;
border:solid 3px #000;
border-color: black transparent transparent transparent;
border-radius: 50%/120px 120px 0px 0;
}
<div class="roll-degrees">
<div class="roll-curve"></div>
</div>
根据答案更新:现在我正在尝试在圆形底部显示箭头。下面是代码。我是否需要添加/减去箭头的尺寸?
.roll-degrees-arrow{
--width: 3px;
--height: 16px;
position: absolute;
width: 0;
height: 0;
border-left: 15px solid transparent;
border-right: 15px solid transparent;
border-bottom: 25px solid white;
z-index: 1;
--arrow-angle-direction: 1; /* default towards right*/
top: calc(50% - var(--height));
left: calc(50% - var(--width) / 2);
transform:
rotate(calc(var(--arrow-angle-direction) * var(--arrow-angle)))
translateY(calc(-1 * var(--circle-radius)))
;
}
<div class="roll-degrees-wrapper">
<div class="roll-degrees">
<div class="roll-degrees-arrow"></div>
...
</div>
</div>
transform
可以为你完成所有这些操作:从圆心开始,旋转(rotate)你的刻度,然后仅在y轴上进行平移,这将使其移动到圆上的正确位置:https://jsfiddle.net/b4e7oLah/ (在fiddle中仍有一些工作要处理边框宽度,但你已经有了想法)。 - Kaiido--v-offset
属性(使其更小)。 - Henry Woody.marker
的transform-origin
设置为其中心点:https://jsfiddle.net/50xbnh79/ - Kaiido