PageSourceSearch

https://www.ronso.co.jp/js/17/top.js?u=2026031317

js ronso.co.jp collected 2026-09-25 02:34:02 UTC 13,699 bytes, 413 lines download raw bytes

1document.addEventListener('DOMContentLoaded', function () {
2  // @media screen and (max-width: 768px) と同じ
3  var mql = window.matchMedia('screen and (max-width: 768px)')
4  var list = $('#pickup .list ul')
5  var pc = true
6  var pickup = false
7
8  // function checkBreakPoint(mql) {
9  // 	if (mql.matches) {
10  // 		// スマホ向け
11  // 		pc = false
12  // 		$('#pickup .list').removeAttr('style')
13  // 		list.removeAttr('style')
14  // 		var cnt = list.find('li').length
15  // 		list.width((cnt + 1) * window.innerWidth)
16  // 		list.css('left', window.innerWidth / 4 * -1 + 'px')
17  // 	} else {
18  // 		// PC向け
19  // 		pc = true
20  // 		list.removeAttr('style')
21  // 		var slideWrapperHeight = $('#pickup .slideWrapper').outerHeight()
22  // 		$('#pickup .list').css({height : slideWrapperHeight - 60})
23  // 		$('#pickup .arrows .next').css({ top : slideWrapperHeight -20})
24  // 	}
25  // }
26
27  // ブレイクポイントの瞬間に発火
28  // mql.addListener(checkBreakPoint)
29
30  // 初回チェック
31  // checkBreakPoint(mql)
32
33  $(function () {
34    // slider()
35    // $('#pickup .author span:not(":last-child")').after(',')
36    // if(pickup) {
37    // 	if(pc) {
38    // 		// PC向け
39    // 		var slideWrapperHeight = $('#pickup .slideWrapper').outerHeight()
40    // 		$('#pickup .list').css({height : slideWrapperHeight - 60})
41    // 		$('#pickup .arrows .next').css({ top : slideWrapperHeight -20})
42    // 	} else {
43    // 		// スマホ向け
44    // 		var cnt = list.find('li').length
45    // 		list.width((cnt + 1) * window.innerWidth)
46    // 		list.css('left', window.innerWidth / 4 * -1 + 'px')
47    // 	}
48    // }
49
50    // ビッグバナー対応
51    if ($('#eyecatch').length) {
52      if ($('#eyecatch .swiper-slide').length > 1) {
53        var galleryTop = new Swiper('#eyecatch .swiper-container', {
54          loop: true, // 繰り返し指定
55          centeredSlides: true,
56          autoplay: {
57            // 10秒後に次の画像へ
58            delay: 10000,
59            // ユーザー操作後に自動再生を再開する
60            disableOnInteraction: false
61          },
62          autoHeight: true,
63          spaceBetween: 0,
64          // slidesPerView: 3,
65          pagination: {
66            // 円形のページネーションを有効にする
67            el: '.swiper-pagination',
68            // クリックを有効にする
69            clickable: true,
70            type: 'bullets'
71          },
72          navigation: {
73            nextEl: '#eyecatch .swiper-button-next',
74            prevEl: '#eyecatch .swiper-button-prev'
75          },
76          breakpoints: {
77            768: {
78              slidesPerView: 1,
79              spaceBetween: 0
80            }
81          }
82        })
83        $('#eyecatch').addClass('show')
84      } else {
85        // バナー画像が1つ → 静的な
86        $('#eyecatch').addClass('static')
87        $('#eyecatch').addClass('show')
88      }
89    }
90
91    if ($('#pickup').length) {
92      if ($('#pickup .slider .swiper-slide').length > 1) {
93        var pickupSliderThumbs = new Swiper('#pickup .slider-thumbnail', {
94          direction: 'vertical',
95          loop: true,
96          loopAdditionalSlides: $('#pickup .slider .swiper-slide').length, // スライダーの要素数を指定
97          centeredSlides: true,
98          slidesPerView: 3,
99          spaceBetween: 10,
100          slideToClickedSlide: true
101        })
102
103        var pickupSlider = new Swiper('#pickup .slider', {
104          loop: true,
105          loopAdditionalSlides: $('#pickup .slider-thumbnail .swiper-slide').length, // サムネイルの要素数を指定
106          centeredSlides: true,
107          autoplay: {
108            delay: 10000,
109            disableOnInteraction: false
110          },
111          autoHeight: true,
112          slidesPerView: 1,
113          spaceBetween: 0,
114          navigation: {
115            nextEl: '#pickup .swiper-button-next',
116            prevEl: '#pickup .swiper-button-prev'
117          },
118          breakpoints: {
119            768: {
120              slidesPerView: 2.2,
121              spaceBetween: 40
122            }
123          }
124        })
125
126        // メインのスライダーとサムネイルを連動させる
127        pickupSlider.controller.control = pickupSliderThumbs
128        pickupSliderThumbs.controller.control = pickupSlider
129        $('#pickup').addClass('show')
130      } else {
131        // 要素が1つ → 静的な
132        $('#pickup').addClass('static')
133        $('#pickup').addClass('show')
134      }
135    }
136  })
137
138  // 今日が出版記念日の本
139  const dateBookEl = document.querySelector('#date-book-slide .swiper-container')
140  if (dateBookEl !== null) {
141    new Swiper(dateBookEl, {
142      loop: true,
143      allowTouchMove: true,
144      autoplay: {
145        delay: 10000,
146        disableOnInteraction: false
147      },
148      navigation: {
149        prevEl: dateBookEl.querySelector('.swiper-control-button-prev'),
150        nextEl: dateBookEl.querySelector('.swiper-control-button-next')
151      }
152    })
153  }
154
155  // sliderここから
156  function slider () {
157    var main = $('<ul>')
158    var titles = $('<ul>')
159    var idx = 0
160    var tm
161    var intervalTime = 3500
162    var entryLength = list.children().length
163    init()
164
165    if (entryLength > 1) {
166      pickup = true
167      auto()
168      $('#pickup .arrows div:not(".active")').on('click', function () {
169        var _this = $(this)
170        if (_this.is('.next')) {
171          slideExec(idx + 1)
172        }else {
173          slideExec(idx - 1)
174        }
175        auto()
176      })
177      $('#pickup .paginator span').on('click', function () {
178        slideExec($('#pickup .paginator span').index(this))
179        auto()
180      })
181      $('#pickup a, #pickup p, #pickup .paginator span, #pickup .arrows div').on({
182        'mouseenter': function () {
183          clearInterval(tm)
184        },
185        'mouseleave': function () {
186          auto()
187        }
188      })
189    } else {
190      // スライドしない用のスタイル適応
191      $('#pickup').addClass('static')
192    }
193
194    function slideExec (targetIdx) {
195      if (!main.is(':animated') && !list.is(':animated')) {
196        if (targetIdx != idx) {
197          idx = targetIdx
198        }
199        if (pc) {
200          // PC向け
201          $.when(
202            main.animate({left: -230 * idx}, {easing: 'linear', duration: 256}),
203            list.animate({top: -86 * idx}, {easing: 'linear', duration: 256})
204          ).done(function () {
205            if (idx === -1) {
206              idx = entryLength - 1
207            }else if (idx >= entryLength) {
208              idx = 0
209            }
210            main.css({left: -230 * idx})
211            list.css({top: -86 * idx})
212
213            titles.children().hide()
214            titles.children().eq(idx + 1).css({'margin-top': -5, 'display': 'block', 'opacity': 0}).animate({opacity: 1, 'margin-left': 0}, {easing: 'linear', duration: 256})
215          })
216        } else {
217          // スマホ向け
218          var cnt = list.find('li').length - 3
219          var lft = window.innerWidth / 4 * -1 - window.innerWidth / 2 * idx
220          list.animate({left: lft}, {easing: 'linear', duration: 256, complete: function () {
221              if (idx >= cnt) {
222                // 位置のリセット
223                idx = 0
224                list.css({left: window.innerWidth / 4 * -1})
225              }
226          }})
227        }
228
229        $('#pickup .paginator span').removeClass('cur')
230        $('#pickup .paginator span').eq(idx >= entryLength ? 0 : idx).addClass('cur')
231      }
232    }
233    function auto () {
234      clearInterval(tm)
235      tm = setInterval(function () {
236        slideExec(idx + 1)
237      }, intervalTime)
238      $('#pickup').focus(function () {
239        clearInterval(tm)
240      })
241    }
242    function init () {
243      if (entryLength > 1) {
244        createElements()
245        createControls()
246        sliderWidthFIX()
247      }else {
248        list.children().each(function () {
249          var entry = $(this).clone()
250          var image = $('.image', entry)
251          var name = $('.ttl', entry)
252          var author = $('.author', entry)
253          var price = $('.price', entry)
254          var outline = $('.outline', entry)
255          var btn = $('.btn', entry)
256          var title = $('<li>')
257          main.append($('<li>').append(image))
258          title.append(name)
259          title.append(author)
260          title.append(price)
261          title.append(outline)
262          title.append(btn)
263          titles.append(title)
264        })
265
266        titles.find('li').not(':eq(' + idx + ')').hide()
267
268        $('#pickup .content').prepend($('<div class="mainView">').append(main))
269        $('#pickup .textsView').prepend($('<div class="titles">').append(titles))
270      }
271
272      function createElements () {
273        list.children().each(function () {
274          var entry = $(this).clone()
275          var image = $('.image', entry)
276          var name = $('.ttl', entry)
277          var author = $('.author', entry)
278          var price = $('.price', entry)
279          var outline = $('.outline', entry)
280          var btn = $('.btn', entry)
281          var title = $('<li>')
282          main.append($('<li>').append(image))
283          title.append(name)
284          title.append(author)
285          title.append(price)
286          title.append(outline)
287          title.append(btn)
288          titles.append(title)
289        })
290
291        titles.find('li').not(':eq(' + idx + ')').hide()
292        addLoopElements()
293
294        $('#pickup .content').prepend($('<div class="mainView">').append(main))
295        $('#pickup .textsView').prepend($('<div class="titles">').append(titles))
296      }
297      function createControls () {
298        var paginator = $('<div class="paginator">')
299        var arrows = $('<div class="arrows">')
300
301        for (var i = 0; i < entryLength; i++) {
302          paginator.append($('<span>'))
303        }
304        paginator.children().eq(idx).addClass('cur')
305
306        arrows.append($('<div class="prev">'))
307        arrows.append($('<div class="prev thumbnail">'))
308        arrows.append($('<div class="next">'))
309        arrows.append($('<div class="next thumbnail">'))
310        arrows.append($('<div class="active">'))
311
312        $('#pickup').append(paginator)
313        $('#pickup').find('.wrap').append(arrows)
314      }
315      function sliderWidthFIX () {
316        main.width(main.children().outerWidth(true) * main.children().length)
317      // list.width(list.children().outerWidth(true) * list.children().length)
318      }
319      function addLoopElements () {
320        // 最後の1つを先頭に追加
321        main.prepend(main.children().last().clone())
322        titles.prepend(titles.children().last().clone())
323        list.prepend(list.children().last().clone())
324
325        // 先頭の2つ(2番目、3番め)を最後に追加
326        main.append(main.children().slice(1, 3).clone())
327        list.append(list.children().slice(1, 3).clone())
328      }
329    }
330
331    // 自作 ここから
332    // var slideWidth = $('.list-li').outerWidth(); // .list-liの幅を取得して代入 → width: 50vw
333    // var slideNum = $('.list-li').length;  // .list-liの数を取得して代入 → 現在 = 6
334    // var slideSetWidth = slideWidth * slideNum; // .list-liの幅×数で求めた値を代入 → 50vw * 6 = 300vw
335    // $('.list-ul').css('width', slideSetWidth); // .list-ulのスタイルシートにwidth: slideSetWidthを指定 .list-ul { width: 300vw; }
336
337    // var slideCurrent = 0; // 現在地を示す変数
338
339    // // アニメーションを実行する独自関数
340    // var sliding = function(){
341
342    // 	// slideCurrentが0以下だったら
343    // 	if( slideCurrent < 0 ){
344    // 		slideCurrent = slideNum - 1
345    // 	// slideCurrentがslideNumを超えたら
346    // 	}else if( slideCurrent > slideNum - 1){ // slideCUrrent >= slideNumでも可
347    // 		slideCurrent = 0
348    // 	}
349    // 	$('.list-ul').animate({
350    // 		left: slideCurrent * -slideWidth
351    // 	})
352    // }
353
354    // // 次へボタンが押されたとき
355    // $('.slider-next').click(function(){
356    // 	slideCurrent++
357    // 	sliding()
358    // })
359
360    // $('.slider-prev').click(function(){
361    // 	slideCurrent--
362    // 	sliding()
363    // })
364
365    // $('.slider-add').click(function(){
366    // 	$('.list-ul').append('<div class="list-li">addedSlide</div>')
367    // 	slideNum++
368    // 	slideSetWidth = slideWidth * slideNum
369    // 	$('.list-ul').css('width', slideSetWidth)
370    // })
371
372    // タッチイベント
373    // $(function() {
374    // 	$('#touch').on('touchstart', onTouchStart); //指が触れたか検知
375    // 	$('#touch').on('touchmove', onTouchMove); //指が動いたか検知
376    // 	$('#touch').on('touchend', onTouchEnd); //指が離れたか検知
377    // 	var direction, position
378
379    // 	//スワイプ開始時の横方向の座標を格納
380    // 	function onTouchStart(event) {
381    // 		position = getPosition(event)
382    // 		direction = ''; //一度リセットする
383    // 	}
384
385    // 	//スワイプの方向(left/right)を取得
386    // 	function onTouchMove(event) {
387    // 		if (position - getPosition(event) > 70) { // 70px以上移動しなければスワイプと判断しない
388    // 			direction = 'left'; //左と検知
389    // 		} else if (position - getPosition(event) < -70){  // 70px以上移動しなければスワイプと判断しない
390    // 			direction = 'right'; //右と検知
391    // 		}
392    // 	}
393
394    // 	function onTouchEnd(event) {
395    // 		if (direction == 'right'){
396    // 			slideCurrent--
397    // 			sliding()
398    // 		} else if (direction == 'left'){
399    // 			slideCurrent++
400    // 			sliding()
401    // 		}
402    // 	}
403
404    // 	//横方向の座標を取得
405    // 	function getPosition(event) {
406    // 		return event.originalEvent.touches[0].pageX
407    // 	}
408    // })
409    // 自作 ここまで
410
411  // Swiperで
412  }
413})

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.