Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: DIV как 3 колонки

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Условие сравнения.
DeepVarvar Супермодератор
Отправлено: 04 Июля, 2011 - 15:36:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Итак, есть неопределенное кол-во div со свойством float: left;
Каждый раз кол-во этих блоков разное.
Родительский блок вмещает ТРИ таких блока в ширину.
Необходимо расчитать кто из этой "троицы" самый высокий и задать максимальную мЕньшим высотам.
CODE (javascript):
скопировать код в буфер обмена
  1. for (var i = 1; i < $(".evs").length; i += 3) {
  2.   c = $(".evs").eq(i);
  3.   p = $(".evs").eq(i-1);
  4.   n = $(".evs").eq(i+1);
  5.   /* Какие условия должны быть тут??? */
  6.   }

???????..........
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 15:52:46
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




может так?
CODE (javascript):
скопировать код в буфер обмена
  1. for (var i = 1; i < $(".evs").length; i += 3) {
  2.         var height = $(".evs").eq(i).outerHeight(true);
  3.         if ($(".evs").eq(i-1).outerHeight(true) > height) height = $(".evs").eq(i-1).outerHeight(true);
  4.         if ($(".evs").eq(i+1).outerHeight(true) > height) height = $(".evs").eq(i+1).outerHeight(true);
  5.         $(".evs").eq(i).height(height);
  6.         $(".evs").eq(i-1).height(height);
  7.         $(".evs").eq(i+1).height(height);
  8. }

(Отредактировано автором: 04 Июля, 2011 - 15:54:02)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июля, 2011 - 16:04:15
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Вот так сделал:
CODE (javascript):
скопировать код в буфер обмена
  1. var ch = c.height();
  2. var ph = p.height();
  3. var nh = n.height();
  4. if (ph > ch) mh = ph;
  5. else if (nh > ch) mh = nh;
  6. else mh = ch;

(Добавление)
Саныч точно Закатив глазки
(Добавление)
Вот полностью:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(function(){
  3.         var i,c,p,n,ch,ph,nh,mh;
  4.         for (i = 1; i < $(".evs").length+1; i += 3) {
  5.                 c = $(".evs").eq(i);
  6.                 p = $(".evs").eq(i-1);
  7.                 n = $(".evs").eq(i+1);
  8.                 ch = c.height();
  9.                 ph = p.height();
  10.                 nh = n.height();
  11.                 if (ph > ch) mh = ph;
  12.                 else if (nh > ch) mh = nh;
  13.                 else mh = ch;
  14.                 $(".evs").eq(i-1).height(mh);
  15.                 $(".evs").eq(i).height(mh);
  16.                 $(".evs").eq(i+1).height(mh);
  17.                 }
  18.         });
  19.  
 
 Top
Саныч
Отправлено: 04 Июля, 2011 - 16:16:00
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




я б еще сократил до вот такого состояния
CODE (javascript):
скопировать код в буфер обмена
  1. $(function(){
  2.    for (i = 1; i < $(".evs").length+1; i += 3) {
  3.       var h = $(".evs").eq(i).height();
  4.       if ($(".evs").eq(i-1).height() > h) h = $(".evs").eq(i-1).height();
  5.       if ($(".evs").eq(i+1).height() > h) h = $(".evs").eq(i+1).height();
  6.       $(".evs").eq(i-1).height(h);
  7.       $(".evs").eq(i).height(h);
  8.       $(".evs").eq(i+1).height(h);
  9.    }
  10. });

(Отредактировано автором: 04 Июля, 2011 - 16:16:38)



-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
DeepVarvar Супермодератор
Отправлено: 04 Июля, 2011 - 16:55:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




В нагрузку еще и для двух ячеек скину (вдруг кому надо будет):
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(function(){
  3.         var c,p;
  4.         $(".fevs").each(function(i){
  5.                 if (i > 0 && (i%2) != 0) {
  6.                         c = $(this);
  7.                         p = $(this).prev();
  8.                         if (c.height() > p.height()){p.height(c.height());}
  9.                         else {c.height(p.height());}
  10.                         }
  11.                 });
  12.         });
  13.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Июля, 2011 - 09:49:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Упс...
Задача усложнилась тем, что верстку "обрезинили".
Теперь блоков в ряду может быть сколько угодно: на вскидку от 1 до 4 (учитывая разрешения экрана от 800 до 1920 в ширину).

Мысли пока в прострации. Ну допустим я вычислю сколько их в ряду.
А как же динамически "родить" "сравнивалку" для полученного количества?
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Июля, 2011 - 12:35:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Актуально...
 
 Top
DeepVarvar Супермодератор
Отправлено: 15 Июля, 2011 - 16:20:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




CODE (javascript):
скопировать код в буфер обмена
  1. function getNumSize(e,p) {
  2.         var ew = e.eq(0).width(); // ребенок
  3.         var pw = p.width(); // родитель
  4.         return (pw / ew | 0); // кол-во блоков в ряду
  5.         }

Как теперь вычислить максимум из N блоков???
(Добавление)
Сделал:
CODE (javascript):
скопировать код в буфер обмена
  1. function autoEquallyFloatHeight(e,p) {
  2.         var ew = e.eq(0).width();
  3.         var pw = p.width();
  4.         var dcnt = (pw/ew|0);
  5.         var imax;
  6.         var clines = (e.length/dcnt|0)+1;
  7.         for (var line=0; line<clines; line++) {
  8.                 imax = 0;
  9.                 for (var d=(dcnt*line); d<(dcnt*line)+dcnt; d++) {
  10.                         if (imax < e.eq(d).height()) {
  11.                                 imax = e.eq(d).height();
  12.                                 }
  13.                         }
  14.                 for (var n = (dcnt*line); n<(dcnt*line)+dcnt; n++) {
  15.                         e.eq(n).height(imax);
  16.                         }
  17.                 }
  18.         }

Вызывать так:
CODE (javascript):
скопировать код в буфер обмена
  1. window.onload = function() {
  2.         autoEquallyFloatHeight($(".floatblocks"),$("#parentdiv"));
  3.         }
  4. window.onresize = function() {
  5.         autoEquallyFloatHeight($(".floatblocks"),$("#parentdiv"));
  6.         }

(Добавление)
Поправочка:
CODE (javascript):
скопировать код в буфер обмена
  1. function autoEquallyFloatHeight(e,p) {
  2.         var ew = e.eq(0).width();
  3.         var pw = p.width();
  4.         var dcnt = (pw/ew|0);
  5.         var imax;
  6.         var clines = (e.length/dcnt|0)+1;
  7.         e.css("height","100%");
  8.         for (var line=0; line<clines; line++) {
  9.                 imax = 0;
  10.                 for (var d=(dcnt*line); d<(dcnt*line)+dcnt; d++) {
  11.                         if (imax < e.eq(d).height()) {
  12.                                 imax = e.eq(d).height();
  13.                                 }
  14.                         }
  15.                 for (var n = (dcnt*line); n<(dcnt*line)+dcnt; n++) {
  16.                         e.eq(n).height(imax);
  17.                         }
  18.                 }
  19.         }
 
 Top
biperch
Отправлено: 18 Сентября, 2011 - 19:18:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




взял выше приведенный пример и трошки усовершенствовал, теперь он не только высоту блоков в ряду одинаковой делает, так теперь и равномерные расстояния между блоками, что бы они ровненько смотрелись.

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  
  3. function autoEquallyFloatHeight(e,p) {
  4.             var ew = e.eq(0).width();
  5.             var pw = p.width();
  6.             var dcnt = (pw/ew|0); // количество товаров в ряду
  7.             var imax;  /* макс высота элементов в ряду*/
  8.             var margin = ((pw-ew*dcnt)/(dcnt+1)|0);  //отступ у элемента с каждой стороны
  9.             var clines = (e.length/dcnt|0)+1; // количество рядов блоков
  10.             e.css("height","100%");
  11.             for (var line=0; line<clines; line++) {
  12.                     imax = 0;
  13.                     for (var d=(dcnt*line); d<(dcnt*line)+dcnt; d++) {
  14.                             if (imax < e.eq(d).height()) {
  15.                                     imax = e.eq(d).height();
  16.                                     }
  17.                             }
  18.                                                        
  19.                                                        
  20.                                                        
  21.                     for (var n = (dcnt*line); n<(dcnt*line)+dcnt; n++) {
  22.                             e.eq(n).height(imax);
  23.                             e.eq(n).css('margin-left', margin+'px');
  24.                                                        
  25.                             }
  26.                     }
  27.             }
  28.                         window.onload = function() {
  29.         autoEquallyFloatHeight($(".browseProductContainer"), $('#product_list'));
  30.         }
  31.                 window.onresize = function() {
  32.         autoEquallyFloatHeight($(".browseProductContainer"), $('#product_list'));
  33.         }
  34.  
  35.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 18 Сентября, 2011 - 19:52:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




biperch why not? It's be cool! Закатив глазки
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB