私は2つのdivを持っています。ページの上部セクションを含むもの。もう1つはトップdivのすぐ下にあります。この2番目のdivは、ページの約1.5ビューポートです。しかし、私はしようとし、ナビゲーションボタンが押されたときに、ページを2番目のdivにスクロールさせます。それは私をページの先頭に連れて行きます。たとえそれが第2のdivのscrollTop属性を参照しているとしても。divがページのさらに下にあるにもかかわらずscrollTopが0に等しい
答えて
scrollTopは常に0の位置になります。別のdivにスクロールする場合は、オフセットを使用してハッシュ位置までスクロールする必要があります。ブートストラップを使用している場合は、そのためにScrollSpyを使用できます。そうでない場合は、このコードを使用してハッシュ位置へスムーズにスクロールすることができます。
ハッシュはdivのIDにする必要があります。このIDは、ボタン/リンクのスクロール先のdivのIDと一致するように、ボタン/リンクのhrefを設定することでターゲットになります。
だから、あなたのリンクは次のようになります。
<a href="#somediv">Some Link</a>
そして、あなたのdiv要素は次のようになります。
<div class="someclass" id="somediv"></div>
そして、これは正しい位置にスクロールを処理するJS:
// Select all links with hashes
$('a[href*="#"]')
// Remove links that don't actually link to anything
.not('[href="#"]')
.not('[href="#0"]')
.click(function(event) {
// On-page links
if (
location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')
&&
location.hostname == this.hostname
) {
// Figure out element to scroll to
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
// Does a scroll target exist?
if (target.length) {
// Only prevent default if animation is actually gonna happen
event.preventDefault();
$('html, body').animate({
scrollTop: target.offset().top -80
}, 1000, function() {
// Callback after animation
// Must change focus!
var $target = $(target);
$target.focus();
if ($target.is(":focus")) { // Checking if the target was focused
return false;
} else {
$target.attr('tabindex','-1'); // Adding tabindex for elements not focusable
$target.focus(); // Set focus again
};
});
}
}
});
未定義のプロパティ 'top'を読み取ることはできません。 – Born2EditHD
jQueryを使用していますか?申し訳ありません - このソリューションにはjQueryが必要だと言いました。 – Korgrue
https://gyazo.com/929adadba37e90537668b013e4ecab2d私はこれを行うには何をしたいのですか? 3 – Born2EditHD
- 1. Android GPSが更新されていないminTimeが0でminDistanceが0であるにもかかわらず、
- 2. RGB値が等しいにもかかわらず色が異なる
- 3. 子要素にかかわらずdivを0にする
- 4. Proguard: `seeds.txt`にフィールドがあるにもかかわらず` NoSuchFieldError`
- 5. クラスがビルドパス上にあるにもかかわらず、クラスネストClassNotFoundExceptions
- 6. jQueryがファイル内にあるにもかかわらずlaravel
- 7. 子ページがあるにもかかわらずpage.collection()が空です
- 8. [0、22]に等しいレイヤーのズーム設定にもかかわらず、マップボックススタイルのレイヤーが非表示になることがありました。
- 9. gemがインストールされているにもかかわらずGemNotFound
- 10. NullPointerExceptionが指定されているにもかかわらず
- 11. データベースにカラムがあるにもかかわらずカラムがありません
- 12. HandleProcessCorruptedStateExceptionsにもかかわらずAccessViolationExceptionがキャッチされない
- 13. pymongoのシングルインサートがWriteConcern(w = 0)にもかかわらず遅すぎる
- 14. -isystemにもかかわらず警告が生成される
- 15. ベストセラーにもかかわらずbxSliderが機能しない
- 16. ページがあるにもかかわらず、管理領域にTPageが見つかりません
- 17. TFSが接続されているにもかかわらず、ソリューションが自動的にオンラインにならない
- 18. クラスのページがあるにもかかわらず、クラスclass_existsのエコー出力がありません
- 19. 角度のある素材2ドームにあるにもかかわらずサイドナップが表示されない
- 20. オブジェクトが配列内にあるにもかかわらず配列にないと言われました
- 21. 接続が確立しているにもかかわらず、neo4j-shellからのコマンドレスポンスがありません
- 22. Androidパブリックムービーのディレクトリが空でないにもかかわらず、
- 23. ボックス内容量にもかかわらず2x2グリッドの等高さ
- 24. マッパーが完了したにもかかわらず、カウント*クエリーがレデューサーで0%でスタックされました
- 25. pdbファイルがあるにもかかわらずPDBNavigatorが失敗する
- 26. サーバにルートがあるにもかかわらず、nginxの場所がルートなしで動作しない
- 27. 有効にしているにもかかわらず、「ログイン方法が無効」
- 28. ページに正常に読み込まれたにもかかわらず、メディア画像が表示されない
- 29. POST変数があるにもかかわらずアクセスできない
- 30. <?php ?>タグがあるにもかかわらず、サイトにphpコードが表示されています。
https://gyazo.com/b6cf7f9621d29a7620a6fbcfcea06a1fこれは開発者向けのツールのスクリーンショットです。 divのscrollTopがページの先頭にないにもかかわらず0であると言います... – Born2EditHD
[$(document).scrollTop()の重複は常に0を返します(https://stackoverflow.com/questions/ 12788487/document-scrolltop-always-returns-0) – doutriforce
https://gyazo.com/b6935f99b658c96e54f30df80faeefbcこれは、私が話した「第2のdiv」であるparallax2を乗り越えた私のGIFです。あなたが見ることができるように、それはページの上部にないので、scrollTopを0にするべきではありません。 – Born2EditHD