2017-11-07 2 views
0

だから、私は現在、どのセクションやHTMLの一部を取得できるのか知りたいと思っています。例 ユーザがすでにJavaScriptの を使用してパート2の上に下にスクロールそれとも、彼らは一部で、現在あなたが使用できる1どのようにHTMLのどの部分がユーザであるかを知る方法

<html> 
<head> 
</head> 
<body> 
<section class=“part 1”> 
</section> 
<section class= “part2> 
</section> 
</body> 

</html> 
+0

可能な複製(https://stackoverflow.com/questions/4373667/get-div-tag-scroll-position- [JavaScriptを使用してのdivタグのスクロール位置を取得します] using-javascript) – Paul

答えて

0

している場合、[「:フォーカス」]でいた場合、どのように私は知っている機能は、見つけることこのdivには現在フォーカスがあります。

if($(".part1").is(":focus")) 
{ 
//you code 
} 
else if($(".part2").is(":focus")) 
{ 
//you code 
} 
1

次のコードは、このような状況を処理する方法について少し説明します。基本的にあなたが使用して行うことができますスクロールバーの位置を取得したいとしている。

document.documentElement.scrollTop 

また、あなたは存在を探している要素は、我々の場合には、それは.part1.part2ある範囲を取得したいです。この範囲を得るには、制限の始まりとしてoffsetTopを使用し、終了を決定するにはoffsetTop + clientHeightを使用します。

ウィンドウのスクロールイベントを追跡する必要があります。

次の例では、ジェネリックです:

$(window).scroll(function(e) { 
    if (document.documentElement.scrollTop > 0 
     && document.documentElement.scrollTop < $('.part2').offset().top) { 
     $('div').html("At part1") 
    } else { 
     $('div').html("At part2") 
    } 
}); 

JSFiddle

同様に、あなたはモジュール性を少ししたい場合:

$(window).scroll(function(e) { 
    let watchList = ['part1', 'part2', 'part3']; 

    let scrollTop = document.documentElement.scrollTop; 
    for (var classname of watchList) { 
     let el = document.getElementsByClassName(classname)[0]; 
     if (scrollTop > el.offsetTop && 
      scrollTop < el.offsetTop + el.clientHeight) { 
      $('div').html("At <strong>"+classname+"</strong>"); 
     } 
    } 
}); 

JSFiddle

可能性がに無限ですが続行し、これをより便利にするしかし、私はそれをあなたに任せます。

0

mouseenter関数を使用すると、マウスが最初にそのdivに入ると起動します。

$(".part1").on('mouseenter', function(){ 
    //your command 
}); 

マウスオーバー機能を使用して、現在マウスがどこにあるかを見つけることができます。マウスがそのdiv内を移動すると起動します。

$(".part1").on('mouseover', function(){ 
    //your command 
}); 
0

javascript offsetTop機能を使用できます。これは、ピクセル数のdivの上からどれくらい下にあるかを返すパラメータです。

また、ウィンドウオブジェクト自体で呼び出されたときにユーザーがスクロールした距離を戻すこともできます。それは単なる数学の問題です。ユーザーがリファレンスでdivを過ぎ去ってしまっているかどうか確認してください。例えば

var part1DivOffset = document.getElementsByClassName("part 1")[0].offsetTop; 
var part2DivOffset = document.getElementsByClassName("part2")[0].offsetTop; 
var scrollTop = (window.pageYOffset !== undefined) ? window.pageYOffset : (document.documentElement || document.body.parentNode || document.body).scrollTop; 

このコードは、あなたに3つの変数を取得します。最初の2行はdivのoffsetTopを保存します。 3行目は、ユーザーがスクロールした距離を検出します。その後、変数と数学を行うことができます。

if(scrollTop >= part1DivOffset){ 
    //we are past part1 
} 
if(scrollTop >= part2DivOffset){ 
    //We are past part 2 
} 
if(scrollTop >= part1DivOffset && scrollTop < part2DivOffset){ 
    //We are past part 1 but not past part 2 
} 
関連する問題