いくつかの画像を含むdivがあります。ユーザーが画像の上端または下端が親divによって隠されようとしているところまでスクロールすると、画像が消えるようにしたいと思います。構造は次のようになります。
<div class="parent">
<img/>
<img/>
</div>
私の目標は、画像の上端または下端が親divによって非表示になり始めたときに画像をフェードアウトさせ、フルビューにスクロールインしたときに画像をフェードインさせることです。
私はjQueryを使用しており、div
scrollイベントをリッスンしてをチェックしてimg
offset().top
います。表示されていない最上位の値に達すると、画像を非表示にします。
ただし、スクロールイベントごとに画像を反復処理する必要があるため、これには多くのCPU時間がかかるようです。その上、私が呼び出しhide()
たとしてもimg
、それはまったく隠されません(それが呼び出されたことを確認するためだけにブレークポイントを入れてください、そしてそれはそうでした)。これを行う正確な方法はありますか?
編集: mcpDESIGNSのおかげで、position()
の代わりに使用する必要がありましoffset()
た。また、に設定されてhide()
いるため動作しないようです。だから私はに切り替えました、そしてそれは期待通りに動作します。display
none
visibility:hidden
EDIT2: メモとして、これが私が使用しているjsであり、mcpDesignsが提案したものとほぼ同じです。
年
var display = $("div");
display.scroll(function () {
var avatars = $("div > img");
console.log("************************");
avatars.each(function (index) {
console.log($(this).offset().top);
if ($(this).offset().top < 40)
$(this).hide();
else {
$(this).show();
}
});
});
新着
var display = $("div");
display.scroll(function () {
var avatars = $("div > img");
console.log("************************");
avatars.each(function (index) {
console.log($(this).position().top);
if ($(this).position().top < 0)
$(this).css("visibility", "hidden")//.hide();
else {
$(this).css("visibility", "")//.show();
}
});
});