PageSourceSearch

https://keeper-japan.jp/js/common.js?var=01

js keeper-japan.jp collected 2026-10-08 08:31:41 UTC 10,123 bytes, 530 lines download raw bytes

1// JavaScript Document
2
3$(document).ready(function() {
4	
5	
6	
7		
8// gsap登録
9gsap.registerPlugin(ScrollTrigger);	
10	
11	
12// 演出対象となる要素を取得
13gsap.utils.toArray(".anime_gasp").forEach((el) => {
14  gsap.from(el, {
15    y: 20,
16    opacity: 0,
17   duration: 1,
18	  delay:0.25,
19	  scaleX: 1, 
20	   scaleY: 1, 
21    ease: "power1.out",
22    // スクロールトリガーの設定
23    scrollTrigger: {
24      trigger: el, // 対象物
25	/*toggleActions: "restart pause resume pause"*/
26		//toggleActions: "play complete reverse reset"
27		toggleActions: "play none none reset"
28    },
29	  
30	  
31  });
32});	
33	
34	
35gsap.utils.toArray(".anime_gasp2").forEach((el2) => {
36  gsap.from(el2, {
37    y: 0,
38    opacity: 0,
39    duration: 0.5,
40	  delay:0.25,
41	  scaleX: 2, 
42	   scaleY: 2, 
43    ease: "expo.inOut",
44    // スクロールトリガーの設定
45    scrollTrigger: {
46      trigger: el2, // 対象物
47	/*toggleActions: "restart pause resume pause"*/
48	//	toggleActions: "play complete reverse reset"
49		toggleActions: "play none none reset"
50    },
51	  
52	  
53  });
54});	
55
56
57/*g-nav*/
58
59
60$(".openbtn").click(function () {
61	$(this).toggleClass('active');
62	$("#menuIcon").toggleClass('nc-int-icon-state-b');
63	
64    $("#g-nav").toggleClass('panelactive');
65});
66
67$("#g-nav a").click(function () {
68    $(".openbtn").removeClass('active');
69    $("#g-nav").removeClass('panelactive');
70	$("#menuIcon").removeClass('nc-int-icon-state-b');
71});
72
73
74/*bt underline*/
75
76document.querySelectorAll(".list_item a").forEach((element) => {
77  const underLineElement = element.querySelector(".underline");
78
79  // ホバー開始
80  const enterAnimation = Tween24.tween(
81    underLineElement,
82    0.2,
83    Ease24._2_QuadOut
84  ).width("100%");
85
86  // ホバー終了
87  const leaveAnimation = Tween24.tween(
88    underLineElement,
89    0.5,
90    Ease24._2_QuadOut
91  ).width("0%");
92
93  // イベントをaタグに
94  Event24.add(
95    element,
96    Event24.MOUSE_ENTER,
97    Tween24.func(() => {
98      leaveAnimation.skip();
99      enterAnimation.play();
100    })
101  );
102  Event24.add(
103    element,
104    Event24.MOUSE_LEAVE,
105    Tween24.func(() => {
106      enterAnimation.skip();
107      leaveAnimation.play();
108    })
109  );
110});
111
112
113
114
115/*card animation*/
116
117/**
118 * 交差時
119 */
120const intersectionCallback = (entries) => {
121  entries.forEach((entry, index) => {
122    if (entry.isIntersecting) {
123      // 交差した要素のdata属性からtweenIdを取得
124      const tweenId = entry.target.dataset.tweenId;
125      // 200ミリ秒ずつ遅延
126      setTimeout(() => {
127        Tween24.playById(tweenId);
128      }, 200 * index);
129    }
130  });
131};
132
133/**
134 * Intersection Observerを作成
135 */
136const observer = new IntersectionObserver(intersectionCallback, {
137  // 画面下よりも少し上に範囲を設定
138  rootMargin: "0px 0px -15%",
139});
140
141// カードコンポーネント
142const cardElements = document.querySelectorAll(".cardList__item");
143
144
145// アニメーションを作成
146cardElements.forEach((cardElement, index) => {
147  const children = cardElement.querySelectorAll("*");
148  Tween24.prop(Array.from(children)).opacity(0).y(20).play();
149
150  //
151  const fadeTween = Tween24.tween(Array.from(children), 0.75, Ease24._4_QuartOut)
152    .opacity(1)
153    .y(0);
154
155  // 個々のフェード
156  const cardTween = Tween24.lag(0.1, fadeTween);
157
158  // Tweenアニメーションにidを付与
159  cardTween.id(`${index}`);
160
161  // Intersection Observer側から読み出せるようにdata属性にセット
162  cardElement.dataset.tweenId = `${index}`;
163
164  // オブザーバーで監視
165  observer.observe(cardElement);
166	
167});
168
169
170
171
172
173
174/*class animation*/
175
176//交差を監視する要素
177const boxes = document.querySelectorAll(".anime_a");
178
179const options = {
180  root: null, // 今回はビューポートをルート要素とする
181  //rootMargin: "-50% 0px", // ビューポートの中心を判定基準にする
182	 rootMargin: "0px 0px -10%",
183  threshold: 0 // 閾値は0
184};
185const observer2 = new IntersectionObserver(doWhenIntersect, options);
186// それぞれのboxを監視する
187boxes.forEach(box => {
188  observer2.observe(box);
189	
190});
191
192/**
193 * 交差したときに呼び出す関数
194 */
195function doWhenIntersect(entries) {
196  // 交差検知をしたもののなかで、isIntersectingがtrueのDOMを色を変える関数に渡す
197  entries.forEach(entry => {
198    if (entry.isIntersecting) {
199      animation_a(entry.target);
200		observer2.unobserve(entry.target); //以降の監視を停止
201    }
202  });
203}
204
205
206
207
208
209
210
211
212
213
214
215
216/*animation function*/
217
218
219function animation_a (element) {
220	
221	
222	Tween24.prop(element).opacity(0).y(100).play();
223	
224	const anime_a = Tween24.lag(0,
225
226  Tween24.tween(element, 2, Ease24._4_QuartOut).y(0).opacity(1)
227);
228 
229Tween24.serial(anime_a).play();
230	
231	
232}
233
234
235
236
237
238/*スクロール*/
239
240
241	
242	
243   
244
245
246
247
248
249//ページ内リンク
250$('.pageScroll').bind('click',function(event){
251	
252
253	
254	event.preventDefault();
255	event.stopPropagation();
256	
257	val = $(this).attr("href"); // valueの取得
258	
259	contentsScroll(val,-60);
260    
261  //  closeModal();
262	
263
264	//return false;  //delegateもstop
265}); 
266    
267    
268    
269
270//ページ内リンク
271$('.pageScroll2').bind('click',function(event){
272	
273	event.preventDefault();
274	event.stopPropagation();
275	
276	val = $(this).attr("href"); // valueの取得
277	
278	contentsScroll(val,-0);
279    
280     // アコーディオンopen  
281    
282   
283    
284    var tempp2 = val+" .ac-trigger";
285     
286    
287    $(tempp2).next().slideDown(300, function () {
288               });
289 // $(val).addClass(_ACTIVE);
290    
291    
292    
293//    closeModal();
294	
295
296	//return false;  //delegateもstop
297}); 
298    
299    
300    
301    
302    
303    
304    
305    
306$('.linkTop').bind('click',function(event){
307	
308linkTop();
309	
310
311	//return false;  //delegateもstop
312}); 
313    
314    
315    
316
317
318//スクロール処理
319
320var ifscroll = false; //スクロールチェック
321
322function contentsScroll(scTarget,scNum) {
323	
324	//alert (scTarget);	
325	if( ifscroll == false) {
326		
327		ifscroll = true;
328      $('html, body').stop().animate({
329               scrollTop: $(''+scTarget).offset().top+scNum
330					
331                    }, 1000,'easeInOutQuart',function() {ifscroll = false;}); //jswing,easeOutQuad,easeInOutQuart
332	}
333}
334
335
336	
337	function linkTop(){
338	
339$.when(	
340
341	
342).done(function() {
343	
344	$(document.body).animate({scrollTop: 0}, 600,'easeInOutQuart');
345	
346});
347		
348		
349	}
350
351
352
353
354
355//modaal モーダル設定
356    
357    
358    
359        //modal trailer まとめ
360	
361$(document).ready(function () {
362  $(".trailer").each(function (index) {
363    const videoId = $(this).data("video-id"); // 動画IDを取得
364    const thumbnailType = $(this).data("thumbnail-type"); // サムネイルタイプを取得
365    const trailerId = `trailer${index + 1}`; // 動的にモーダルIDを生成
366
367    // サムネイルURLを設定
368    $(this)
369      .find("img")
370      .attr("src", `http://img.youtube.com/vi/${videoId}/${thumbnailType}.jpg`);
371
372    // 動的にモーダル用のコンテンツを生成
373    const modalContent = `
374      <div id="${trailerId}" class="moddal-now" style="display:none;">
375        <div class="youtube">
376          <iframe 
377            width="560" 
378            height="315" 
379            src="https://www.youtube.com/embed/${videoId}?wmode=transparent&autoplay=0&loop=0&rel=0&vq=highres&autohide=1" 
380            frameborder="0" 
381            allowfullscreen>
382          </iframe>
383        </div>
384      </div>
385    `;
386
387    // Bodyにモーダルコンテンツを追加
388    if (!$(`#${trailerId}`).length) {
389      $("body").append(modalContent);
390    }
391
392    // モーダル設定
393    $(this).attr("href", `#${trailerId}`).modaal({
394      start_open: false,
395      type: "inline",
396      content_source: `#${trailerId}`,
397      close_text: "",
398      overlay_close: true,
399      fullscreen: false,
400      background: "#000000",
401      overlay_opacity: 0.95,
402      before_open: function () {
403        // 他のモーダルを閉じる
404        $(".trailer").not(`[href="#${trailerId}"]`).modaal("close");
405      },
406    });
407  });
408});
409    
410    
411    
412
413$(".comment").modaal({
414    content_source: '#modalcomment',
415	close_text:"",
416	background:"#000000",
417	overlay_opacity:0.95
418	//hide_close:true
419});
420	
421	
422		$(document).ready(function() {
423
424	$(".trailer1").modaal({
425		start_open: false,
426	type: 'inline',
427    content_source: '#trailer1',
428	close_text:"",
429
430		overlay_close:true,
431		fullscreen:false,
432			background:"#000000",
433	overlay_opacity:0.95,
434		
435				before_open: function() {
436   $('.trailer2,.trailer3').modaal('close');
437						
438	},	
439	
440	//hide_close:true
441});
442	
443	
444		$(".trailer2").modaal({
445	type: 'inline',
446    content_source: '#trailer2',
447	close_text:"",
448
449
450		//overlay_close:false,
451		fullscreen:false,
452		background:"#000000",
453	overlay_opacity:0.95,
454			
455							before_open: function() {
456 $('.trailer1,.trailer3').modaal('close');
457						
458	},	
459	
460	//hide_close:true
461});
462	
463	
464			$(".trailer3").modaal({
465	type: 'inline',
466    content_source: '#trailer3',
467	close_text:"",
468
469
470		//overlay_close:false,
471		fullscreen:false,
472		background:"#000000",
473	overlay_opacity:0.95,
474			
475							before_open: function() {
476     $('.trailer1,.trailer2').modaal('close');
477						
478	},	
479	
480	//hide_close:true
481});
482	
483	
484	});
485
486
487//trailer自動open時はコメントアウト、top.jsで
488/*$('.modaal-video').modaal({type: 'video',
489						    start_open:true,
490						   close_text:"",
491						   background:"#000000",
492						   overlay_close:true,
493						   overlay_opacity:0.95});*/
494
495
496
497
498
499/*billing area*/
500
501
502$(".footer__billing-bt").click(function () {//ボタンがクリックされたら
503	event.preventDefault();
504  //$(this).toggleClass('active');//ボタン自身に activeクラスを付与し
505    $("#billing").toggleClass('panelactive');//ナビゲーションにpanelactiveクラスを付与
506	
507});
508
509$(".billing__set").click(function () {//ナビゲーションのリンクがクリックされたら
510	event.preventDefault();
511   // $(".openbtn1").removeClass('active');//ボタンの activeクラスを除去し
512    $("#billing").removeClass('panelactive');//ナビゲーションのpanelactiveクラスも除去
513});
514	
515	
516});//ready(function() END	
517
518	
519	
520/*var app = new Vue({
521  el: '#app',
522  data: {
523    message: 'Hello Vue!'
524  },
525  mounted: function() {
526     $('#btn').click(function() {
527         $("#hogehoge").text("テキスト挿入");
528     });
529  }
530})*/

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.