app/template/default/index.twig line 1

Open in your IDE?
  1. {#
  2. This file is part of EC-CUBE
  3. Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  4. http://www.ec-cube.co.jp/
  5. For the full copyright and license information, please view the LICENSE
  6. file that was distributed with this source code.
  7. #}
  8. {% extends 'default_frame.twig' %}
  9. {% set body_class = 'front_page' %}
  10. {% block stylesheet %}
  11.     <style>
  12.         .slick-slider {
  13.             margin-bottom: 30px;
  14.         }
  15.         .slick-dots {
  16.             position: absolute;
  17.             bottom: -45px;
  18.             display: block;
  19.             width: 100%;
  20.             padding: 0;
  21.             list-style: none;
  22.             text-align: center;
  23.         }
  24.         .slick-dots li {
  25.             position: relative;
  26.             display: inline-block;
  27.             width: 20px;
  28.             height: 20px;
  29.             margin: 0 5px;
  30.             padding: 0;
  31.             cursor: pointer;
  32.         }
  33.         .slick-dots li button {
  34.             font-size: 0;
  35.             line-height: 0;
  36.             display: block;
  37.             width: 20px;
  38.             height: 20px;
  39.             padding: 5px;
  40.             cursor: pointer;
  41.             color: transparent;
  42.             border: 0;
  43.             outline: none;
  44.             background: transparent;
  45.         }
  46.         .slick-dots li button:hover,
  47.         .slick-dots li button:focus {
  48.             outline: none;
  49.         }
  50.         .slick-dots li button:hover:before,
  51.         .slick-dots li button:focus:before {
  52.             opacity: 1;
  53.         }
  54.         .slick-dots li button:before {
  55.             content: " ";
  56.             line-height: 20px;
  57.             position: absolute;
  58.             top: 0;
  59.             left: 0;
  60.             width: 12px;
  61.             height: 12px;
  62.             text-align: center;
  63.             opacity: .25;
  64.             background-color: black;
  65.             border-radius: 50%;
  66.         }
  67.         .slick-dots li.slick-active button:before {
  68.             opacity: .75;
  69.             background-color: black;
  70.         }
  71.         .slick-dots li button.thumbnail img {
  72.             width: 0;
  73.             height: 0;
  74.         }
  75.         .slick-slide img {
  76.             width: 100%;
  77.         }
  78.     </style>
  79. {% endblock %}
  80. {% block javascript %}
  81.     <script>
  82.         // 初回訪問のみで実行するかどうか
  83.         const doAct = false
  84.         const changeTime = 5000
  85.         const body = document.getElementsByTagName("body")[0]
  86.         const sliderItems = document.querySelectorAll(".sliderItem")
  87.         let autoSlide;
  88.         // アニメーションを実行する関数
  89.         // スライダーNavの要素を追加する
  90.         // id属性で要素を取得
  91.         const sliderNavBlock = document.getElementById('sliderNavBlock');
  92.         for (let i=0;i<sliderItems.length; i++) {
  93.             // 新しいHTML要素を作成
  94.             const new_element = document.createElement('span');
  95.             new_element.classList.add('sliderNav')
  96.             // 指定した要素の中の末尾に挿入
  97.             sliderNavBlock.appendChild(new_element);
  98.         }
  99.         // activeのindex情報は保存しておこう
  100.         let activeIndex = 0
  101.         // スライダーのボタンを押したときの動作
  102.         const sliderNavs = document.querySelectorAll(".sliderNav")
  103.         sliderNavs.forEach((nav, index) => {
  104.                 nav.addEventListener("click", function (e) {
  105.                 resetTime()
  106.                 i = index + 1
  107.                 changeSlider(index)
  108.                 //ボタン表示クリック後動いを止める場合
  109.                 clearTimeout(timeoutID);
  110.             })
  111.         })
  112.         // ボタン押された時の
  113.         const changeSlider = (index) => {
  114.             // 一回今のactiveIndex以外はactive外す。現在のはz-index=1に
  115.             sliderItems.forEach((item, index) => (index === activeIndex ? item.style.zIndex = 1 : item.classList.remove("active")))
  116.             // 対象のスライダーにactiveをつけてz-indexを2にする
  117.             // アニメーションを再実行するため.1s待ってからクラスを付与
  118.             setTimeout(function () {
  119.                 sliderItems[index].classList.add('active')
  120.                 sliderItems[index].style.zIndex = 2
  121.             }, 100)
  122.             // スライダーのボタンからactiveクラスを一回全部外して対象のボタンにactiveをつける
  123.             sliderNavs.forEach((nav) => {nav.classList.remove("active")})
  124.                 sliderNavs[index].classList.add("active")
  125.                 activeIndex = index
  126.         }
  127.         // 読み込み後の自動スライダーを定時実行するための関数
  128.         // 開始時間
  129.         let startTime = Date.now();
  130.         // タイムアウトID
  131.         let timeoutID;
  132.         let currentTime;
  133.         let i = 1
  134.         // 通常スライダー関数
  135.         const startStaticSlider = () => {
  136.             currentTime = new Date(Date.now() - startTime);
  137.             const s = currentTime.getSeconds();
  138.             timeoutID = setTimeout(startStaticSlider, 100);
  139.             // 画像の枚数に達したら終了
  140.             if (i === sliderItems.length) {
  141.                 setTimeout(completeAnimation, 4000);
  142.             }
  143.             // 4sたったら次のスライダーに
  144.             if (s === changeTime/1000) {
  145.                 staticNextSlider()
  146.                 resetTime()
  147.                 i++
  148.             }
  149.         }
  150.         const resetTime = () => {
  151.             startTime = Date.now()
  152.         }
  153.         // 読み込み後の自動スライダー
  154.         const staticNextSlider = () => {
  155.             const navCount = sliderNavs.length
  156.             let nextIndex = (activeIndex + 1 >= navCount ? 0 : activeIndex + 1)
  157.             // console.log(nextIndex)
  158.             changeSlider(nextIndex)
  159.             activeIndex = nextIndex
  160.         }
  161.         const sliderStop = () => {
  162.             clearTimeout(timeoutID);
  163.         }
  164.         const navBtnShow = () => {
  165.         sliderNavBlock.classList.add('show')
  166.         }
  167.         // fixedを外すためのアニメーション
  168.         const completeAnimation = () => {
  169.             document.getElementById("sliderFV").classList.add("complete")
  170.             sliderNavBlock.classList.add('show')
  171.         }
  172.         const completeSkipAnimation = () => {
  173.             document.getElementById("sliderFV").classList.add("complete")
  174.             document.getElementById("sliderFV").classList.remove("skip")
  175.             //ボタンを表示させる場合
  176.             sliderNavBlock.classList.add('show')
  177.         }
  178.         // 読み込んだら、doActの値によって実行を切り替え
  179.         window.onload = function () {
  180.             completeAnimation()
  181.             sliderItems[0].classList.add("active")
  182.             changeSlider(0)
  183.             startTime = Date.now();
  184.             startStaticSlider()
  185.         }
  186.     </script>
  187. {% endblock javascript %}
  188. {% block main %}
  189. <section class="sliderFV" id="sliderFV">
  190.     <div class="sliderFV__title">
  191.         <p class="sliderFV__title__sub">いい環境はいい職場から</p>
  192.         <h1 class="sliderFV__title__main">“その先へ”JUKEBOX</h1>
  193.     </div>
  194.   <div class="scroll-text">
  195.     <p class="scroll-text__inner">SCROLL</p>
  196.     <p class="scroll-text__line"></p>
  197.   </div>
  198.   <ul class="sliderList">
  199.     <li class="sliderItem active" style="z-index: 2;">
  200.         <picture class="fvImage">
  201.           <source srcset="{{ asset('assets/img/top/slider/kv01_sp.jpg', "user_data") }}" media="(max-width: 768px)">
  202.           <img src="{{ asset('assets/img/top/slider/kv01.jpg', "user_data") }}" alt="">
  203.         </picture>
  204.     </li>
  205.     <li class="sliderItem">
  206.         <picture class="fvImage">
  207.           <source srcset="{{ asset('assets/img/top/slider/kv02_sp.jpg', "user_data") }}" media="(max-width: 768px)">
  208.           <img src="{{ asset('assets/img/top/slider/kv02.jpg', "user_data") }}" alt="">
  209.         </picture>
  210.     </li>
  211.     <li class="sliderItem">
  212.         <picture class="fvImage">
  213.           <source srcset="{{ asset('assets/img/top/slider/kv03_sp.jpg', "user_data") }}" media="(max-width: 768px)">
  214.           <img src="{{ asset('assets/img/top/slider/kv03.jpg', "user_data") }}" alt="">
  215.         </picture>
  216.     </li>
  217.     <li class="sliderItem">
  218.         <picture class="fvImage">
  219.           <source srcset="{{ asset('assets/img/top/slider/kv04_sp.jpg', "user_data") }}" media="(max-width: 768px)">
  220.           <img src="{{ asset('assets/img/top/slider/kv04.jpg', "user_data") }}" alt="">
  221.         </picture>
  222.     </li>
  223.   </ul>
  224.   <div class="sliderNavBlock" id="sliderNavBlock"></div>
  225. </section>
  226. {% endblock %}