Высота невидимых объектов, когда они становятся видимыми, в JavaScript - PullRequest
2 голосов
/ 12 июня 2009

У меня есть таблица, которая представляет Tab-структуру.
Некоторые ячейки настроены на отображение: нет; и отображается только активная вкладка. Я хочу установить максимальную высоту для всех из них. Для этого я прохожу массив вкладок и делаю следующее

// get the max-tab-height
for (var i = 0; i < TabPageList.length; i++)
{
    // get max height
    if (TabPageList[i].offsetHeight>MaxTabHeight)
        MaxTabHeight = TabPageList[i].offsetHeight;        
}

Проблема этого подхода в том, что offsetHeight работает только для активной отображаемой вкладки. Итак, какова высота тех, кто не показан, когда они будут показаны?

Ответы [ 4 ]

2 голосов
/ 12 июня 2009

Попробуйте использовать видимость: скрыто (не отображается: нет). Насколько я помню, элементы видимости просто скрыты, но сохраняют свои размеры.

2 голосов
/ 12 июня 2009

Для удобства использования вкладки не должны быть скрытыми с помощью CSS. (Есть все еще маленький процент там, у которого отключен js). Если вы бегаете по вкладкам, читаете их высоту, скрываете их, вы можете легко найти самую высокую вкладку. И в то же время сделать ваш сайт более удобным для пользователя (:

И если вы не хотите, чтобы скрытые ячейки разрушались, вы также можете использовать visibility:hidden;, как указано выше.

2 голосов
/ 12 июня 2009

Поскольку для неактивных вкладок задано значение display:none, offsetHeight бесполезен. Попробуйте запустить процедуру MaxTabHeight одновременно с активацией вкладки, после того как она станет видимой. Я предполагаю, что это внутри события нажатия вкладки.

1 голос
/ 12 июня 2009

Как уже говорили другие, вы можете получить высоту, установив видимость скрытой (что позволяет объекту сохранять свои размеры, пока он скрыт):

visibility:hidden;

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

Второй подход может состоять в том, чтобы сохранить вкладку видимой, но убрать ее со страницы, установив в ее абсолютном положении несколько достаточно больших координат.

...