使用Velocity.js时隐藏元素后动画无法触发怎么办?
大家好,我在用Velocity.js给隐藏的DOM元素做动画时遇到了问题。我先用display:none隐藏了元素,然后调用.animate()方法,结果动画完全没反应…
我试过把display改成opacity:0,但动画还是会延迟半秒才开始。代码大概是这样的:
$("#box").css("display", "none").velocity({
translateX: "200px",
opacity: 1
}, {
duration: 500,
display: "block" // 这个参数也没起作用?
});
如果先显示元素再触发动画倒是正常,但这样用户体验太差了。查文档也没发现相关说明,求大神指条明路!
display:none确实会让 Velocity.js 的动画失效,因为渲染引擎根本不会计算不可见元素的属性。改一下就行,用visibility:hidden或者直接用透明度和绝对定位来模拟隐藏:这样既不会影响布局,动画也能正常触发。如果你非要使用
display:none,就得先通过.css("display", "block")手动显示一下,再立即开始动画,但这种方式体验确实没那么丝滑。实在不行还可以把元素先移出可视区域,动画时再拉回来,看你具体需求了。