jquery 摇动效果和 margin-auto

发布于 2024-10-19 02:43:11 字数 296 浏览 5 评论 0原文

有一点烦恼这个... Firefox 中的抖动效果示例

如果我省略该行

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

,则该框将向左动画的在中心。如果我保留这行代码来修复 Firefox,那么 chrome 也会出现同样的问题。

任何解决这个问题的建议都会很棒。

提前致谢

Having a spot of bother with this...
shake effect example

in firefox if I omit the line

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

then the box is animated over to the left instead of in the centre. If I keep that line of code to fix firefox then chrome has the same problem.

Any tips on getting round this would be grand.

thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

余生一个溪 2024-10-26 02:43:11

解决方案(不是一个令人愉快的解决方案,但它可以跨浏览器工作 - 我说的是跨浏览器,有 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');
});

the solution (not a happy one but it 'works' cross browser - I say cross browser, got ie9 and my work machine can't run virtual 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');
});
半步萧音过轻尘 2024-10-26 02:43:11

最简单的解决方案可能是引入一个额外的内部 div 来抖动。例如,如果您想要摇动的 div(并且具有“margin 0 auto”)的 id 为“centered”,则不要摇动此 div,而是添加一个内部 div“摇动”并摇动该 div。

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

http://jsfiddle.net/yAjHa/

The easiest solution is probably to introduce an additional inner div to shake. For example, if the div you want to shake (and that has "margin 0 auto") has the id "centered", then do not shake this div, but add an inner div "shake" and shake that div.

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

http://jsfiddle.net/yAjHa/

鹿港巷口少年归 2024-10-26 02:43:11

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

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

You can detect Firefox or Chrome with $.browser in jQuery.

You could then decide whether or not to apply that CSS.

爱已欠费 2024-10-26 02:43:11

我想我得到了你所问的,是这个吗?

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

请将您演示的答案与此处的答案保持一致。 JS Fiddle 是一个用于演示的资源,而不是托管整个答案的地方。 – 大卫·托马斯 20 分钟前

根据上面的评论,这是我更改的内容:

jQuery:

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

CSS - 对包含的

进行了一些调整:

#box { 宽度:20px;高度:20px; margin:auto auto;}

希望有帮助吗?

Think i got what you were asking, is this it?

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

Please bring the answer you're demonstrating in-line with the answer here. JS Fiddle is a resource for demonstration, not somewhere to host the whole of the answer. – David Thomas 20 mins ago

As per the above comment here is what i changed:

jQuery:

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

CSS - Made some tweeks to the containing <div>:

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

Hope that helps?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文