Я пытаюсь реплицировать jQuery slideDown()
в GSAP, и у меня возникли проблемы с разработкой того, как jQuery вычисляет высоту элемента, который в настоящее время скрыт, как если бы он был установлен на height:auto
.Как jQuery Slidedown получает окончательную высоту скрытого элемента, прежде чем показывать его?
Я пробовал тралить код на GitHub, но не могу найти код, который, кажется, делает это в jQuery.fn.slideDown
или jQuery.fn.animate
, который он вызывает.
Есть несколько подобных вопросов на SO и несколько решений, предложенных, все из которых, кажется, имеют свои собственные проблемы:
Clone элемент, позиционируют его экран и рассчитать его высоту.
Это не сработает, если элемент или его дочерние элементы имеют высоту, заданную стилями CSS, которые требуют, чтобы элемент находился в исходном месте в DOM (например,.accordianItem
может быть только в стиле, если он находится внутри его.accordian
).Показать объект, удалить
height:0
и быстро рассчитать высоту, прежде чем снова спрятать элемент, а затем указать анимацию.
Это может быстро мигать контентом при расчете высоты.Используйте
visibility:true
, чтобы показать его на месте при расчете высоты.
Это остановило бы вспышку и по-прежнему удерживало элемент в том же положении в DOM для правильного расчета высоты, но все равно будет подталкивать другие предметы под ним, потому чтоvisibility:false
предметов по-прежнему имеют высоту.Рассчитайте высоту элемента перед его скрытием и сохраните его в атрибуте данных, чтобы мы знали его, когда хотим открыть элемент позже.
Это не будет работать, если какой-либо динамический контент изменяет высоту элемента, пока он скрыт.
jQuery slideDown()
«просто работает» каждый раз, так что я был бы очень интересно узнать, как это работает, но я просто не могу работать, где он это делает. Я также удивлен тем, что GSAP не может сделать это из коробки или что никто раньше не использовал правильное решение.
Любая помощь будет действительно оценена.
вызов .animate ({"height": "show"} - это не то же самое, что и .show(). Мне все еще нужно понять, как это работает, поэтому я могу его реплицировать. – jonhobbs
Возможно ли это для создания jsFiddle эффекта с использованием только слайд-шоу jQuery? У меня есть несколько идей, которые я хотел бы попробовать с помощью GSAP-ifying. –