PageSourceSearch

https://lifetapefilm.jp/js/scrollsmoothly.js?20261008230442

js lifetapefilm.jp collected 2026-10-08 23:04:45 UTC 6,172 bytes, 204 lines download raw bytes

1// UTF-8
2/**
3 * scrollsmoothly.js
4 * Copyright (c) 2008 KAZUMiX
5 * http://d.hatena.ne.jp/KAZUMiX/20080418/scrollsmoothly
6 * Licensed under the MIT License:
7 * http://www.opensource.org/licenses/mit-license.php
8 * 
9 * 更新履歴
10 * 2009/02/12
11 * スクロール先が画面左上にならない場合の挙動を修正
12 * 2008/04/18
13 * 公開
14 *
15*/
16
17(function(){
18   var easing = 0.5;
19   var interval = 35;
20   var d = document;
21   var targetX = 0;
22   var targetY = 0;
23   var targetHash = '';
24   var scrolling = false;
25   var splitHref = location.href.split('#');
26   var currentHref_WOHash = splitHref[0];
27   var incomingHash = splitHref[1];
28   var prevX = null;
29   var prevY = null;
30
31   // ドキュメント読み込み完了時にinit()を実行する
32   addEvent(window, 'load', init);
33
34   // ドキュメント読み込み完了時の処理
35   function init(){
36     // ページ内リンクにイベントを設定する
37     setOnClickHandler();
38     // 外部からページ内リンク付きで呼び出された場合
39     if(incomingHash){
40       if(window.attachEvent && !window.opera){
41         // IEの場合はちょっと待ってからスクロール
42         setTimeout(function(){scrollTo(0,0);setScroll('#'+incomingHash);},50);
43       }else{
44         // IE以外はそのままGO
45         scrollTo(0, 0);
46         setScroll('#'+incomingHash);
47       }
48     }
49   }
50
51   // イベントを追加する関数
52   function addEvent(eventTarget, eventName, func){
53     if(eventTarget.addEventListener){
54       // モダンブラウザ
55       eventTarget.addEventListener(eventName, func, false);
56     }else if(window.attachEvent){
57       // IE
58       eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);});
59     }
60   }
61   
62   function setOnClickHandler(){
63     var links = d.links;
64     for(var i=0; i<links.length; i++){
65       // ページ内リンクならスクロールさせる
66       var link = links[i];
67       var splitLinkHref = link.href.split('#');
68       if(currentHref_WOHash == splitLinkHref[0] && d.getElementById(splitLinkHref[1])){
69         addEvent(link, 'click', startScroll);
70       }
71     }
72   }
73
74   function startScroll(event){
75     // リンクのデフォルト動作を殺す
76     if(event){ // モダンブラウザ
77       event.preventDefault();
78       //alert('modern');
79     }else if(window.event){ // IE
80       window.event.returnValue = false;
81       //alert('ie');
82     }
83     // thisは呼び出し元になってる
84     setScroll(this.hash);
85   }
86
87   function setScroll(hash){
88     // ハッシュからターゲット要素の座標をゲットする
89     var targetEle = d.getElementById(hash.substr(1));
90     if(!targetEle)return;
91     //alert(scrollSize.height);
92     // スクロール先座標をセットする
93     var ele = targetEle;
94     var x = 0;
95     var y = 0;
96     while(ele){
97       x += ele.offsetLeft;
98       y += ele.offsetTop;
99       ele = ele.offsetParent;
100     }
101     var maxScroll = getScrollMaxXY();
102     targetX = Math.min(x, maxScroll.x);
103     targetY = Math.min(y, maxScroll.y);
104     targetHash = hash;
105     // スクロール停止中ならスクロール開始
106     if(!scrolling){
107       scrolling = true;
108       scroll();
109     }
110   }
111
112   function scroll(){
113     var currentX = d.documentElement.scrollLeft||d.body.scrollLeft;
114     var currentY = d.documentElement.scrollTop||d.body.scrollTop;
115     var vx = (targetX - currentX) * easing;
116     var vy = (targetY - currentY) * easing;
117     var nextX = currentX + vx;
118     var nextY = currentY + vy;
119     if((Math.abs(vx) < 1 && Math.abs(vy) < 1)
120       || (prevX === currentX && prevY === currentY)){
121       // 目標座標付近に到達していたら終了
122       scrollTo(targetX, targetY);
123       scrolling = false;
124       location.hash = targetHash;
125       prevX = prevY = null;
126       return;
127     }else{
128       // 繰り返し
129       scrollTo(parseInt(nextX), parseInt(nextY));
130       prevX = currentX;
131       prevY = currentY;
132       setTimeout(function(){scroll()},interval);
133     }
134   }
135   
136   function getDocumentSize(){
137     return {width:Math.max(document.body.scrollWidth, document.documentElement.scrollWidth), height:Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)};
138   }
139
140   function getWindowSize(){
141     var result = {};
142     if(window.innerWidth){
143       var box = d.createElement('div');
144       with(box.style){
145         position = 'absolute';
146         top = '0px';
147         left = '0px';
148         width = '100%';
149         height = '100%';
150         margin = '0px';
151         padding = '0px';
152         border = 'none';
153         visibility = 'hidden';
154       }
155       d.body.appendChild(box);
156       var width = box.offsetWidth;
157       var height = box.offsetHeight;
158       d.body.removeChild(box);
159       result = {width:width, height:height};
160     }else{
161       result = {width:d.documentElement.clientWidth || d.body.clientWidth, height:d.documentElement.clientHeight || d.body.clientHeight};
162     }
163     return result;
164   }
165   
166   function getScrollMaxXY() {
167     if(window.scrollMaxX && window.scrollMaxY){
168       return {x:window.scrollMaxX, y:window.scrollMaxY};
169     }
170     var documentSize = getDocumentSize();
171     var windowSize = getWindowSize();
172     return {x:documentSize.width - windowSize.width, y:documentSize.height - windowSize.height};
173   }
174   
175 }());
176 
177
178$(function(){
179	var setImg = '.img-intro01';
180	var fadeSpeed = 1500;
181	var switchDelay = 5000;
182
183	$(setImg).children('img').css({opacity:'0'});
184	$(setImg + ' img:first').stop().animate({opacity:'1',zIndex:'20'},fadeSpeed);
185
186	setInterval(function(){
187		$(setImg + ' :first-child').animate({opacity:'0'},fadeSpeed).next('img').animate({opacity:'1'},fadeSpeed).end().appendTo(setImg);
188	},switchDelay);
189});
190
191
192$(function(){
193	var setImg = '.img-intro02';
194	var fadeSpeed = 1500;
195	var switchDelay = 5000;
196
197	$(setImg).children('img').css({opacity:'0'});
198	$(setImg + ' img:first').stop().animate({opacity:'1',zIndex:'20'},fadeSpeed);
199
200	setInterval(function(){
201		$(setImg + ' :first-child').animate({opacity:'0'},fadeSpeed).next('img').animate({opacity:'1'},fadeSpeed).end().appendTo(setImg);
202	},switchDelay);
203});
204

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.