ページのスクロール位置が特定の高さに達したら、私は単に何かをしようとしています。しかし、scrollTop()
は0またはnull
を返しますが、どれだけ下にスクロールしても関係ありません。これは、scrollTop()
値を確認するために使用しているヘルプ関数です。
_$('body').click(function(){
var scrollPost = $(document).scrollTop();
alert(scrollPost);
});
_
scrollTop()
、$('body')
、そしてもちろん$('html')
に$(window)
を付けてみましたが、何も変わりません。
何か案は?
何らかの理由で、HTMLおよびbodyタグから「高さ:100%」を削除すると、この問題が修正されました。
これが他の誰かに役立つことを願っています!
上記のいくつかを試した後、CSSを変更する必要がない私の解決策:
var scroll_top = Math.max( $("html").scrollTop(), $("body").scrollTop() )
これは、Chrome、Firefox、IEおよびEdgeの最新バージョンで動作します。
私と同じ間違いをするかもしれない人のためのアドオンがあります。私のコードは次のとおりでした:
var p = $('html,body');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );
<html>
タグには常にscrollTop値がゼロまたはnullであるため、このコードはchromeおよびsafariなどのWebkitブラウザーを除くすべてのブラウザーで機能します。
他のブラウザは無視しますが、Webkitのブラウザは無視しません。
最も簡単な解決策は、HTMLタグをコードから削除することです。
var p = $('body');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );
Htmlタグとbodyタグからheight: 100%;
を削除すると、問題を解決できます。
その理由は、html要素とbody要素のheightプロパティの値として100%を設定した可能性があるためです。 html要素とbody要素のheightプロパティを100%に設定すると、ドキュメントの高さと同じ高さになります。
同じ問題があった。 scrollTop()は、ドキュメントでも本文でもない一部のブロックで機能します。このメソッドを機能させるには、ブロックの高さとオーバーフロースタイルを追加する必要があります。
#scrollParag {
height: 500px;
overflow-y: auto;
}
その後:
var scrolParag = document.getElementById('scrollParag');
alert(scrolParag.scrollTop); // works!
ちなみに、使用する必要があるようです
$("body").scrollTop()
の代わりに
$(".some-class").scrollTop
これが私が立ち往生している理由です。
Scroll Topも常に0を返していました。ページ上の特定の要素に焦点を当てるために使用していました。別のアプローチを使用してそうしました。
document.getElementById( "elementID")。scrollIntoView();
モバイル、タブレット、デスクトップで私のためによく働いています。