1

我正在使用 jQueryoffset()函数定位一个 DIV。为了避免 DIV 在不正确的位置闪烁,我在定位之前隐藏了 DIV,然后再次显示 DIV。但是,存在同步问题,在某些平台(例如 iPhone)上,我仍然可以看到闪存。模拟函数的回调函数的最佳方法是offset()什么?

$('div').hide();
y = Math.round(($(window).height() - $('div').outerHeight())/2);
$('div').offset({top : y});
$('div').fadeIn();

编辑

此外,如果禁用 JavaScript,此元素仍然可见,这一点很重要。

4

2 回答 2

1

您可以<div>从一开始就将您的元素渲染到视口之外,然后在隐藏它之前重新定位它并继续设置它的偏移量并将其淡入:

CSS:

.outside-viewport {
    position: absolute;
    left: -10000px;
}

Javascript:

var $div = $("div.outside-viewport");
$div.css({
    position: "relative",
    left: "0px"
}).hide().offset({
    top: ($(window).height() - $div.outerHeight()) / 2
}).fadeIn();
于 2012-07-09T18:16:06.357 回答
0

在这种情况下,jQuery 的偏移量的奇怪之处在于,Frederic 的上述建议是唯一有效恢复元素原始左偏移量的建议。jQuery 在隐藏元素和偏移方面存在一些问题。例如,如果您使用position: static,根据 CSS 规范是正确的,则左侧偏移量仍将是 -10000 像素,尽管该元素将在视口中可见。只是一个注释。我希望它会有用。:-)

于 2012-07-09T18:42:49.180 回答