質問編集履歴

1

質問内容の変更

2016/08/08 04:13

投稿

hatoQ
hatoQ

スコア45

test CHANGED
@@ -1 +1 @@
1
- ページトップボタン(レスポンシブ)が挙動不審です。
1
+ jQueryでページの最下部の位置を取得る方法
test CHANGED
@@ -10,41 +10,13 @@
10
10
 
11
11
 
12
12
 
13
- ###発生している問題・エラーメッセージ
14
-
15
- かく挙動不審です。通報されるレベルです。
13
+ そのためページの最下部の位置を取得したいです。
16
14
 
17
15
 
18
16
 
19
- ージを読み込んでスクロールする→
17
+ ###発生している問題・エラメッセー
20
18
 
21
- A.想定通りの位置でfadeInする→
19
+ ページ最下部の位置を取得きない。
22
-
23
- B.しばらくbottom:0でおとなしくしている→
24
-
25
- C.想定外の位置でbottomがずれる→
26
-
27
- フッターに達するとちょうどよい位置ですが→
28
-
29
- 一度上の方にスクロールしたりページトップへをクリックしたりすると→
30
-
31
- A.B.C.を繰り返した後→
32
-
33
- フッターを無視して一番下(ウィンドウ最下部)でベタ着きしたり、
34
-
35
- 一番下まで行ってからbottom位置が上に移動したり、
36
-
37
- そのあとしばらくその位置でうずくまっていたり→
38
-
39
- リロードごと・スクロールごとに挙動が変わる。
40
-
41
- ウィンドウサイズを変更した時や、
42
-
43
- PC/SPのブラウザによっても挙動が変わる。
44
-
45
-
46
-
47
- というような状況です。挙動不審です。
48
20
 
49
21
 
50
22
 
@@ -56,55 +28,7 @@
56
28
 
57
29
  ###該当のソースコード
58
30
 
59
- ```HTML
60
31
 
61
- <!-- ▽ メインコンテンツここから ▽ -->
62
-
63
- <main style=" width: 100%; height: 2000px;">
64
-
65
- ダミーメインです。ダミーコンテンツです。
66
-
67
- </main>
68
-
69
- <!-- △ メインコンテンツここまで △ -->
70
-
71
-
72
-
73
- <!-- ページトップ -->
74
-
75
- <div id="pagetop"><a href="#"><span>ページトップへ</span></a></div>
76
-
77
-
78
-
79
- <!-- ▼ フッターここから ▼ -->
80
-
81
- <footer>
82
-
83
- <div id="copyright"><p>Copyright All rights reserved.</p></div>
84
-
85
- </footer>
86
-
87
- <!-- ▲ フッターここまで ▲ -->
88
-
89
-
90
-
91
- ```
92
-
93
- ```CSS
94
-
95
- footer { position: relative; width: 100%; height: 180px; background: #00244B;}
96
-
97
- footer #copyright { position: absolute; bottom: 0; left: 0; width: 100%; height: 15px; line-height: 15px; text-align: center; background: #A9925C;}
98
-
99
-
100
-
101
- #pagetop { position: fixed; bottom: 0; right: 10px; width: 90px; height: 50px; border-radius: 20px 20px 0 0; background: #00244B; z-index: 100;}
102
-
103
- #pagetop a { display: block; width: 100%; height: 100%; text-align: center; color: #fff; font-size: 12px;}
104
-
105
- /*#pagetop a span {矢印が入ります。省略します。}*/
106
-
107
- ```
108
32
 
109
33
  ```javascript
110
34
 
@@ -112,43 +36,7 @@
112
36
 
113
37
  $(document).ready(function() {
114
38
 
115
- var pagetop = $('#pagetop');
116
-
117
39
  pagetop.hide();
118
-
119
-
120
-
121
- $(window).scroll(function () {
122
-
123
- if ($(this).scrollTop() > 650) {
124
-
125
- pagetop.fadeIn();
126
-
127
- } else {
128
-
129
- pagetop.fadeOut();
130
-
131
- }
132
-
133
- });
134
-
135
- pagetop.click(function () {
136
-
137
- $('body, html').animate({ scrollTop: 0 }, 500);
138
-
139
- return false;
140
-
141
- });
142
-
143
- //ここまでは正常に動く。よくある普通のページトップ。
144
-
145
-
146
-
147
- //ここからの動きが非常に怪しい。
148
-
149
- var scrollBottom;
150
-
151
- var lastTop = $("#copyright").offset().top;
152
40
 
153
41
 
154
42
 
@@ -156,29 +44,35 @@
156
44
 
157
45
  var x = 767;
158
46
 
47
+ var bottomStop = $('body').height();//ここでページ全体の高さを取得したい
48
+
159
49
 
160
50
 
161
51
  function getScrollTop(){
162
52
 
163
- scrollBottom = $(window).scrollTop() + $(window).height();
53
+ if ($(this).scrollTop() > 650){
164
54
 
55
+ pagetop.fadeIn().css('bottom', '0');
56
+
57
+
58
+
59
+ //「スクロール量がページの最下部に達したら」と書いているつもりだが…
60
+
165
- if(scrollBottom >= lastTop){
61
+ } else if ($(this).scrollTop() >= bottomStop){
166
62
 
167
63
  if (w <= x) {//ウィンドウサイズが767px以下の場合(SP)
168
64
 
169
- pagetop.stop().animate({'bottom' : '180px'}, 200);
65
+ pagetop.css('bottom', '180px');
170
66
 
171
67
  } else {//ウィンドウサイズが768px以上の場合(PC)
172
68
 
173
- pagetop.stop().animate({'bottom' : '450px'}, 200);
69
+ pagetop.css('bottom', '450px');
174
-
175
- //(PCの場合はfooterの高さが450px・#copyrightの高さが30pxになります。)
176
70
 
177
71
  }
178
72
 
179
- } else{
73
+ } else {
180
74
 
181
- pagetop.stop().animate({'bottom' : '0'}, 200);
75
+ pagetop.fadeOut();
182
76
 
183
77
  }
184
78
 
@@ -186,9 +80,17 @@
186
80
 
187
81
  $(window).on("load scroll resize", getScrollTop);
188
82
 
189
- });
190
83
 
191
84
 
85
+ pagetop.click(function () {
86
+
87
+ $('body, html').animate({ scrollTop: 0 }, 500);
88
+
89
+ return false;
90
+
91
+ });
92
+
93
+ });
192
94
 
193
95
 
194
96
 
@@ -196,14 +98,4 @@
196
98
 
197
99
  ###試したこと
198
100
 
199
- 本当は#copyrightまで行かずに、footerに到達した時点で固定されるほうがいいのかもしれない。
200
-
201
- どちらにせよ挙動が不安定すぎて、使い物にならない。
202
-
203
-
204
-
205
- なんとなく正しく制動する時もあるので、スクリプトの書き方は合っているのか・・?
206
-
207
- それとも間違っているのか・・?よくわかりせん
101
+ 挙動不審についは無事解決たしした
208
-
209
- どなたか分かる方いらっしゃいましたら、ご教授をお願いします。