Как мне узнать высоту div, прежде чем сделать его видимым?

#jquery #html #css #dynamic #jquery-animate

#jquery #HTML #css #динамический #jquery-анимировать

Вопрос:

У меня есть видимый / скрытый скрытый div с возможностью открытия / закрытия слайдов.

Этот эффект достигается за счет animate() изменения высоты div.

Проблема в том, что div разделяется несколькими содержимым (разными текстовыми абзацами), высота которых заранее неизвестна.

Итак, как мне узнать, какой будет высота div, когда я добавлю такой контент, чтобы я мог анимировать (‘height’:’-px’), чтобы открыть div с помощью слайда?

Ответ №1:

Просто используйте slideDown() , и вам не нужно будет вычислять высоту.

Единственный другой способ, который вы могли бы сделать (но я не знаю ваших точных обстоятельств) clone() , — это добавить элемент и добавить его в документ, установить для него height значение auto , а затем получить height() его.

 var cloned = $('#some-element').clone();

cloned.css({ position: 'absolute', left: '-9999px', height: 'auto' });

var height = cloned.height();

cloned.remove();
 

Ответ №2:

Один трюк, который работал у меня раньше, — это установить непрозрачность элемента на что-то действительно низкое, например 0.01 . Это выполняет a show для элемента, но если ваша непрозрачность достаточно низкая, она будет едва заметна на странице.

Комментарии:

1. У этого есть проблемы, например, это заполнит пространство, необходимое для отображения элемента. Вы также можете использовать visibility: hidden .