Я заполняю body
div, которые имеют определенную ширину и высоту. Затем я получаю ширину этой группы ящиков. Я использую эту ширину для центрирования этой группы с помощью CSS (margin: 0 auto
). Моя проблема в том, что я получаю дополнительную строку всегда, которая не имеет одинакового количества div.
Вот мой код.
HTML:
<body>
<!-- Container-->
<div id="container_boxes" class="clearfix"></div>
</body>
CSS:
#container_boxes{
margin: 0 auto;
padding: 5px;
}
.box{
width: 250px;
height: 250px;
margin: 5px;
float: left;
box-shadow: 1px 1px 0px 0px rgba(0,0,0,0.3);
position: relative;
overflow: hidden;
}
.box:hover{
box-shadow: 3px 3px 0px 0px rgba(0,0,0,0.15);
}
JS:
$(document).ready(function(){
while( $(window).height() > $("#container_boxes").height() && $(window).width() > $("#container_boxes").width()) {
$("#container_boxes").append("<div class=\"box\"></div>");
}
colors= ['#bdc3c7', '#7f8c8d', '#95a5a6', '#2c3e50', '#34495e'];
$('.box').each(function(){
var rndmclr = colors[Math.floor(Math.random()*colors.length)];
$(this).css('background-color', rndmclr);
});
function boxesNumbers(){
var num_boxes = 0;
$('.box').each(function(){
if($(this).prev().length > 0){
if($(this).position().top != $(this).prev().position().top) return false;
num_boxes++;
} else {
num_boxes++;
}
});
$('#container_boxes').css('width', num_boxes*260);
};
boxesNumbers();
$(window).resize(boxesNumbers);
});
благодаря
Хорошо, я понимаю, что понимаю, что вы собираетесь делать. Вот рабочая сцена, которую я сделал: http://jsfiddle.net/6NLjU/
В дополнение к вашему коду я сделал две вещи.
1) Добавлен clearfix в контейнер div, так что он всегда будет иметь высоту, даже если вы плаваете внутренние поля.
#container_boxes:after {content:""; display:table; clear:both;}
2) После окончания цикла while снимите последний флажок. Это связано с тем, что цикл не знает, что он превысил размер окна, пока он не добавит коробку, которая не подходит, а затем увидит, что контейнер слишком большой. Поэтому после этого я удалил одну коробку, которая не подходила.
$("#container_boxes .box:last-child").remove();