PageSourceSearch

https://ikigai-movie.com/js/common.js?var=01

js ikigai-movie.com collected 2026-10-05 19:26:52 UTC 8,855 bytes, 451 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$(".comment").modaal({
358    content_source: '#modalcomment',
359	close_text:"",
360	background:"#3F2112",
361	overlay_opacity:0.95
362	//hide_close:true
363});
364	
365	
366  //modal trailer まとめ
367	
368$(document).ready(function () {
369  $(".trailer").each(function (index) {
370    const videoId = $(this).data("video-id"); // 動画IDを取得
371    const thumbnailType = $(this).data("thumbnail-type"); // サムネイルタイプを取得
372    const trailerId = `trailer${index + 1}`; // 動的にモーダルIDを生成
373
374    // サムネイルURLを設定
375    $(this)
376      .find("img")
377      .attr("src", `http://img.youtube.com/vi/${videoId}/${thumbnailType}.jpg`);
378
379    // 動的にモーダル用のコンテンツを生成
380    const modalContent = `
381      <div id="${trailerId}" class="moddal-now" style="display:none;">
382        <div class="youtube">
383          <iframe 
384            width="560" 
385            height="315" 
386            src="https://www.youtube.com/embed/${videoId}?wmode=transparent&autoplay=0&loop=0&rel=0&vq=highres&autohide=1" 
387            frameborder="0" 
388            allowfullscreen>
389          </iframe>
390        </div>
391      </div>
392    `;
393
394    // Bodyにモーダルコンテンツを追加
395    if (!$(`#${trailerId}`).length) {
396      $("body").append(modalContent);
397    }
398
399    // モーダル設定
400    $(this).attr("href", `#${trailerId}`).modaal({
401      start_open: false,
402      type: "inline",
403      content_source: `#${trailerId}`,
404      close_text: "",
405      overlay_close: true,
406      fullscreen: false,
407      background: "#ffffff",
408      overlay_opacity: 0.95,
409      before_open: function () {
410        // 他のモーダルを閉じる
411        $(".trailer").not(`[href="#${trailerId}"]`).modaal("close");
412      },
413    });
414  });
415});
416
417
418
419
420/*billing area*/
421
422
423$(".footer__billing-bt").click(function () {//ボタンがクリックされたら
424	event.preventDefault();
425  //$(this).toggleClass('active');//ボタン自身に activeクラスを付与し
426    $("#billing").toggleClass('panelactive');//ナビゲーションにpanelactiveクラスを付与
427	
428});
429
430$(".billing__set").click(function () {//ナビゲーションのリンクがクリックされたら
431	event.preventDefault();
432   // $(".openbtn1").removeClass('active');//ボタンの activeクラスを除去し
433    $("#billing").removeClass('panelactive');//ナビゲーションのpanelactiveクラスも除去
434});
435	
436	
437});//ready(function() END	
438
439	
440	
441/*var app = new Vue({
442  el: '#app',
443  data: {
444    message: 'Hello Vue!'
445  },
446  mounted: function() {
447     $('#btn').click(function() {
448         $("#hogehoge").text("テキスト挿入");
449     });
450  }
451})*/

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.