我正在使用jQuery offset()
函数定位DIV。为了避免DIV在不正确的位置闪烁,我在定位之前隐藏了DIV,然后再次显示DIV。但是,存在同步问题,并且在某些平台(例如iPhone)上我仍然可以看到闪存。模拟offset()
函数的回调函数的最佳方法是什么?
$('div').hide();
y = Math.round(($(window).height() - $('div').outerHeight())/2);
$('div').offset({top : y});
$('div').fadeIn();
修改
此外,如果禁用JavaScript,此元素仍然可见。
答案 0 :(得分:1)
您可以从一开始就在视口之外渲染<div>
元素,然后在隐藏它之前重新定位它并继续设置其偏移并将其淡入:
.outside-viewport {
position: absolute;
left: -10000px;
}
var $div = $("div.outside-viewport");
$div.css({
position: "relative",
left: "0px"
}).hide().offset({
top: ($(window).height() - $div.outerHeight()) / 2
}).fadeIn();
答案 1 :(得分:0)
在这种情况下,jQuery偏移的奇怪之处在于Frederic的上述建议是唯一能够有效恢复元素原始左偏移量的建议。 jQuery在隐藏元素和偏移方面存在一些问题。例如,如果使用position: static
(根据CSS规范更正),左偏移将仍为-10000像素,尽管该元素在视口中可见。只是一张纸条。我希望它会有用。 : - )