Все divs помещаются «случайно», как будто они мне нужны, но иногда они перекрываются. Это просто вопрос случайности. Как я могу предотвратить это? (В идеале я мог бы установить минимальное расстояние между ними)Случайно расположенные divs без перекрытия
Могу ли я достичь этого, развивая текущий javascript? Нужно ли мне рассматривать совершенно другой подход?
Я честно не знаю, как решить эту проблему. Любое руководство будет высоко оценено. Спасибо.
HTML
<div id="box1" class="boxes">
<div id="text1"> Lorem Ipsum Dolor Sit Amet </div>
</div>
<div id="box2" class="boxes">
<div id="text2"> Lorem Ipsum Dolor Sit Amet </div>
</div>
<div id="box3" class="boxes">
<div id="text3"> Lorem Ipsum Dolor Sit Amet </div>
</div>
<div id="box4" class="boxes">
<div id="text4"> Lorem Ipsum Dolor Sit Amet </div>
</div>
CSS
.boxes {
position: absolute;
}
#text1 {
color: white;
font-family: "Times", Times New Roman, serif;
font-size: 16px;
font-weight: bold;
line-height: 24px;
background-color: black;
}
#text2 {
color: white;
font-family: "Times", Times New Roman, serif;
font-size: 16px;
font-weight: bold;
line-height: 24px;
background-color: blue;
}
#text3 {
color: white;
font-family: "Times", Times New Roman, serif;
font-size: 16px;
font-weight: bold;
line-height: 24px;
background-color: green;
}
#text4 {
color: white;
font-family: "Times", Times New Roman, serif;
font-size: 16px;
font-weight: bold;
line-height: 24px;
background-color: red;
}
Javascript
function setRandomPos(elements,x,dx){
elements.each(function(){
fixLeft=(Math.floor(Math.random()*x)*10) + dx;
fixTop = (Math.floor(Math.random()*40)*10) + 180;
$(this).offset({
left: fixLeft,
top: fixTop
});
});
}
setRandomPos($(".boxes"),40,40);
Для вас не существует волшебного способа предотвратить это. Вам нужно будет изменить элемент setRandomPos, чтобы перед помещением каждого элемента в случайном порядке ему нужно было проверить положение всех остальных элементов и проверить, совпадает ли новая случайная позиция с любым из них. См. Здесь метод, который проверяет, перекрываются ли два div: http://stackoverflow.com/questions/14012766/detecting-whether-two-divs-overlap – HaukurHaf
@HaukurHaf, даже если он работает, он все равно позволит им коснуться, ? Мне нужно, чтобы они не трогали друг друга. – LrnWdlr
Тогда вам нужно всего лишь добавить несколько пикселей к проверке столкновения, чтобы один из div казался немного большим. – HaukurHaf