javascript - WebKit jQuery 动画错误

标签 javascript jquery css google-chrome webkit

我有两个网站,我正在使用 jQuery 通过 CSS 属性为某些对象设置动画。在 Firefox 中一切都运行良好,但存在一些 webkit 错误,我的对象在动画开始前消失并重新出现在屏幕外。

http://coreytegeler.com/gl/ (点击文本框)

$('#front-nav-wrapper').css({'position' : 'fixed','top': '55px', 'opacity' : '1' }); 

http://coreytegeler.com/justin/ (单击任何框)

$("#nav ul li").click(function() {
    $("#nav ul li#a").animate({'margin-top' : '-300px' , 'margin-left' : '0px', 'left' : '10px'}, 500, 'swing');
    $("#nav ul li#b").animate({'margin-top' : '-200px' , 'margin-left' : '0px', 'left' : '10px'} , 500, 'swing');
    $("#nav ul li#c").animate({'margin-top' : '-100px' , 'margin-left' : '0px', 'left' : '10px'} , 500, 'swing');
    $("#nav ul li#d").animate({'left' : '10px'} , 500, 'swing');
    $("#nav").animate({'margin-top' : '100px'} , 500, 'swing');
});

我确定这一定是一个已知错误,可以轻松修复,但我似乎还找不到修复方法:(

最佳答案

据我所知,问题似乎是 webkit 无法将 left 属性从最初的“自动”值设置为像素偏移量。它所做的是将属性设置为 0,然后从那里设置动画。

我可以建议的一个解决方案是在开始动画之前立即计算每个 li 元素的当前像素偏移量,并将它们的 left 属性设置为这些偏移量。

像这样:

$("#nav ul li").each(function(){
    $(this).css('left', $(this).position().left + 'px');
});

jsFiddle example

这基于您的第二个示例链接。

关于javascript - WebKit jQuery 动画错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17505227/

相关文章:

javascript - 如何重置 svg 缩放并适合屏幕以获取具有不同方向的随机但大型 map /数据集

javascript - 尝试使用 ember-cp-validations 验证表单时获取 'TypeError: user is null'

javascript - 当鼠标进入 div 时显示顶部菜单栏

javascript - 千分之一 (‰) 符号导致 div innerHTML 自动换行 (Javascript/HTML)

css - nginx 不提供 css/js 图像

javascript - 如果文本不适合在同一行不显示所有

javascript - 在 HTML 和 Javascript 中添加网格线到背景,类似于 VisualStudios 网格

jquery - 选中单选按钮时突出显示按钮

javascript - JQuery 根据其他选项更改下拉选项不起作用

javascript - 水平自动滚动到事件缩略图 li