IE的CSS顶部和左侧是否有错误?

时间:2009-01-09 07:04:37

标签: jquery css internet-explorer

以下jQuery代码适用于Safari,Opera,FF2和FF3。它将繁忙的DIV(带有动画繁忙的GIF)定位在我的网页上的FORM元素之上。问题是在IE6和IE7中,它正确地获得宽度和高度,但似乎没有正确地上下左右。有什么收获?

var nH = $('#' + sForm).attr('offsetHeight');
var nW = $('#' + sForm).attr('offsetWidth');
var nT = $('#' + sForm).attr('offsetTop');
var nL = $('#' + sForm).attr('offsetLeft');

$('#busy')
    .css('position','absolute')
    .css('height', nH + 'px')
    .css('width', nW + 'px')
    .css('top', nT + 'px')
    .css('left', nL + 'px')
    .show();

请注意,在我的页面上,我有多个FORM元素。 (繁忙的GIF的原因是因为我在提交表单时在后台进行了AJAX帖子。)

注意我还尝试了顶部和左侧的jQuery Dimensions Plugin 1.2的.position()值,这有帮助,但似乎top值越来越偏离我在页。

3 个答案:

答案 0 :(得分:2)

现在jQuery(最新公开发布)将维度作为核心功能。

尝试使用$(element).offset()(它返回一个带有“left”和“top”属性的对象)。 我已经经常使用它,并且适用于许多浏览器(即6/7,歌剧,safari,chrome,ff2 / 3)

答案 1 :(得分:0)

我得到了jQuery Dimensions Plugin 1.2的顶部和左侧的.position()值。 (它返回一个数组,你可以在其中获得顶部和左侧数组值。)修复是我必须为IE6陷阱并且只为顶部减去一些固定数字(在我的情况下为12px),并在高度上添加相同的数字。在IE7上,我可以做同样的事情,但由于某些原因,在前200像素或更少的像素上必须以不同方式进行顶部和高度数学运算。您的情况可能会有所不同,具体取决于您之前的CSS,您的reset.css等。

答案 2 :(得分:0)

你确定元素设置为display:block吗?你也可以通过传递这样的哈希来避免多次调用css函数:

$('#busy')
    .css({'position':'absolute',
          'height': nH + 'px',
          'width', nW + 'px',
          'top', nT + 'px',
          'left', nL + 'px'})
    .show();