【发布时间】:2014-05-12 17:05:38
【问题描述】:
我正在尝试为随机数量的元素(跨度)获取随机顶部/左侧定位,这些元素之间的距离至少为 50 像素,以确保散布干净。我现在的代码如下:
function PositionOK(x, y) {
axisarray.sort(function (a, b) {
return a - b
});
for (var i in axisarray) {
var pos = axisarray[i];
if (Math.abs(x - pos.x) < 50) {
return false;
}
if (Math.abs(y - pos.y) < 50) {
return false;
}
}
return true;
}
for (var xy = 0; xy < termArray.length * 2; xy++) {
var x = Math.floor(Math.random() * 500);
var y = Math.floor(Math.random() * 800);
if (PositionOK(x, y)) {
axisarray.push({
'xaxis': x,
'yaxis': y
});
} else axisarray.push({
'xaxis': x + 50,
'yaxis': y + 50
});
}
示例输出:
如您所见,它们分布不均。有些漂浮在另一个之上,当它们应该分散至少 50 像素时。 有什么建议/解决方案吗?
【问题讨论】:
-
你不需要这样的东西:'xaxis': x + 50 + 'px'?
-
我看到的一个潜在问题是,虽然坐标都相距 50 像素,但这并不意味着每个块的边缘将彼此相距 50 像素。由于只有元素的 ORIGIN 为 50px,而不是元素的实际边框,因此您会看到重叠。我不确定我会如何解决这个问题,但我很确定这是你的问题。
-
您还必须考虑元素的宽度和高度。
-
@jp310,这是在生成文档时完成的。
-
@ProtonBetaDecay 是的,我很确定问题是我无法事先将元素的宽度和高度添加到其顶部/左侧位置
标签: javascript jquery html css dom