teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

質問を適切な表現に変更

2020/08/31 12:14

投稿

MgKm
MgKm

スコア0

title CHANGED
@@ -1,1 +1,1 @@
1
- スクロールして要素が見えたら表示し見えなくなったら非表示にする
1
+ スクロールして要素が見えたら表示し、要素の最下部が見えたら非表示にする
body CHANGED
@@ -4,10 +4,10 @@
4
4
  下記サイトを参考にさせて頂きました。
5
5
  https://hajimete.org/jquery-scroll-fade2
6
6
 
7
- 問題内容は下記のとおりで、これを要素([data-scroll="x"])が終わるぴったりの場所で非表示にする方法をご教示頂きたいと考えております。
7
+ 問題内容は下記のとおりで、これを要素([data-scroll="target"])が終わるぴったりの場所で非表示にする方法をご教示頂きたいと考えております。
8
8
 
9
9
  ### 発生している問題
10
- ある程度意図通りの挙動になるのですが、要素([data-scroll="x"])が終わるぴったりの場所で「非表示にする動作」が動きません。
10
+ ある程度意図通りの挙動になるのですが、要素([data-scroll="target"])が終わるぴったりの場所で「非表示にする動作」が動きません。
11
11
  少し通りすぎたところで消える…というような動きになってしまいます。
12
12
 
13
13
  ### 該当のソースコード
@@ -15,41 +15,20 @@
15
15
  ```js
16
16
  $(function() {
17
17
  $(window).on("scroll", function() {
18
- var tgt = $('[data-scroll="x"]').offset().top; // ターゲットの位置取得
18
+ var tgt = $('[data-scroll="target"]').offset().top; // ターゲットの位置取得
19
19
  var pos = tgt - $(window).height(); // 画面下部からのターゲットの位置
20
- var tgtHeight = $('[data-scroll="x"]').height();
20
+ var tgtHeight = $('[data-scroll="target"]').height();
21
21
 
22
22
  if ($(window).scrollTop() > pos && $(window).scrollTop() < tgtHeight) {
23
- $('.iconScrollBox').fadeIn();
23
+ $('.hoge').fadeIn();
24
24
  } else {
25
25
  // 非表示にする動作
26
- $('.iconScrollBox').fadeOut();
26
+ $('.hoge').fadeOut();
27
27
  }
28
28
  });
29
29
  });
30
30
  ```
31
31
 
32
- ### 試したこと
33
- if文内をtgtHeight - 175のようにすると、一定の画面幅ではイメージどおりの挙動になりました。(横幅375pxくらい)。
34
- しかし、横幅760pxくらいにすると、(当然かも知れませんが)位置がズレてしまう…という動きになっています。
35
-
36
- ```js
37
- $(function() {
38
- $(window).on("scroll", function() {
39
- var tgt = $('[data-scroll="x"]').offset().top; // ターゲットの位置取得
40
- var pos = tgt - $(window).height(); // 画面下部からのターゲットの位置
41
- var tgtHeight = $('[data-scroll="x"]').height();
42
-
43
- if ($(window).scrollTop() > pos && $(window).scrollTop() < tgtHeight - 175) {
44
- $('.iconScrollBox').fadeIn();
45
- } else {
46
- // 非表示にする動作
47
- $('.iconScrollBox').fadeOut();
48
- }
49
- });
50
- });
51
- ```
52
-
53
32
  以上になります。
54
33
  皆様のお知恵を拝借したく存じます。
55
34
  よろしくお願いいたします。