1

offset()jQuery関数を使用して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 に答える