Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   offsetHeight родителя со скрытыми потомками (https://javascript.ru/forum/events/9130-offsetheight-roditelya-so-skrytymi-potomkami.html)

vahrusha 30.04.2010 12:50

offsetHeight родителя со скрытыми потомками
 
Здравствуйте, уважаемые.
Есть контейнер, в нем есть скрытые элементы (display:none).
Я пришел к выводу, что если динамически сделать эти элементы видимыми (display:block) и, в итоге, влияющими на высоту родительского контейнера, offsetHeight все равно будет возвращать высоту этого контейнера исходя из того, что потомки - все еще скрыты.
Проверял через alert - до отображения скрытых потомков и после, offsetHeight родителя возвращал одну и туже величину.
Прошу совета, как можно получить высоту родительского контейнера именно с учетом динамически изменившими свою видимость (display:none=>display:block) дочерними контейнерами?
Спасибо.
ЗЫ: Кстати, авторам проекта на заметку. В Хроме окна форума растягиваются больше ширины экрана, примерно пикселей 80 не влезает (у меня горизонтальное разрешение 1280px). Скрин: http://i.piccy.info/i5/91/86/58691/sample.jpg

Nekromancer 30.04.2010 13:00

если у родительского блока не задана жёстко высота, то поставьте ему overflow-y: hidden;

vahrusha 30.04.2010 13:18

Ну как сказать, в CSS - жестко не задана, но при загрузке страницы, она через elem.style.height задается (дабы равняться высоте соседнего контейнера). Только вот не знаю, считается это жестко или нет.
Спасибо за помощь, в любом случае пошел тестить.

Kolyaj 30.04.2010 13:19

Цитата:

Сообщение от vahrusha
она через elem.style.height задается (дабы равняться высоте соседнего контейнера)

Так если вы сами задаёте высоту, она такой и будет, независимо от того, что внутри элемента.

Nekromancer 30.04.2010 13:20

Это достаточно жёстко ;) Вот если вы и задаёте высоту вручную через style.height - от туда и получайте её, уверяю, она будет такой же - какую вы поставили :)

vahrusha 30.04.2010 13:24

Ага, точно, сам же и задаю. :)
Я так понимаю, в моем случае нужно через elem.style.minHeight работать, соответственно для ie6 придется отдельный кусок лепить... На сколько я знаю, ему можно elem.style.height оставить? Он вроде height обрабатывает как min-height...
Спасибо.

Kolyaj 30.04.2010 13:28

Цитата:

Сообщение от vahrusha
соответственно для ie6 придется отдельный кусок лепить...

Для IE6 height == minHeight

vahrusha 30.04.2010 15:31

А не подскажете лучший способ идентифицировать ie6?
Что Вы скажете по поводу такого:
function detectIE6(){
	var browser = navigator.appName;
	if (browser == 'Microsoft Internet Explorer') {
		var b_version = navigator.appVersion;
		var re = /\MSIE\s+(\d\.\d\b)/;
		var res = b_version.match(re);
		if (res[1] <= 6) {
			return true;
		}
	}
	return false;
}

Или лучше сделать так:
<script type="text/javascript" src="scr.js"></script>
<!--[if lte IE 6]><script type="text/javascript" src="ie6.js"></script><![endif]-->

А потом в файле ie6.js просто снова объявить функцию с таким же именем?
Спасибо.

Nekromancer 30.04.2010 15:47

var isIE6 = navigator.userAgent.search(/MSIE 6/)+1;

Kolyaj 30.04.2010 15:52

http://www.google.com/search?q=short...ient=firefo x


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