고정 된 크기의 상자를 채우려면 임의의 크기 모양으로 채워야합니다.랜덤 크기 모양의 채우기 상자
나는 9 가지 모양을 가지고 있기 때문에 하나 이상의 모양이 다른 모양 위에 놓일 수 있으므로이 모양이 무작위로 흩어져있는 것처럼 임의성 효과를 만드는 것입니다. 그러나 다시 빈 공간이 남을 수는 없습니다. 이것은 매우 중요하고 가장 어려운 부분입니다. 그래서
은 내가 더 잘하고있어 내가 가진이가같은 loook 방법의 예 그리고 나는 또한 설치 jsFiddle이 상상하는, 당신이 here
확인해 I이었다 이것에 대해 몇 시간 동안 작업했는데 내가 생각한 것에 상관없이 작동하지 않았습니다. 그래서 이것은 코드로 수행하는 작업의 기본적인 예일뿐입니다.
나는 완전히 작동하는 코드를 요구하지는 않지만이 시점에서 어떻게 계속해야하는지에 대한 조언은 많은 도움이 될 것입니다.
그리고 SO 이후 규칙이 jsFiddle 코드를 요구하고
는 여기있다 : 이$shape = $('<div class="shape"></div>');
$container = $(".container");
//random shape sizes
shapes = [
[rand(50, 70), rand(50, 70)],
[rand(50, 70), rand(50, 70)],
[rand(60, 70), rand(60, 70)],
[rand(60, 100), rand(60, 100)],
[rand(100, 140), rand(100, 140)],
[rand(100, 140), rand(100, 140)],
[rand(100, 140), rand(100, 140)],
[rand(140, 190), rand(140, 190)],
[rand(150, 210), rand(150, 210)]
];
used = [];
left = 0;
top = 0;
for(i = 1; i <= 3; i++){
offset = rand(0, 8);
width = shapes[offset][0];
height = shapes[offset][1];
$container.append(
$shape.css({
width: width,
height: height,
top: top,
left: left,
zIndex: i
})
.text(i)
.clone()
);
//increase top offset
top += shapes[offset][1];
}
function rand(from, to){
return Math.floor((Math.random()*to)+from);
}
재미있는 질문 쉬운 것). 그것으로 들어가기 전에, 나는 상자들이 당신의 이미지에서 겹쳐서는 안된다고 가정합니다. – sixFingers
또한 이미지 자르기가 허용됩니까? – sixFingers
'rand()'의 구현이 잘못되었습니다. 당신이'rand (2,4)'를 가지고 있고 난수가'~ 1'이라면'5'를 얻을 것입니다. 당신은 할 수있다 :'(((from-to) * rand) + from)' – Halcyon