IE3错误与CSS3Pie和jQuery动画

时间:2012-01-17 09:30:50

标签: jquery jquery-animate css3pie

大家好,我希望有人可以帮我解决这个问题。

我正在使用CSS3Pie在一个盒子上获得圆角,并且在包括IE7在内的所有浏览器中一切正常。但是当你将动画(这次slideToggle)添加到我的框中的一个元素时,IE7开始就像你没有动作一样position:relative。元素变大,5000px x 10000px +++。我确信所有元素在需要时都有position:relative

之前我已经看过这个错误,我们发现了一个解决方法,其中包括一些针对CSS3Pie文件的JS修复程序,但我再也找不到了。

我很感谢能得到的所有帮助。

由于 吉米

你可以在下面的图片中看到,灰色背景并没有在盒子结束处结束,它只是继续在网站上的其他元素之外。

You cans see on the image below that the gray background doesn't end where the box end it's just continues out over the other elements on the site.

这是向下滑动的元素的css

#grades .form-content {
    margin:0 10px;
    padding:10px;
    width:93.8%;
    background:#fff;
}

这是盒子的css:

.m-pc {position:relative;}

.m-pc .m-c {
    position:relative;
    padding:38px 21px 10px;
    margin-bottom:25px;
    border:1px solid #cbcbcb;
    border-top:none;
    -moz-box-shadow:0 1px 5px #e3e4e3; /* FF3.5+ */
    -webkit-box-shadow:0 1px 5px #e3e4e3; /* Saf3.0+, Chrome */
    box-shadow:0 1px 5px #e3e4e3; /* Opera 10.5, IE 9.0 */
    background:#f6f6f6;
    behavior:url(/css/vendor/pie.htc);
}

.m-pc .m-h {
    position:relative;
    border:1px solid #cbcbcb;
    -webkit-border-radius:6px 6px 0 0;
    -moz-border-radius:6px 6px 0 0;
    border-radius:6px 6px 0 0;
    background:#eee;
    background:-webkit-gradient(linear, 0 0, 0 bottom, from(#eee), to(#e5e5e5));
    background:-webkit-linear-gradient(#eee, #e5e5e5);
    background:-moz-linear-gradient(#eee, #e5e5e5);
    background:-ms-linear-gradient(#eee, #e5e5e5);
    background:-o-linear-gradient(#eee, #e5e5e5);
    background:linear-gradient(#eee, #e5e5e5);
    -pie-background:linear-gradient(#eee, #e5e5e5);
    behavior:url(/css/vendor/pie.htc);
}

2 个答案:

答案 0 :(得分:0)

动画开始时可能是双边距问题,你可以发布动画风格吗?

#grades .form-content {
    margin:0 10px;
    *margin:0 5px;
    *zoom:1;
    padding:10px;
    *padding:5px;
    width:93.8%;
    background:#fff;
}

问题似乎来自动画风格本身,或者你只是使用slideToggle?

.animate({
    'left/right/top/bottom' : ?
});

答案 1 :(得分:0)

我现在找不到这个帖子,但另一张海报的帮助为我解决了类似的问题。向动画添加回调以重新计算位置:

 $('.your_div').animate(function () {
            if ($.browser.msie) {
                $(this).each(function () { $(this).resize(); });
            }
        });