Mootools: высота скрытых элементов

Доброе утро всем,

Я пытаюсь создать эффект Mootools, чтобы отображать и скрывать ответы на комментарий на доске обсуждений. Когда пользователь щелкает ссылку «ответы» в комментарии, я хочу увеличить высоту контейнера комментариев, а затем постепенно увеличивать содержание ответов. Если содержимое ответов уже отображается, нажатие на ссылку приведет к обратному эффекту.

У меня вроде работает, но у меня проблемы с получением правильной высоты скрытых элементов (отвечает H в моем JS). Я пробовал getDimensions (), measure () и getComputedSize (), но все они дают один и тот же результат: когда элементы настроены на отображение: none, я получаю слишком маленькую высоту; когда я установил их для отображения: высота блока правильная. Может ли любой добрый человек заметить, где я ошибаюсь?

http://jsfiddle.net/andfinally/tVBCa/

Ура Фред

=======================

НЕМНОГО ПОЗЖЕ

Только что заметил - ширина контейнера .comments-list, похоже, как-то связана с этой проблемой. Когда я убираю эту ширину, эффект работает нормально. Вероятно, это означает, что getDimensions получает высоту элемента, когда он ни во что не вложен. Может ли кто-нибудь подсказать, как я могу определить, какой будет высота, когда он будет вложен?

Ура Фред


person And Finally    schedule 07.05.2011    source источник


Ответы (2)


вы можете использовать Fx.Reveal, это очень полезно, когда вы сталкиваетесь с подобными проблемами , и это ОЧЕНЬ упрощает ваш код, т.е. (я разветвил ваш пример) => http://jsfiddle.net/steweb/DH27F/

person stecb    schedule 07.05.2011
comment
Ого! Спасибо, stecb, это значительно упрощает работу. Для тех, кто интересуется проблемой размеров, похоже, что вам нужно установить ширину скрытого элемента, который вы измеряете, если вы собираетесь вложить его в что-то еще с шириной. - person And Finally; 07.05.2011

Простой способ обойти это:

replies.show();
var repliesH = replies.getDimensions().y;            
replies.hide();

Просто покажите, получите размеры и снова спрячьте. Это происходит так быстро, что пользователю ничего не видно.

Ваш обновленный Fiddle здесь.

person Erick Petrucelli    schedule 07.05.2011
comment
Большое спасибо, Эрик! Это еще один хороший способ решить проблему. - person And Finally; 07.05.2011