jQuery:幻灯片动画走得很远,然后“跳”到正确的高度
jQuery: Slide animation goes to far, then "jumps" to the right height
我已经看到了一些关于类似问题的问题,但我还没有找到对我来说有意义的解决方案。问题出在JSFiddle上:http://jsfiddle.net/twchapman/EEXjR/2/
单击投资组合以查看行为。
我写的函数:
function changeTab(tab) {
active = tab;
$("#" + tab).slideDown(animspeed);
}
function change(tab) {
if (tab == active) return;
$("#" + active).slideUp(animspeed, function () {
changeTab(tab);
});
}
我只使用 Chrome,但我很确定您会在任何浏览器上收到此错误:当页面加载时,它会向下滑动内容div,单击链接(目前只有 Portfolio 实际有效)将向上滑动当前div,然后向下滑动正确的div。
它几乎完全按预期工作,但有一个小问题:当动画开始时,div 的高度"跳跃",并且在动画发生时它会暂时变高,然后在完成后"跳跃"到正确的大小。
我发现的两个常见解决方案建议:1.为已经存在的div样式添加宽度,以及2.在调用滑动函数时更改其高度/边距参数。对我来说,第二种解决方案似乎没有必要,因为我除了动画长度之外没有提供任何选项。
我希望这只是我错过了一些东西,很愚蠢,而不是我做事方式的大问题。
问题来自填充,有时会使jQuery动画抖动。解决您的问题的一个快速解决方案是保持 Js 不变,并为布局使用自然框模型。
在你的css中,只需包括:
* { -webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box; }
我真的建议阅读这篇保罗爱尔兰博客文章,并将此代码包含在您的所有项目中。
这是一个工作演示:http://jsfiddle.net/gleezer/EEXjR/3/
更新你的 js。
function change(tab) {
if(tab == active) return false;
console.log(tab);
console.log(active);
if($("#" + active).length){ //check element is exists.
$("#" + active).slideUp(animspeed, function() {changeTab(tab)})
}else{
changeTab(tab);
}
}
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- ExtJS——在展开/折叠时调整面板高度
- Javascript运行php文件,然后下载文件
- 分析高度属性时出现意外值{{specs.height}}.index.html
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 弹出窗口出现,然后退出
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 单击页面上的链接后高度发生变化
- 将值输入到对象,然后该对象推送到数组
- 如何临时暂停浏览器渲染,然后恢复整个页面
- Javascript 按类选择元素,更改它们的最大高度,然后更改单击的元素最大高度
- 如果我在 x 中旋转圆柱体,则 y 然后在不同的 theta 中旋转 z.最终圆柱体的 y 轴高度是多少
- 将弹出窗口的大小调整为最小高度和宽度,然后拖动到以下大小应该是不可能的
- 如何使一个元素假位置:固定,使其行为固定,直到某个滚动高度,然后附加
- 指定元素高度,然后将其移除
- 高度:自动计算错误,如果元素隐藏时dom加载,然后显示
- 在被隐藏后没有高度,然后点击显示
- 检查高度,然后添加或删除类
- jQuery:幻灯片动画走得很远,然后“跳”到正确的高度