【发布时间】:2020-04-12 00:27:16
【问题描述】:
我尝试使用 reactjs 创建一个幸运抽奖轮,首先,我需要将所有输入数据放置到某个 XY 位置。下面是我需要的预期输出 XY 位置示例。
var renderData = ["1","2","3","4","5","6","7","8","9","10","11","12"];
React.createElement('div', { className: '_data'},
renderData.map((index,item)=>{
var itemPosition = index / renderData.length * 360;
var itemX = itemPosition * Math.PI/180;
var itemY = itemPosition * Math.PI/180;
return React.createElement('div', { className: '_items',
style:{top:itemX,left:itemY}
},item);
})
)
所以我使用createElement 为每个数据创建div,然后使用top 和left 作为XY 位置。
如何计算每个div的XY位置
更新
尝试@keikai 回答后
var renderData = ["1","2","3","4","5","6","7","8","9","10","11","12"];
const r = 350;
const len = renderData.length;
const radiusList = renderData.map(x => (360 / len) * (x - 1));
const positionPairList = radiusList.map(x => ({
x: Math.sin((Math.PI * x) / 180) * r,
y: Math.cos((Math.PI * x) / 180) * r
}));
React.createElement('div', { className: '_data'},
renderData.map((item, index) => {
return React.createElement('div', { className: `_items`,
style:{top:`${positionPairList[index].x.toFixed(2)}px`,left:`${positionPairList[index].y.toFixed(2)}px`}
},item);
})
)
- 所有数据都旋转0度
- 子 div 仍然没有放在父 div 内的正确位置
- 顺时针从10开始?
【问题讨论】:
-
这能回答你的问题吗? How to get x, y distance from a circle
-
@keikai 您提到的链接,为计算提供了 45 度,我不确定如何计算每个数据的每个度数,因为输入数据长度也可能不同。
-
只需将
45替换为您计算出的天使即可。 -
@keikai,正如上面的评论,我提到我不确定如何计算每个数据的每个度数
标签: javascript html css reactjs styles