随机定位框

时间:2013-10-16 03:01:34

标签: javascript html

我在整个页面中随机定位一堆随机盒时遇到了一些麻烦。

目标是在随机位置显示随机数量的框,并且框在页面上是随机颜色。盒子也应该重叠,使它们真正处于随机位置。

到目前为止,我所拥有的只是页面上的一个随机彩色框,显然不是随机定位的。我很尴尬,从这里开始定位并创建一堆随机盒......

请注意JQuery不能使用。

HTML:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Ramdom Boxes</title>
        <script src="A2Q1.js"></script>
    </head>

    <body>      
    </body>
</html>

使用Javascript:

window.onload = init;

function init() {
    //when page is loaded create a bunch of boxes randomly throughout the page
    //get the body element of the document
    var body = document.getElementsByTagName("body")[0];

    //create the canvas tag
    var canvas = document.createElement("canvas");
    canvas.height = 100;
    canvas.width = 100;
    var context = canvas.getContext("2d");

    //create the box and append onto the canvas 
    var colour = '#'+ Math.round(0xffffff * Math.random()).toString(16);
    context.fillStyle = colour;
    context.fillRect(25,25,50,50); 

    //append the canvas onto the body 
    body.appendChild(canvas);
}

3 个答案:

答案 0 :(得分:2)

最好像窗口大小一样调整画布大小。为了绘制一堆矩形,使用for循环重复执行绘制矩形代码。在窗口宽度和高度中设置每个矩形的位置(Math.random()* window.innerWidth,Math.random()* window.innerHeight)。

这是my sample code

function init() {
    var body = document.getElementsByTagName("body")[0];
    var canvas = document.createElement("canvas");
    canvas.height = window.innerHeight;
    canvas.width = window.innerWidth;
    var context = canvas.getContext("2d");

    //  Opacity makes a good appearance when objects are overlapped 
    context.globalAlpha=0.7;

    //  Repeat to draw a rectangle 100 times
    for(var i=0;i<100;i++){
        var color = '#'+ Math.round(0xffffff * Math.random()).toString(16);
        context.fillStyle = color;

        //Each rectangle is at (0 ~ width of window, 0 ~ height of window)
        //Each rectangle's size is (20 ~ 100, 20 ~ 100)     
        context.fillRect(Math.random()*window.innerWidth, Math.random()*window.innerHeight, Math.random()*80+20, Math.random()*80+20);
    }

    body.appendChild(canvas);
}
window.onload = init;

答案 1 :(得分:1)

For generating the random color you can refer this post

为了获得与整个屏幕的宽度和高度相关的x和y随机值,试试这个。

var maxWidth  = 1000;
var maxHeight = 1000;

var randomX = Math.max(0, Math.min((maxWidth - boxWidth), Math.random() * maxWidth));
var randomY = Math.max(0, Math.min((maxHeight - boxHeight), Math.random() * maxHeight));

像这样设置画布的位置。

box.style.position = "absolute";
box.style.left = randomX;
box.style.top  = randomX;

答案 2 :(得分:-1)

在页面中创建一个表格,然后将该随机框随机放入单元格中。

例如

<table>
<!--many cell-->
</table>

然后你可以把你的盒子随机地放到桌子的单元格里。