2012-04-03 5 views
3

Я пытаюсь получить div, чтобы обернуть динамическое число дочерних элементов, и я хотел бы сделать это, не устанавливая значение для ширины родительского элемента.Обтекание родительского div вокруг плавающих элементов

У меня есть обертка содержимого, плавая как дочерний, так и родительский элементы, моя проблема в том, когда дочерние элементы переносятся на следующую строку, свободное пространство осталось справа, и я хотел бы, чтобы родительский обернуть «намертво».

Я создал демо здесь: http://jsfiddle.net/UMgct/4/

#parent показывает текущее поведение, я хотел бы, чтобы вести себя как # parent2 и # parent3, но без явного задания ширины. Я вижу, почему поведение для #parent верное, я просто не вижу никакого способа получить поведение, которое я бы хотел.

Любые идеи будут высоко оценили

+0

Ты говоришь, вы хотите красные ящики, чтобы остаться на той же линии, даже если они не вписываются в пространство монитора? – henryaaron

+0

Нет, я бы хотел, чтобы они переместились на следующую строку, я просто хотел бы удалить пробел справа от последнего дочернего элемента на каждой строке, т. Е. В примере я бы хотел, чтобы зеленый фон никогда не был больше чем 10px справа от последнего ребенка в первой строке – user7009

+0

Сколько будет отображаться в строке? Вы рассказываете, сколько или есть какой-либо способ для браузера определить, сколько из них нужно положить на одну строку? – JamesSwift

ответ

1

Во-первых, вы должны изменить «родитель» и «ребенок», чтобы быть классы вместо идентификаторов. Идентификаторы должны быть уникальными идентификаторами, а классы могут использоваться столько раз, сколько вы хотите.

С учетом сказанного, вы можете добиться того, что вы хотите с JQuery (предполагается, что идентификаторы теперь изменено на классы):

$(document).ready(function() { 
    var numPerLine = parseInt($(window).width()/$('.parent > .child').outerWidth(true)); 
    $('.parent').width($('.parent > .child').outerWidth(true) * numPerLine); 
}); 
+0

Спасибо, вы правы, я должен использовать классы, я просто бросил что вместе быстро, как пример, не задумываясь. Что касается вашего ответа, это прекрасно работает, мне просто интересно, есть ли способ сделать это без javascript – user7009

+0

Для shure, идентификаторы ДОЛЖНЫ быть уникальными, но класс CAN BE multiple. – smonff

Смежные вопросы