offsetHeight родителя со скрытыми потомками
Здравствуйте, уважаемые.
Есть контейнер, в нем есть скрытые элементы (display:none). Я пришел к выводу, что если динамически сделать эти элементы видимыми (display:block) и, в итоге, влияющими на высоту родительского контейнера, offsetHeight все равно будет возвращать высоту этого контейнера исходя из того, что потомки - все еще скрыты. Проверял через alert - до отображения скрытых потомков и после, offsetHeight родителя возвращал одну и туже величину. Прошу совета, как можно получить высоту родительского контейнера именно с учетом динамически изменившими свою видимость (display:none=>display:block) дочерними контейнерами? Спасибо. ЗЫ: Кстати, авторам проекта на заметку. В Хроме окна форума растягиваются больше ширины экрана, примерно пикселей 80 не влезает (у меня горизонтальное разрешение 1280px). Скрин: http://i.piccy.info/i5/91/86/58691/sample.jpg |
если у родительского блока не задана жёстко высота, то поставьте ему overflow-y: hidden;
|
Ну как сказать, в CSS - жестко не задана, но при загрузке страницы, она через elem.style.height задается (дабы равняться высоте соседнего контейнера). Только вот не знаю, считается это жестко или нет.
Спасибо за помощь, в любом случае пошел тестить. |
Цитата:
|
Это достаточно жёстко ;) Вот если вы и задаёте высоту вручную через style.height - от туда и получайте её, уверяю, она будет такой же - какую вы поставили :)
|
Ага, точно, сам же и задаю. :)
Я так понимаю, в моем случае нужно через elem.style.minHeight работать, соответственно для ie6 придется отдельный кусок лепить... На сколько я знаю, ему можно elem.style.height оставить? Он вроде height обрабатывает как min-height... Спасибо. |
Цитата:
|
А не подскажете лучший способ идентифицировать 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 просто снова объявить функцию с таким же именем? Спасибо. |
var isIE6 = navigator.userAgent.search(/MSIE 6/)+1; |
|
Часовой пояс GMT +3, время: 19:26. |