jquery摇动效果和margin-auto

时间:2011-02-23 11:17:33

标签: jquery jquery-ui shake

有点麻烦这个...... shake effect example

如果我省略了行

,在Firefox中

$this.css({'margin-left':$this.position().left});

然后框被动画到左边而不是中心。如果我保留这行代码来修复firefox,那么chrome就会遇到同样的问题。

任何关于绕过这个的提示都会很棒。

提前致谢

4 个答案:

答案 0 :(得分:2)

解决方案(不是一个快乐的,但它'可以'跨浏览器 - 我说跨浏览器,得到ie9而我的工作机器无法运行虚拟PC !!!!);

var options = {
              direction: 'left',
              distance: 10,
              times: 2
              };
var left = $this.position().left > parseInt($this.css('margin-left')) ? $this.position().left : $this.css('margin-left');
$this
    .css({'margin-left': left})
    .effect('shake' , options , 75 , function(){
        $this.removeAttr('style');
});

答案 1 :(得分:1)

最简单的解决方案可能是引入一个额外的内部div来撼动。例如,如果你要摇动的div(并且“margin 0 auto”)具有id“居中”,那么不要摇动这个div,而是添加一个内部div“摇动”并摇动该div。

<div id="centered">
    <div id="shake">
        <div>the content</div>
    </div>
</div>

http://jsfiddle.net/yAjHa/

答案 2 :(得分:0)

您可以在jQuery中使用$.browser检测Firefox或Chrome。

然后您可以决定是否应用该CSS。

答案 3 :(得分:0)

想想我得到了你的要求,是吗?

http://jsfiddle.net/mwVkm/3/

  

请在此处提供您正在回答的答案。 JS Fiddle是一个演示资源,而不是托管整个答案的地方。 - David Thomas 20分钟前

根据上述评论,我改变了:

jQuery的:

$this.css({'margin-left':$this.position().center});

CSS - 对包含<div>

进行了一些调整

#box{ width: 20px; height: 20px; margin:auto auto;}

希望有帮助吗?