【发布时间】:2012-04-20 00:05:57
【问题描述】:
我制作了一个脚本,将内容动态加载到 div 中,每当内容使 div 的高度变大或变小时,它都会将高度设置为实际高度。
问题在于它不仅向上/向下滑动,而且总是向上滑动一点,然后向下滑动到所需的高度。
我想让它直接在所需的高度滑动而不会“弹跳”。
这是脚本的一部分: main_content.html(html);
main_content.css("height", "auto");
var newContentHeight = main_content.height();
loader_div.hide();
main_content.height(prevContentHeight);
main_content.fadeIn("fast", function() {
main_content.animate({
"height": newContentHeight
}, 300);
});
脚本有效,唯一的问题是动画不会将 div 向上或向下滑动到所需的高度,它总是向上滑动一点然后向下滑动到所需的高度。
使用动画高度时是某种想要的动画还是有什么问题? 谢谢
编辑:控制台记录 newContentHeight(div 的最终高度)它看起来像收集了 2 个高度,然后动画首先到达其中一个高度,然后到达另一个高度,这就是它看起来像弹跳的原因。正在努力。
edit2:是的,问题确实存在,我清理了所有代码,一切正常,除了我使用 console.log 从 newContentHeight 获得 2 个属性,看起来隐藏的内容 div 有 2 个高度,而这 2 个高度是传递给 .animate 这就是为什么它先上升然后下降的原因...... 有点奇怪
【问题讨论】:
-
你可以为此创建 jsfiddle 吗?
-
@Mateusz W 我昨天做了一个 jsfiddle 但忘记保存它,无法复制整个站点并且复制脚本工作得很好,但它不会有帮助。对它进行了一些工作,问题是我尝试在隐藏时获取 div 的高度,但它没有得到它,如果我在上面的代码中添加
main_content.css({display: "block"});然后得到 div 的高度,它得到正确的高度。但我需要隐藏它。使用 hack 也不起作用(以 -9999px 边距显示它,获取高度并再次隐藏它)。
标签: jquery css height jquery-animate slide