このSOの質問のコードを見ていて、ページ上の別の要素が画面に表示されているかどうかに応じて、ナビゲーションバーのようにdivの表示を切り替えるのに役立つと思いました。ページから使用したコードは次のとおりです。
function isScrolledIntoView(elem) {
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();
var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();
return ((docViewTop < elTop) && (docViewBottom > elBottom));
}
これを行う関数を作成しようとしましたが、残念ながらプログラミングが苦手です。これが私が使用したものです:
$('#magicnav').hide();
var intro = $('#intro');
$(document).ready(function () {
if (intro.isScrolledIntoView()) {
$('#magicnav').fadeOut();
} else {
$('#magicnav').fadeIn();
}
});
私もこのステートメントを試しましたif(isScrolledIntoView($intro))
が、明らかにそれも間違っています。誰でも私を助けることができますか?
参照用のページのjsfiddle を次に示します。私の目標は、特定の div (ナビゲーション リンクも含む) が画面に表示されない場合にのみ表示される固定ナビゲーション バーを画面の上部に表示することです。
「magicnav」の div をページの中央に貼り付けたことにお気付きかもしれません。これは意図的なものでした。現時点で一番上に固定されないようにするためであり、jQuery が機能しているかどうかをすぐに確認できるようにする必要がありました。