質問編集履歴

2

JQueryのscrollをコードとして追加

2019/10/09 06:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,5 +1,349 @@
1
1
  ```
2
2
 
3
+ <JQuery-scroll>
4
+
5
+ // UTF-8
6
+
7
+ /**
8
+
9
+ * scrollsmoothly.js
10
+
11
+ * Copyright (c) 2008 KAZUMiX
12
+
13
+ * http://d.hatena.ne.jp/KAZUMiX/20080418/scrollsmoothly
14
+
15
+ * Licensed under the MIT License:
16
+
17
+ * http://www.opensource.org/licenses/mit-license.php
18
+
19
+ *
20
+
21
+ */
22
+
23
+
24
+
25
+ (function(){
26
+
27
+ var easing = 0.2;
28
+
29
+ var interval = 14;
30
+
31
+ var d = document;
32
+
33
+ var targetX = 0;
34
+
35
+ var targetY = 0;
36
+
37
+ var targetHash = '';
38
+
39
+ var scrolling = false;
40
+
41
+ var splitHref = location.href.split('#');
42
+
43
+ var currentHref_WOHash = splitHref[0];
44
+
45
+ var incomingHash = splitHref[1];
46
+
47
+ var prevX = null;
48
+
49
+ var prevY = null;
50
+
51
+
52
+
53
+ // ドキュメント読み込み完了時にinit()を実行する
54
+
55
+ addEvent(window, 'load', init);
56
+
57
+
58
+
59
+ // ドキュメント読み込み完了時の処理
60
+
61
+ function init(){
62
+
63
+ // ページ内リンクにイベントを設定する
64
+
65
+ setOnClickHandler();
66
+
67
+ // 外部からページ内リンク付きで呼び出された場合
68
+
69
+ if(incomingHash){
70
+
71
+ if(window.attachEvent && !window.opera){
72
+
73
+ // IEの場合はちょっと待ってからスクロール
74
+
75
+ setTimeout(function(){scrollTo(0,0);setScroll('#'+incomingHash);},50);
76
+
77
+ }else{
78
+
79
+ // IE以外はそのままGO
80
+
81
+ scrollTo(0, 0);
82
+
83
+ setScroll('#'+incomingHash);
84
+
85
+ }
86
+
87
+ }
88
+
89
+ }
90
+
91
+
92
+
93
+ // イベントを追加する関数
94
+
95
+ function addEvent(eventTarget, eventName, func){
96
+
97
+ if(eventTarget.addEventListener){
98
+
99
+ // モダンブラウザ
100
+
101
+ eventTarget.addEventListener(eventName, func, false);
102
+
103
+ }else if(window.attachEvent){
104
+
105
+ // IE
106
+
107
+ eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);});
108
+
109
+ }
110
+
111
+ }
112
+
113
+
114
+
115
+ function setOnClickHandler(){
116
+
117
+ var links = d.links;
118
+
119
+ for(var i=0; i<links.length; i++){
120
+
121
+ // ページ内リンクならスクロールさせる
122
+
123
+ var link = links[i];
124
+
125
+ var splitLinkHref = link.href.split('#');
126
+
127
+ if(currentHref_WOHash == splitLinkHref[0] && d.getElementById(splitLinkHref[1])){
128
+
129
+ addEvent(link, 'click', startScroll);
130
+
131
+ }
132
+
133
+ }
134
+
135
+ }
136
+
137
+
138
+
139
+ function startScroll(event){
140
+
141
+ // リンクのデフォルト動作を殺す
142
+
143
+ if(event){ // モダンブラウザ
144
+
145
+ event.preventDefault();
146
+
147
+ //alert('modern');
148
+
149
+ }else if(window.event){ // IE
150
+
151
+ window.event.returnValue = false;
152
+
153
+ //alert('ie');
154
+
155
+ }
156
+
157
+ // thisは呼び出し元になってる
158
+
159
+ setScroll(this.hash);
160
+
161
+ }
162
+
163
+
164
+
165
+ function setScroll(hash){
166
+
167
+ // ハッシュからターゲット要素の座標をゲットする
168
+
169
+ var targetEle = d.getElementById(hash.substr(1));
170
+
171
+ if(!targetEle)return;
172
+
173
+ //alert(scrollSize.height);
174
+
175
+ // スクロール先座標をセットする
176
+
177
+ var ele = targetEle;
178
+
179
+ var x = 0;
180
+
181
+ var y = 0;
182
+
183
+ while(ele){
184
+
185
+ x += ele.offsetLeft;
186
+
187
+ y += ele.offsetTop;
188
+
189
+ ele = ele.offsetParent;
190
+
191
+ }
192
+
193
+ var maxScroll = getScrollMaxXY();
194
+
195
+ targetX = Math.min(x, maxScroll.x);
196
+
197
+ targetY = Math.min(y, maxScroll.y);
198
+
199
+ targetHash = hash;
200
+
201
+ // スクロール停止中ならスクロール開始
202
+
203
+ if(!scrolling){
204
+
205
+ scrolling = true;
206
+
207
+ scroll();
208
+
209
+ }
210
+
211
+ }
212
+
213
+
214
+
215
+ function scroll(){
216
+
217
+ var currentX = d.documentElement.scrollLeft||d.body.scrollLeft;
218
+
219
+ var currentY = d.documentElement.scrollTop||d.body.scrollTop;
220
+
221
+ var vx = (targetX - currentX) * easing;
222
+
223
+ var vy = (targetY - currentY) * easing;
224
+
225
+ var nextX = currentX + vx;
226
+
227
+ var nextY = currentY + vy;
228
+
229
+ if((Math.abs(vx) < 1 && Math.abs(vy) < 1)
230
+
231
+ || (prevX === currentX && prevY === currentY)){
232
+
233
+ // 目標座標付近に到達していたら終了
234
+
235
+ scrollTo(targetX, targetY);
236
+
237
+ scrolling = false;
238
+
239
+ location.hash = targetHash;
240
+
241
+ prevX = prevY = null;
242
+
243
+ return;
244
+
245
+ }else{
246
+
247
+ // 繰り返し
248
+
249
+ scrollTo(parseInt(nextX), parseInt(nextY));
250
+
251
+ prevX = currentX;
252
+
253
+ prevY = currentY;
254
+
255
+ setTimeout(function(){scroll()},interval);
256
+
257
+ }
258
+
259
+ }
260
+
261
+
262
+
263
+ function getDocumentSize(){
264
+
265
+ return {width:Math.max(document.body.scrollWidth, document.documentElement.scrollWidth), height:Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)};
266
+
267
+ }
268
+
269
+
270
+
271
+ function getWindowSize(){
272
+
273
+ var result = {};
274
+
275
+ if(window.innerWidth){
276
+
277
+ var box = d.createElement('div');
278
+
279
+ with(box.style){
280
+
281
+ position = 'absolute';
282
+
283
+ top = '0px';
284
+
285
+ left = '0px';
286
+
287
+ width = '100%';
288
+
289
+ height = '100%';
290
+
291
+ margin = '0px';
292
+
293
+ padding = '0px';
294
+
295
+ border = 'none';
296
+
297
+ visibility = 'hidden';
298
+
299
+ }
300
+
301
+ d.body.appendChild(box);
302
+
303
+ var width = box.offsetWidth;
304
+
305
+ var height = box.offsetHeight;
306
+
307
+ d.body.removeChild(box);
308
+
309
+ result = {width:width, height:height};
310
+
311
+ }else{
312
+
313
+ result = {width:d.documentElement.clientWidth || d.body.clientWidth, height:d.documentElement.clientHeight || d.body.clientHeight};
314
+
315
+ }
316
+
317
+ return result;
318
+
319
+ }
320
+
321
+
322
+
323
+ function getScrollMaxXY() {
324
+
325
+ if(window.scrollMaxX && window.scrollMaxY){
326
+
327
+ return {x:window.scrollMaxX, y:window.scrollMaxY};
328
+
329
+ }
330
+
331
+ var documentSize = getDocumentSize();
332
+
333
+ var windowSize = getWindowSize();
334
+
335
+ return {x:documentSize.width - windowSize.width, y:documentSize.height - windowSize.height};
336
+
337
+ }
338
+
339
+
340
+
341
+ }());
342
+
343
+
344
+
345
+ ``````
346
+
3
347
  <BのHTMLファイル>
4
348
 
5
349
 

1

コードを追加しました

2019/10/09 06:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,45 @@
1
+ ```
2
+
3
+ <BのHTMLファイル>
4
+
5
+
6
+
7
+ <a href="company/A.html/pageLink04" title="">組織図を追加しました</a></dd>
8
+
9
+
10
+
11
+ ----------------------------------------------------------------------
12
+
13
+ <AのHTMLファイル>
14
+
15
+ :
16
+
17
+ <script type='text/javascript' src='../share/js/scroll.js'></script>
18
+
19
+ :
20
+
21
+ <a id="pageLink04" name="pageLink04"></a>
22
+
23
+ <p>
24
+
25
+ <span>組織図</span></p>
26
+
27
+ <div class="txtTempSet txtTemp6 clearfix">
28
+
29
+ <div style="text-align: center;">
30
+
31
+ <strong>◆組織図</strong><br />
32
+
33
+ <img alt="組織図" src="img/orgimg.jpg" />
34
+
35
+ </div>
36
+
37
+ </div>
38
+
39
+
40
+
41
+ ```
42
+
1
43
  HTMLページ(Aとする)にリンクが複数ありクリックするとその場所までスクロールします。
2
44
 
3
45
  スクロールはJQueryでページをロードした時に動作するものです。