PageSourceSearch

https://sugoikeiba-dx.com/js/w_script.js

js sugoikeiba-dx.com collected 2026-10-06 03:25:50 UTC 3,931 bytes, 125 lines download raw bytes

1
2//スライドメニュー
3let scrollY;
4
5function setVh() {
6    const vh = window.innerHeight * 0.01;
7    document.documentElement.style.setProperty('--vh', `${vh}px`);
8}
9window.addEventListener('resize', setVh);
10setVh();
11
12document.addEventListener('DOMContentLoaded', function () {
13    const menuIcon = document.getElementById('menuIcon');
14    const navMenu = document.getElementById('navMenu');
15    const subIcon = document.getElementById('Icon');
16
17    let isOpen = false;
18    menuIcon.addEventListener('click', function () {
19        isOpen = !isOpen;
20
21        navMenu.classList.toggle('open', isOpen);
22      menuIcon.src = isOpen ? '/img/headnav-close.png' : '/img/headnav-menu.png';
23      menuIcon.classList.toggle('is-close', isOpen);
24        subIcon.style.display = isOpen ? 'none' : 'block';
25        subIcon.style.opacity = isOpen ? '0' : '1';
26        subIcon.style.pointerEvents = isOpen ? 'none' : 'auto';
27
28        if (isOpen) {
29            scrollY = window.scrollY;
30            document.body.classList.add('fixed');
31            document.body.style.top = `-${scrollY}px`;
32            document.body.style.overflow = 'hidden';
33        } else {
34            document.body.classList.remove('fixed');
35            document.body.style.removeProperty('top');
36            document.body.style.removeProperty('width'); // ← 念のため
37            window.scrollTo(0, scrollY);
38            document.body.style.overflow = ''; 
39        }
40    });
41});
42
43//スライド実績
44$(function () {
45  function equalizeResultHeights() {
46    const cards = document.querySelectorAll('.result-slider .result-detail');
47    if (!cards.length) return;
48
49    let maxHeight = 0;
50    cards.forEach(card => {
51      card.style.minHeight = '';
52      const h = card.offsetHeight;
53      if (h > maxHeight) maxHeight = h;
54    });
55
56    if (!maxHeight) return;
57    cards.forEach(card => {
58      card.style.minHeight = `${maxHeight}px`;
59    });
60  }
61
62  function debounceEqualize() {
63    clearTimeout(debounceEqualize.timer);
64    debounceEqualize.timer = setTimeout(equalizeResultHeights, 120);
65  }
66
67  // 的中実績スライダー
68  new Swiper(".result-slider", {
69    centeredSlides: true,
70    loop: true,
71    grabCursor: true,
72    autoplay: { delay: 2500, disableOnInteraction: false },
73    slidesPerView: 1,
74    spaceBetween: 16,
75    breakpoints: {
76      0:   { slidesPerView: 1.35, spaceBetween: 10 },
77      480: { slidesPerView: 1.35, spaceBetween: 12 },
78      900: { slidesPerView: 2.0, spaceBetween: 20 },
79      1200:{ slidesPerView: 3.0, spaceBetween: 24 },
80    }
81  });
82
83  equalizeResultHeights();
84  window.addEventListener('load', equalizeResultHeights);
85  window.addEventListener('resize', debounceEqualize);
86
87  // イベントバナー用スライダー
88  (function () {
89    var sliderEl = document.querySelector('.event-slider');
90    if (!sliderEl) return;
91
92    var slides = sliderEl.querySelectorAll('.swiper-wrapper .swiper-slide');
93    var slideCount = slides.length;
94
95    // 1枚しかない場合はDOM上で複製して3枚にする
96    if (slideCount === 1) {
97      var wrapper = sliderEl.querySelector('.swiper-wrapper');
98      if (wrapper && slides[0]) {
99        for (var i = 0; i < 2; i++) {
100          wrapper.appendChild(slides[0].cloneNode(true));
101        }
102      }
103    }
104
105    // 常に同じ設定でスライダーを初期化(ループ有効)
106    new Swiper('.event-slider', {
107      centeredSlides: true,
108      loop: true,
109      grabCursor: true,
110      autoplay: { delay: 4000, disableOnInteraction: false },
111      slidesPerView: 1,
112      spaceBetween: 20,
113      navigation: {
114        nextEl: '.event-slider-next',
115        prevEl: '.event-slider-prev',
116      },
117      breakpoints: {
118        0:   { slidesPerView: 1.25, spaceBetween: 10 },
119        480: { slidesPerView: 1.35, spaceBetween: 12 },
120        768: { slidesPerView: 1.6, spaceBetween: 24 },
121        1200:{ slidesPerView: 2.5, spaceBetween: 32 },
122      },
123    });
124  })();
125});

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.