Коллеги, помогите придумать, как реализовать следующее. Есть область (контейнер) на странице, в которой размещаются N блоков фиксированной ширины и высоты. Если делать их float: left, то они, ясен пень, строятся "табличкой" под левый край в количестве "сколько влезет на строку". А как их равномерно распределить по "резиновому" контейнеру?
Думаю решение возможно на js, то есть узнать ширину браузера, разделить на ширину блока и выставить отступы.
Помогите это реализовать!
Как равномерно распределить блоки по "резиновому" контейнеру?
(Ответов: 17, Просмотров: 5994)
- 01.01.2012 21:59
- 02.01.2012 14:50
блокам ведь можно ширину давать и не фиксированную, дать ширину 20% влезет 5 блоков, а с яваскриптом могу подсказать только на jQuery
- 02.01.2012 15:13
Плюс можно указать максимальную и минимальную ширину и для контейнера и для блоков.
- 02.01.2012 16:00
в том то и проблема что нужно чтобы блоки были фиксированными
---------- Сообщение добавлено 15:00 ---------- Предыдущее 14:53 ----------
Код HTML:В этом примере свободное пространство распределяется в сами блоки и они растягиваются Какбы переделать чтобы свободное пространство распределялось между блоками<html> <head> <script type="text/javascript" src="jquery-1.3.2.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function($) { function r() { var w = $('#all').width(); var kol = Math.floor(w/200); var m = Math.floor((w - kol * 200) / kol); $('div.allblock').each(function(index, domEle) { $(domEle).width( 200 + m); } ); } r(); $(window).resize(function() { r(); } ); })(jQuery); </script> </head> <body> <div style="width: 100%;" id="all"> <div class="allblock" style="float: left; background: silver; width: 200px; height: 300px; position: relative; margin: 0;"><div style="border: 1px solid black">блок</div></div> <div class="allblock" style="float: left; background: silver; width: 200px; height: 300px; position: relative; margin: 0;"><div style="border: 1px solid black">блок</div></div> <div class="allblock" style="float: left; background: silver; width: 200px; height: 300px; position: relative; margin: 0;"><div style="border: 1px solid black">блок</div></div> <div class="allblock" style="float: left; background: silver; width: 200px; height: 300px; position: relative; margin: 0;"><div style="border: 1px solid black">блок</div></div> <div class="allblock" style="float: left; background: silver; width: 200px; height: 300px; position: relative; margin: 0;"><div style="border: 1px solid black">блок</div></div> <div class="allblock" style="float: left; background: silver; width: 200px; height: 300px; position: relative; margin: 0;"><div style="border: 1px solid black">блок</div></div> </div> </body> </html>
- 02.01.2012 19:34
если я правильно понял
1. блокам задать margin: auto; может будит то что надо
или
2. вместо $(domEle).width( 200 + m); - $(domEle).css("margin-right", m+"px");Спасибо сказали:
Fktrctq(02.01.2012), - 02.01.2012 20:27
- 04.01.2012 03:27Код:
$(domEle).width( 200 + m); // тут мы прибавляем к ширине размером 200 определенное число, в итоге тянется блок $(domEle).css("margin-right", m+"px"); // тут мы устанавливаем правый отступ в размере определенного вычисленного числа, таким образом увеличивается отступ справа а не сам блок
Спасибо сказали:
Fktrctq(05.01.2012), - 04.01.2012 10:19
Ещё раз спасибо за вашу помощь! Можно ещё пару вопросиков!?
Сейчас получается что свободное пространство делится на количество колонок в строке и присваевается к каждому блоку с права А можно сделать таким образом чтобы свободное пространство распределялось с права кроме последнего блока в строке ?
Или (Пример допустим в строке умещается 5 блоков по вашей формуле вычесляется 5 отступов и они распределяются с права) сумировать отступы разделить на количество ( сумированных отступов + ещё 1) и распределить свободное пространство справа у каждого блока и у первого блока с лева?
Или такой вариант "предпочтительней"
свободное пространство разделить на (количество блоков в строке умноженное на 2) и распределить отступы с права и слева у каждого блока
Спасибо! - 04.01.2012 18:01
Спасибо сказали:
Fktrctq(05.01.2012), - 05.01.2012 09:01
knuckr,Большое спасибо за помощь! Всё получилось!
подскажите пожалуйста как сделать чтобы между блоками минимальное растояние было 10рх?
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
"Сателлиты" \ "СДЛ" \ "Под Ключ" \ "Цена = Качество" | Создание сайтов | 22 | 22.01.2013 02:36 |
Как сделать валидный такой код span hashString="" hashType="" в XHTML | Web программирование | 2 | 20.11.2011 18:21 |
Вопрос для Украинцев: Можно ли вывести WMU на "кредитку" от "ПриватБанк'а" ? | Прочее | 23 | 18.11.2011 18:10 |
У "Однокласников" появились "кошельки" для оплаты услуг | Прочее | 1 | 12.10.2010 09:49 |