jquery animate() IE9 和 chrome - 奇怪的行为!

发布于 2024-10-28 19:17:09 字数 1087 浏览 0 评论 0原文

请在此处查看此页面。

这是 jquery animate() 的一个非常简单的部分,它将标题文本动画到页面顶部 - 仅此而已!

在 FF 和 Opera 中它是完美的。

在 IE9 中,它首先跳到页面底部,然后向上动画。

在 Chrome 中,它会跳到页面顶部,然后向下动画!

卧槽!

jquery 调用是:

$(function(){

    $('#name_holder').click(function(){
        $('#name_holder_wrap').animate(

            {top: '75px'}
            , 500
            , 'swing'
            , function() {
                $('#name_holder').attr({"style": 'cursor:default'});
            }
        );
    }); 
});

这是所涉及元素的 css:(

#name_holder_wrap {
    padding: 0px;
    width: 100%;
    position: absolute;
    height: auto;
    top: 45%;
}

#name_holder {
    padding: 0px;
    width: 600px;
    height: auto;
    text-align: center;
    margin-right: auto;
    margin-left: auto;
    display: block;
    cursor: pointer;
}

抱歉,我还没有完全弄清楚如何正确地将代码插入到这些帖子中 - 无法将那些右花括号包含在代码块中 -我正在努力!)

所以,我真的很感激任何关于这方面的指示——我已经为此奋斗了几个小时,真的需要继续前进!

非常感谢!

斯科特

Please look at this page here.

This is a really straightforward bit of jquery animate() that animates the title text up to the top of page - that's all!

In FF and Opera it's perfect.

In IE9 it jumps first to the bottom of the page and then animates up.

In Chrome it jumps to the top of the page and then animates down!

wtf!

The jquery call is:

$(function(){

    $('#name_holder').click(function(){
        $('#name_holder_wrap').animate(

            {top: '75px'}
            , 500
            , 'swing'
            , function() {
                $('#name_holder').attr({"style": 'cursor:default'});
            }
        );
    }); 
});

and here's the css for the elements involved:

#name_holder_wrap {
    padding: 0px;
    width: 100%;
    position: absolute;
    height: auto;
    top: 45%;
}

#name_holder {
    padding: 0px;
    width: 600px;
    height: auto;
    text-align: center;
    margin-right: auto;
    margin-left: auto;
    display: block;
    cursor: pointer;
}

(Sorry, I haven't quite got my head round how to insert code into these posts properly - can't get those closing curly braces to include in the code block - I am trying!)

So, I'd really appreciate any pointers on this - i've been wrestling with it for some hours now and really need to get on!

Many thanks in advance!

Scott

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

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

发布评论

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

评论(2

逆光下的微笑 2024-11-04 19:17:09

在 IE9 中也对我来说工作得很好,但 Chrome 的修复方法是将动画设置为百分比值而不是像素:

$(function(){

    $('#name_holder').click(function(){
        $('#name_holder_wrap').animate(

            {top: '15%'}
            , 500
            , 'swing'
            , function() {
                $('#name_holder').attr({"style": 'cursor:default'});
            }
        );
    }); 
});

如果这不起作用,您可以更改 css 中的百分比值,也许需要一些 javascript 的帮助。

Works fine for me in IE9 for me too, but a fix for Chrome would be to animate to a percent value instead of pixels:

$(function(){

    $('#name_holder').click(function(){
        $('#name_holder_wrap').animate(

            {top: '15%'}
            , 500
            , 'swing'
            , function() {
                $('#name_holder').attr({"style": 'cursor:default'});
            }
        );
    }); 
});

If that dosen't work, you could change the percent value in the css, maybe with help of some javascript.

半寸时光 2024-11-04 19:17:09

这里的问题是 CSS 和 JQuery 的组合,它们需要正确才能使 IE 和 Chrome 都能按您希望的方式工作。

以下是我的设置方法,效果很好。

.object_to_be_animated {
  position: absolute;
  left: 0;
  top: 96px;
  width: 259px;
  height: 85px;
  background: url(...) left top repeat; }

这里重要的是我使用 TOP 绝对定位我的元素,而不是底部。

然后我像这样构造我的 Jquery

function slide_up() { $(this).children(".overlay").animate({top: '-=51px'}); }
function slide_down() { $(this).children(".overlay").animate({top: '+=51px'}); }

$(".rolloverLink").hoverIntent(slide_up,slide_down);

记住与 CSS 和 JQuery 使用相同的单位,我建议使用像素,因为它可以保持精确。不要混合 em、px、%。

这应该有望解决问题

The problem here is the combination of CSS and JQuery, which need to be correct in order for both IE and Chrome to work as you would hope.

Here's how I have things set up and it worked fine.

.object_to_be_animated {
  position: absolute;
  left: 0;
  top: 96px;
  width: 259px;
  height: 85px;
  background: url(...) left top repeat; }

The important thing here is that I have absolute positioned my element using TOP, not bottom.

I then structured my Jquery like so

function slide_up() { $(this).children(".overlay").animate({top: '-=51px'}); }
function slide_down() { $(this).children(".overlay").animate({top: '+=51px'}); }

$(".rolloverLink").hoverIntent(slide_up,slide_down);

Remember to use the same units with your CSS and JQuery, I'd recommend using pixels as it keeps things precise. Don't mix em, px, %.

This should hopefully fix the issue

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