jQuery对属性更改进行动画处理
jQuery animate on property change
我有div
或其他一些元素,我用将内容加载到这些元素中
$('#my_div').load('ajax.php',function(){
//Do random stuff.
}
然而,div
的高度随后会发生变化,导致页面上下跳跃,看起来很难看。
当加载或更改新内容时,有没有办法设置高度动画?我知道用C#中的FluidMoveBehavior
可以做到这一点。
如何使用Javascript/jQuery实现相同的效果?
这里有一些Fiddle
当您想用jQuery创建高度或宽度动画时,您必须设置一个数字来指示所需的大小。我假设你在这种情况下使用height:auto,所以你必须找到一个小的解决方案。
-
获取高度:
var autoHeight = $("#content").height("auto").height();
-
autoHeight
:动画$("#content").animate({height: autoHeight}, 1000);
一起:
var currentHeight = $("#content").height();
var autoHeight = $("#content").height("auto").height();
$("#content").height(currentHeight);
$("#content").animate({height: autoHeight}, 1000);
从这里偷走
我所做的恰恰相反。如果在调用加载之前还没有,我会设置页面滚动到顶部的动画。
因此,任何新的动态内容的顶部始终可见。
我知道这不是你想要的答案,但我发现它效果最好。
您可以在load()
之前隐藏#my_div
,然后在完整的函数中隐藏slideDown()
:
$('#my_div').hide().load('ajax.php', function() {
$(this).slideDown();
});
或者,创建一个临时元素,隐藏它,附加它,在加载完成后使用它的高度为#my_div
设置动画,然后将其移除。
$('<span/>').hide().appendTo('body').load('ajax.php', function(text) {
$('#my_div').animate({ height: $(this).height() }, '800').html(text);
$(this).remove();
});
相关文章:
- 使用不同的超时对数组中的每个项目进行角度动画处理
- 图表.js 2,从右到左(不是自上而下)进行动画处理
- 使用 JavaScript 对 HTML5 进度条进行动画处理
- 使用 JQuery 对 Spin SVG 元素进行动画处理
- 使用 GSAP 对模糊滤镜进行动画处理
- 使用 jQuery 对窗口进行动画处理
- 如何使用jQuery对固定元素的位置进行动画处理
- jQuery 动画处理最大宽度溢出问题
- 悬停不起作用时对不透明度更改进行动画处理
- 在两个值之间插值或“补间”(但不进行动画处理)
- 尝试在画布中对形状进行动画处理时,它会显示,但不移动
- 如何在不分隔跨度字母的情况下对文本进行动画处理
- 对链接的 svg 进行动画处理不起作用;内联时工作正常
- 防止对某些事件进行进一步的动画处理
- Snap.svg:在动画中使用相同的种类对多个零件进行动画处理
- 如何使用if语句jquery对数字进行动画处理
- 按随机顺序对元素进行动画处理
- 元素在使用 jQuery 对相对包装宽度进行动画处理时消失
- brush.event 在对画笔事件进行动画处理时会做什么
- 使用ScrollMagic按顺序对多个场景进行动画处理