Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 30.04.2010, 12:50
Аспирант
Отправить личное сообщение для vahrusha Посмотреть профиль Найти все сообщения от vahrusha
 
Регистрация: 19.01.2010
Сообщений: 42

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

Последний раз редактировалось vahrusha, 30.04.2010 в 13:13.
Ответить с цитированием
  #2 (permalink)  
Старый 30.04.2010, 13:00
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

если у родительского блока не задана жёстко высота, то поставьте ему overflow-y: hidden;
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 30.04.2010, 13:18
Аспирант
Отправить личное сообщение для vahrusha Посмотреть профиль Найти все сообщения от vahrusha
 
Регистрация: 19.01.2010
Сообщений: 42

Ну как сказать, в CSS - жестко не задана, но при загрузке страницы, она через elem.style.height задается (дабы равняться высоте соседнего контейнера). Только вот не знаю, считается это жестко или нет.
Спасибо за помощь, в любом случае пошел тестить.
Ответить с цитированием
  #4 (permalink)  
Старый 30.04.2010, 13:19
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от vahrusha
она через elem.style.height задается (дабы равняться высоте соседнего контейнера)
Так если вы сами задаёте высоту, она такой и будет, независимо от того, что внутри элемента.
Ответить с цитированием
  #5 (permalink)  
Старый 30.04.2010, 13:20
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Это достаточно жёстко Вот если вы и задаёте высоту вручную через style.height - от туда и получайте её, уверяю, она будет такой же - какую вы поставили
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #6 (permalink)  
Старый 30.04.2010, 13:24
Аспирант
Отправить личное сообщение для vahrusha Посмотреть профиль Найти все сообщения от vahrusha
 
Регистрация: 19.01.2010
Сообщений: 42

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

Последний раз редактировалось vahrusha, 30.04.2010 в 13:28.
Ответить с цитированием
  #7 (permalink)  
Старый 30.04.2010, 13:28
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от vahrusha
соответственно для ie6 придется отдельный кусок лепить...
Для IE6 height == minHeight
Ответить с цитированием
  #8 (permalink)  
Старый 30.04.2010, 15:31
Аспирант
Отправить личное сообщение для vahrusha Посмотреть профиль Найти все сообщения от vahrusha
 
Регистрация: 19.01.2010
Сообщений: 42

А не подскажете лучший способ идентифицировать 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 просто снова объявить функцию с таким же именем?
Спасибо.

Последний раз редактировалось vahrusha, 30.04.2010 в 15:36.
Ответить с цитированием
  #9 (permalink)  
Старый 30.04.2010, 15:47
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

var isIE6 = navigator.userAgent.search(/MSIE 6/)+1;
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #10 (permalink)  
Старый 30.04.2010, 15:52
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://www.google.com/search?q=short...ient=firefo x
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск