javascript - 生成随机元素位置并防止在 JavaScript 中重叠

标签 javascript jquery css random css-position

我在页面上有一个 holder div,我想在其中以随机位置加载小图像作为拼贴画,每个图像都有 10px 的填充。

如何确保图像永远不会相互重叠或 holder div 重叠? 有没有我可以使用的插件或功能?

到目前为止我的代码:

<script src="jquery-1.3.2.min.js" type="text/javascript"></script>

<script type="text/javascript">
$(document).ready(function(){
$("#my_canvas img").each(
function(intIndex) {

var l = Math.floor(Math.random() * $("#my_canvas").width());
var t = Math.floor(Math.random() * $("#my_canvas").height());

$(this).css("left", l);
$(this).css("top", t);

$(this).bind(
    "click",
        function() {
            alert("l=" + l + " t=" + t);
        }
    );

}

);

});

   <style type="text/css">
    #my_canvas
    {
        background: #eee;
        border: black 1px solid;
        width: 800px;
        height: 400px;
    }
    #my_canvas img
    {
        padding: 10px;
        position:absolute;
    }
</style>

<div id="my_canvas">
    <img src="images/1.jpg" />
    <img src="images/9.jpg" />
    <img src="images/2.jpg" />
    <img src="images/3.jpg" />
    <img src="images/4.jpg" />
    <img src="images/5.jpg" />
    <img src="images/6.jpg" />
    <img src="images/7.jpg" />
    <img src="images/8.jpg" />
</div>

最佳答案

将拾取的坐标存储在数组中,以便您可以将放置的每个新图像的坐标与之前的坐标进行比较。

如果您选择的坐标与之前的图像重叠,请选择新坐标。限制尝试次数,这样如果尝试 1000 次都无法放置图片,则可以从第一张图片重新开始。

关于javascript - 生成随机元素位置并防止在 JavaScript 中重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1286855/

相关文章:

java - css img :hover working, img:active 不是

javascript - Jquery、ajax : Clicking on a button and getting the value of the cell next to it on the same row

javascript - 为什么框架会禁用 javascript?

javascript - 通过单击按钮从表中选择前 5 个复选框

css - 如何自动调整一个div?

javascript - 在窗口调整大小时更新 Canvas

javascript - AngularJS .open Modal() 返回错误而不是函数

javascript - 减少函数返回未定义

javascript - 尝试对 http 请求进行排队时出现 process.tick 错误

html - 仅在某些类别内更改 H1 的颜色