Показать сообщение отдельно
  #17 (permalink)  
Старый 22.07.2011, 23:34
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от (Sandr)
Мне не нужно задавать на сколько должен раскрыться див, мне нужно, чтоб он просто раскрывался и всё. Как в jQuery.
для этого случая предусмотрено несколько вариантов:
1. если блок скрыт, но у него заданы некие значения в css (height+padding-top/bottom) или они заранее известны, то нужно брать их.

2. получить неизвестные значения, можно путем задания абсолютного позиционирования элементу и взятия у него свойста offsetHeight. Если элемент скрыт неполностью или есть какие-то еще причины по которым нельзя задать исходному элементу абсолютное значение, то в этом случае сперва делается клонирование объекта с помощью метода cloneNode().

<style type="text/css">
#wrap {display: none;}
#wrap div {height: 50px;}
</style>

<div id="wrap">
     <div></div>
     <div></div>
</div>

<script type="text/javascript">
var div = document.getElementById('wrap');
// временно меняем css-значения
div.style.cssText = 'display: block; position: fixed; visibility: hidden; overflow: hidden';

//получаем значение высоты
var height = div.offsetHeight;

//восстанавливаем значения
div.style.cssText = 'display: ; position: ; visibility: ; overflow: ';

alert([height, div.offsetHeight]);
</script>


PS: конкретно этот вариант, на кроссбраузерность не проверял.

Последний раз редактировалось monolithed, 23.07.2011 в 00:52.
Ответить с цитированием