Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   задать высоту div в процентах (https://javascript.ru/forum/events/26361-zadat-vysotu-div-v-procentakh.html)

lesh1j 06.03.2012 02:09

задать высоту div в процентах
 
Здравствуйте. Есть функция, которая плавно раворачивает div.
function Show(objId, hBlock) 
{
   var obj = document.getElementById(objId);
   if (obj.offsetHeight < hBlock)
   {
      obj.style.height = (obj.offsetHeight + 5) + "px";
      setTimeout (function(){Show(objId, hBlock)}, 1);
   }
}

Всё отлично работает, но после того, как функция закончила работу высоту этого дива нужно сделать 100%. Нужно это потому, что высота разворачиваемого дива будет потом изменяться в зависимости от контента(в нем тоже будут раворачивающиеся блоки).
Пробовал делать так:
function Show(objId, hBlock) 
{
   var obj = document.getElementById(objId);
   if (obj.offsetHeight < hBlock)
   {
      obj.style.height = (obj.offsetHeight + 5) + "px";
      setTimeout (function(){Show(objId, hBlock)}, 1);
   }
   	  if(obj.offsetHeight == hBlock)
	  	{
			obj.style.height = 100 + "%";
		}
}

но почему-то высота становится 188px(если hBlock задаю 185)
хотя если вместо
obj.style.height = 100 + "%";

вствить, например
obj.style.height = 250 + "px";

то всё работает, проблема именно с процентами
Может подкаже кто-нибудь. Заранее спасибо.

K313 06.03.2012 11:25

Попробуйте менять не height а min-height без применения %

nerv_ 06.03.2012 11:44

как понял
function Show( objId, hBlock )  {
	var obj = document.getElementById( objId );
	if ( obj.offsetHeight < hBlock ) {
		obj.style.height = ( obj.offsetHeight + 5 ) + "px";
		setTimeout ( function(){ Show( objId, hBlock ) }, 10 );
	} else {
		obj.style.height = "auto";
	}
}

alexandr_v-vich 06.03.2012 16:59

А почему нельзя просто ставить
obj.style.height = "100%";

Там же всё равно уже переменных нет. Или это не сыграет роли?
Вообще то в этом случае да, или auto или min-height. Но если бы понадобилось именно 100%, вариант так сделать?

рони 06.03.2012 18:17

lesh1j,
На всякий случай При использовании процентной записи высота элемента вычисляется в зависимости от высоты родительского элемента. Если родитель явно не указан, то в его качестве выступает окно браузера. auto устанавливает высоту исходя из содержимого элемента


Часовой пояс GMT +3, время: 08:22.