質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

968閲覧

jQueryでスクロール距離を2回取得したい

hana778

総合スコア10

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/06/07 10:59

前提・実現したいこと

jQueryで特定の位置までスクロールしたら消える要素の実装しています。
コンテンツの間に「もっと見る」ボタンを配置しており、
要素を隠しています。
その状態だと指定の位置で消えてくれるのですが、
「もっと見る」ボタンをクリックし、高さが増えた状態だと「もっと見るボタン」の中の要素で消えてしまいます。

「もっと見る」ボタンクリックしたら、高さを再度取得してスクロールアクションをしたいです。

拙い説明で申し訳ないですが、よろしくお願いいたします。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード html

<div class="btn_wrapper"> <a href="" class="btn">特定の位置で消えるボタン </a> </div>
<Section class="sec01"> </section> <div class="text_wrapper"> <div class="text_in"> <p class="Text"> ダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミーダミー </p> </div> </div> <div class="show_more"> <span>もっと見る</span> </div>
<Section class="sec02"><!ここで特定の位置で消えるボタンを消す--> </section> ```jQuery var scrollStart = $('.sec01').offset().top; //ページ上部からの距離を取得 var scrollEnd = $('.sec02').offset().top; //ページ上部からの距離を取得 var windowHeight = $(window).height(); //ウインドウの高さを取得 var distance = 0; $(document).scroll(function(){ $(".show_more").click(function() {//もっと見るボタンを押したら                                  distance = $(this).scrollTop(); //スクロール位置を取得したい if (scrollEnd <= distance) { //スクロール距離がendの位置を超えたら console.log("endの位置を超えた"); $('.btn_wrapper').fadeOut(); //フェードアウト } else{                 $('.btn_wrapper').fadeIn(); //endより上部に戻ったらフェードイン console.log("endより上部に戻った"); } }); if (scrollStart <= distance) { //スクロール距離がstartの位置を超えたら $('.btn_wrapper').addClass('scrolled'); //scrolledというclassを追加 } else if (scrollStart >= distance) { //スクロールがページ上部まで戻ったら $('.btn_wrapper').removeClass('scrolled'); //classを削除 } if (scrollEnd <= distance + windowHeight/2) { //スクロール距離がendの位置を超えたら $('.btn_wrapper').fadeOut(); //フェードアウト } else{ $('.btn_wrapper').fadeIn(); //endより上部に戻ったらフェードイン } }); </script> ``` ### 試したこと ここに問題に対して試したことを記載してください。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

想定されている画面のイメージがつかないので助言になるかわかりませんが、クリックイベントハンドラー最初の$(this).scrollTop()だと「もっと見る」ボタン自体のスクロール量を取得しているような気がします。
これは意図した実装でしょうか?

(実際にスクロールされる要素ブロックにするか、ウィンドウにおけるボタン位置から計算するようにする?)

投稿2021/06/07 14:21

編集2021/06/07 14:22
kanetugu_70e

総合スコア100

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問