app/template/BlackCherry/Block/image_slide_block.twig line 1

Open in your IDE?
  1. {# 画像スライドブロック #}
  2. <div class="ec-sliderRole">
  3.     <div class="main_visual">
  4.         <div class="image-slider">
  5.             
  6.              <!-- スライド0 -->
  7.             <div class="slide-item active">
  8.                     <img src="{{ asset('assets/img/pr/pr_visual.jpg') }}"
  9.                         alt="BlackCherry FV"
  10.                         width="800" 
  11.                         height="400"
  12.                         loading="eager"
  13.                         fetchpriority="high"
  14.                         sizes="(max-width: 768px) 100vw, 80vw"
  15.                     />
  16.             </div>
  17.             
  18.             <!-- スライド1 -->
  19.             <div class="slide-item">
  20.                 <a href="{{ url('product_detail', {'id': 59498}) }}">
  21.                     <img src="{{ asset('assets/img/top/img_bp_spring.png') }}" 
  22.                          alt="スライド1" 
  23.                          width="800" 
  24.                          height="400"
  25.                          loading="lazy"
  26.                          sizes="(max-width: 768px) 100vw, 80vw" />
  27.                 </a>
  28.             </div>
  29.             
  30.             <!-- スライド2 -->
  31.             <div class="slide-item">
  32.                 <a href="{{ url('entry')}}">
  33.                     <img src="{{ asset('assets/img/top/img_entry.png') }}" 
  34.                          alt="スライド2" 
  35.                          width="800" 
  36.                          height="400"
  37.                          loading="lazy"
  38.                          sizes="(max-width: 768px) 100vw, 80vw" />
  39.                 </a>
  40.             </div>
  41.             
  42.             <!-- スライド3 -->
  43.             <div class="slide-item">
  44.                     <img src="{{ asset('assets/img/top/img_point_new.png') }}" 
  45.                          alt="スライド3" 
  46.                          width="800" 
  47.                          height="400"
  48.                          loading="lazy"
  49.                          sizes="(max-width: 768px) 100vw, 80vw" />
  50.             </div>
  51.         </div>
  52.     </div>
  53. </div>
  54. <style>
  55. .main_visual {
  56.     text-align: center;
  57.     margin: 0 auto;
  58.     padding-left: 20px;
  59.     padding-right: 20px;
  60. }
  61. .main_visual img {
  62.     width: 100%;
  63.     height: auto;
  64. }
  65. @media only screen and (min-width: 768px) {
  66.     .main_visual img {
  67.         width: 80%;
  68.         margin: auto;
  69.     }
  70. }
  71. .image-slider {
  72.     position: relative;
  73.     overflow: hidden;
  74. }
  75. .slide-item {
  76.     display: none;
  77.     opacity: 0;
  78.     transition: opacity 1.5s ease-in-out;
  79. }
  80. .slide-item.active {
  81.     display: block;
  82.     opacity: 1;
  83. }
  84. .slide-item img {
  85.     width: 100%;
  86.     height: auto;
  87.     display: block;
  88. }
  89. /* スライダーコントロール */
  90. .slider-controls {
  91.     text-align: center;
  92.     margin-top: 20px;
  93. }
  94. .slider-dots {
  95.     display: inline-block;
  96. }
  97. .slider-dot {
  98.     display: inline-block;
  99.     width: 12px;
  100.     height: 12px;
  101.     border-radius: 50%;
  102.     background-color: #ccc;
  103.     margin: 0 5px;
  104.     cursor: pointer;
  105.     transition: background-color 0.3s;
  106. }
  107. .slider-dot.active {
  108.     background-color: #333;
  109. }
  110. .slider-dot:hover {
  111.     background-color: #666;
  112. }
  113. </style>
  114. <script>
  115. document.addEventListener('DOMContentLoaded', function() {
  116.     const slides = document.querySelectorAll('.slide-item');
  117.     let currentSlide = 0;
  118.     
  119.     // ドットコントロールを作成
  120.     const sliderControls = document.createElement('div');
  121.     sliderControls.className = 'slider-controls';
  122.     const dotsContainer = document.createElement('div');
  123.     dotsContainer.className = 'slider-dots';
  124.     
  125.     for (let i = 0; i < slides.length; i++) {
  126.         const dot = document.createElement('span');
  127.         dot.className = 'slider-dot';
  128.         if (i === 0) dot.classList.add('active');
  129.         dot.addEventListener('click', function() {
  130.             goToSlide(i);
  131.         });
  132.         dotsContainer.appendChild(dot);
  133.     }
  134.     
  135.     sliderControls.appendChild(dotsContainer);
  136.     document.querySelector('.image-slider').appendChild(sliderControls);
  137.     
  138.     // スライド表示関数
  139.     function showSlide(index) {
  140.         slides.forEach(slide => slide.classList.remove('active'));
  141.         document.querySelectorAll('.slider-dot').forEach(dot => dot.classList.remove('active'));
  142.         
  143.         slides[index].classList.add('active');
  144.         document.querySelectorAll('.slider-dot')[index].classList.add('active');
  145.     }
  146.     
  147.     // 指定スライドに移動
  148.     function goToSlide(index) {
  149.         currentSlide = index;
  150.         showSlide(currentSlide);
  151.     }
  152.     
  153.     // 次のスライドに移動
  154.     function nextSlide() {
  155.         currentSlide = (currentSlide + 1) % slides.length;
  156.         showSlide(currentSlide);
  157.     }
  158.     
  159.     // 自動スライド(3秒間隔)
  160.     setInterval(nextSlide, 5000);
  161. });
  162. </script>