templates/home/index.html.twig line 1

Open in your IDE?
  1. {% extends 'base.html.twig' %}
  2. {% block body %}
  3. {# <div class="voile-body"></div> #}
  4. <div class="row section page-accueil" id="intro">
  5.     <div class="col-lg-12 col-md-12 col-sm-12 col-12 no-padding">
  6.         <div class="video-intro">
  7.             {# <img src="/assets/images/image-intro2.jpg" style="width: 100vw;"/> #}
  8.             <div class="row intro image-accueil">
  9.                 <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  10.                 <div class="col-lg-10 col-md-10 col-sm-10 col-10 align-center">
  11.                     {# <h1 class="center blanc" style="opacity: 0;">Penn Kalet Challenge</h1> #}
  12.                     <div>
  13.                         <p class="rise gris">
  14.                             Multi-supports<br />
  15.                         </p>
  16.                         <p class="rise blanc">
  17.                             Toute l'année<br />
  18.                         </p>
  19.                         <p class="rise gris">
  20.                             Tous niveaux<br />
  21.                         </p>
  22.                         <p class="rise blanc">
  23.                             Tout âge<br />
  24.                         </p>
  25.                         <p class="rise gris">
  26.                             Gratuit pour les adhérents<br />
  27.                         </p>
  28.                         <p class="rise blanc">
  29.                             Sécurité et encadrement
  30.                         </p>
  31.                     </div>
  32.                     <h1 class="center">Penn Kalet Challenge</h1>
  33.                     <a data-scroll href="#presentation">
  34.                         <button class="contour-blanc">Découvrir</button>
  35.                     </a>
  36.                 </div>
  37.                 <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  38.             </div>
  39.         </div>
  40.     </div>
  41. </div>
  42. <div class="row section" id="presentation">
  43.     <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  44.     <div class="row col-lg-10 col-md-10 col-sm-1 col-10">
  45.         <div class="col-lg-6 col-md-6 col-sm-12 col-12">
  46.             <div class="carousel2">
  47.                 <div class="carousel2-slides">
  48.                     <img src="/assets/images/carte-secteur-verts.jpg" alt="Carte secteur vert">
  49.                     <img src="/assets/images/carte-secteur-bleus.jpg" alt="Carte secteur bleu 3">
  50.                     <img src="/assets/images/carte-secteurs-noir-et-rouges.jpg" alt="Carte secteurs noirs et rouges">
  51.                 </div>
  52.                 <div class="carousel2-dots">
  53.                     <span class="dot2 active2"></span>
  54.                     <span class="dot2"></span>
  55.                     <span class="dot2"></span>
  56.                 </div>
  57.             </div>
  58.         </div>
  59.         <div class="col-lg-6 col-md-6 col-sm-12 col-12 align-center">
  60.             <h4>À propos</h4>
  61.             <h2>Présentation</h2>
  62.             <p>Un challenge multi-supports, toute l’année, pour devenir le meilleur waterman de l’Ouest Cornouaille
  63.                 : stand up paddle, voile, kayak, planche à voile, kite, foil, nage …
  64.                 33 secteurs sur 100 km de côte Des classements par secteur, support, équipe … Qui aura le meilleur temps
  65.                 ?
  66.                 <br /><br />
  67.                 Encadrement
  68.                 <br />
  69.                 Sécurité sur l’eau et comité de course
  70.                 <br />
  71.                 Gestion de matériel et logistique de transport
  72.                 <br />
  73.                 Bourse aux sponsors pour les + jeunes
  74.                 <br />
  75.                 Classement
  76.                 <br />
  77.                 Accessible aux + sportifs et aux familles
  78.                 <br />
  79.                 Classement par temps et en km
  80.                 <br />
  81.                 Classement par équipe : famille, amis, entreprises …
  82.                 <br />
  83.                 Suivi en ligne des scores et des coureurs
  84.                 <br />
  85.                 Nombreux prix et dotations à gagner</p>
  86.             <br /><br />
  87.             <a href="/sections">
  88.                 <button>Découvrir les sections</button>
  89.             </a>
  90.         </div>
  91.     </div>
  92.     <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  93. </div>
  94. <div class="row section" id="tronçons">
  95.     <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  96.     <div class="row col-lg-10 col-md-10 col-sm-10 col-10">
  97.         <div class="col-lg-12 col-md-12 col-sm-12 col-12 no-padding">
  98.             <h4 class="center">À la une</h4>
  99.             <h2 class="center">Les sections</h2>
  100.             <p class="center">Les 100 km de côte ont été découpées en sections et avec un code couleur pour facilement
  101.                 les différencier. Validez une section verte avant de passer à la suite !<br /><br />
  102.                 Toutes les sections sont en accès libre grâce à notre plateforme et strava pour enregistrer vos temps,
  103.                 vérifier les disponibilités (lien) et contactez l’équipe selon votre choix de section.
  104.             </p>
  105.             <div class="ligneVide"></div>
  106.             <div class="ligneVide"></div>
  107.         </div>
  108.         <div class="col-lg-6 col-md-6 col-sm-12 col-12">
  109.             <div class="tronçon">
  110.                 <div class="encadre-tronçon">
  111.                     <img src="/uploads/pistes/{{PisteVerte.plan|default('')}}" alt="">
  112.                 </div>
  113.                 <div class="ligneVide"></div>
  114.                 <h3>{{PisteVerte.name|default('')}}</h3>
  115.                 <p>A partir de 5 km et en moyenne 6km.
  116.                     <br />
  117.                     Niveau débutant : par ex (logo paddle et kayak et pav)<br />
  118.                 </p>
  119.                 <div class="row pictos-transports">
  120.                     <img src="/assets/images/logo-paddle.png" class="picto-transport" />
  121.                 </div>
  122.                 <p>Encadremet possible ou en accès libre<br />
  123.                     Temps moyen : 1h30 paddle
  124.                 </p>
  125.                 <a href="/sections" rel="dofollow">
  126.                     <span class="toolInverse link">En savoir +</span>
  127.                 </a>
  128.                 <br /><br />
  129.                 <br /><br />
  130.             </div>
  131.         </div>
  132.         <div class="col-lg-6 col-md-6 col-sm-12 col-12">
  133.             <div class="tronçon">
  134.                 <div class="encadre-tronçon">
  135.                     <img src="/uploads/pistes/{{PisteBleue.plan|default('')}}" alt="">
  136.                 </div>
  137.                 <div class="ligneVide"></div>
  138.                 <h3>{{PisteBleue.name|default('')}}</h3>
  139.                 <p>A partir de 8km et en moyenne 13km<br />
  140.                     Niveau intermédiaire<br />
  141.                 </p>
  142.                 <div class="row pictos-transports">
  143.                     <img src="/assets/images/logo-paddle.png" class="picto-transport" />
  144.                     <img src="/assets/images/logo-kayak.png" class="picto-transport" />
  145.                     <img src="/assets/images/logo-pav.png" class="picto-transport" />
  146.                 </div>
  147.                 <p>Encadrement possible ou accès libre sur validation<br />
  148.                     Temps moyens : 2h30 paddle, 1h planche à voile
  149.                 </p>
  150.                 <a href="/sections" rel="dofollow">
  151.                     <span class="toolInverse link">En savoir +</span>
  152.                 </a>
  153.                 <br /><br />
  154.                 <br /><br />
  155.             </div>
  156.         </div>
  157.         <div class="col-lg-6 col-md-6 col-sm-12 col-12">
  158.             <div class="tronçon">
  159.                 <div class="encadre-tronçon">
  160.                     <img src="/uploads/pistes/{{PisteRouge.plan|default('')}}" alt="">
  161.                 </div>
  162.                 <div class="ligneVide"></div>
  163.                 <h3>{{PisteRouge.name|default('')}}</h3>
  164.                 <p>A partir de 20km et en moyenne 28km<br />
  165.                     Niveau confirmé : stand up paddle kayak et planche à voile<br />
  166.                 </p>
  167.                 <div class="row pictos-transports">
  168.                     <img src="/assets/images/logo-paddle.png" class="picto-transport" />
  169.                     <img src="/assets/images/logo-kayak.png" class="picto-transport" />
  170.                     <img src="/assets/images/logo-pav.png" class="picto-transport" />
  171.                 </div>
  172.                 <p>Uniquement avec sécurité<br />
  173.                     Temps moyen : 4h30 kayak, 5h30 sup et 3h pav</p>
  174.                 <a href="/sections" rel="dofollow">
  175.                     <span class="toolInverse link">En savoir +</span>
  176.                 </a>
  177.             </div>
  178.         </div>
  179.         <div class="col-lg-6 col-md-6 col-sm-12 col-12">
  180.             <div class="tronçon">
  181.                 <div class="encadre-tronçon">
  182.                     <img src="/uploads/pistes/{{PisteNoire.plan|default('')}}" alt="">
  183.                 </div>
  184.                 <div class="ligneVide"></div>
  185.                 <h3>{{PisteNoire.name|default('')}}</h3>
  186.                 <p>100km, la section ultime<br />
  187.                     Niveau confirmé : voilier habitable, catamaran, planche à voile<br />
  188.                 </p>
  189.                 <div class="row pictos-transports">
  190.                     <img src="/assets/images/logo-paddle.png" class="picto-transport" />
  191.                     <img src="/assets/images/logo-kayak.png" class="picto-transport" />
  192.                     <img src="/assets/images/logo-pav.png" class="picto-transport" />
  193.                 </div>
  194.                 <p>Uniquement après validation PK<br />
  195.                     Temps moyen 5h en catamaran
  196.                 </p>
  197.                 <a href="/sections" rel="dofollow">
  198.                     <span class="toolInverse link">En savoir +</span>
  199.                 </a>
  200.             </div>
  201.         </div>
  202.     </div>
  203.     <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  204.     <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  205.     <div class="row petite-section col-lg-10 col-md-10 col-sm-10 col-10">
  206.         <div class="col-lg-6 col-md-6 col-sm-12 col-12">
  207.             <a href="/sections">
  208.                 <button class="margin-left">Découvrir les sections</button>
  209.             </a>
  210.         </div>
  211.         <div class="col-lg-6 col-md-6 col-sm-12 col-12">
  212.             <a href="/">
  213.                 <button class="contour-gris">Mode d'emploi</button>
  214.             </a>
  215.         </div>
  216.     </div>
  217.     <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  218. </div>
  219. <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  220. </div>
  221. <div class="row section" id="partenaires">
  222.     <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  223.     <div class="row col-lg-10 col-md-10 col-sm-10 col-10">
  224.         <div class="col-lg-12 col-md-12 col-sm-12 col-12">
  225.             <h4 class="center">À la une</h4>
  226.             <h2 class="center">Nos partenaires</h2>
  227.             <p class="center">Ils nous ont fait confiance et c’est grâce à eux que vous pouvez bénéficier de ce challenge à moindre frais.</p>
  228.             <div class="ligneVide"></div>
  229.             <div class="ligneVide"></div>
  230.         </div>
  231.         <div id="carousel" class="row">
  232.             <div class="slides col-lg-12 no-padding">
  233.                 {% for item in Sponsors %}
  234.                 <div class="slide col-lg-3 align-center"><img class="logo-partenaire"
  235.                         src="./uploads/logosSponsors/{{item.logo}}"></div>
  236.                 {% endfor %}
  237.             </div>
  238.         </div>
  239.     </div>
  240.     <div class="col-lg-1 col-md-1 col-sm-1 col-1"></div>
  241. </div>
  242. <script>
  243.     let slideIndex = 0;
  244.     function showSlides() {
  245.         let slides = document.querySelector('.slides');
  246.         let slideCount = document.querySelectorAll('.slide').length;
  247.         let slideWidth = 100 / slideCount;
  248.         slideIndex++;
  249.         if (slideIndex > slideCount) {
  250.             slides.style.transform = `translateX(0)`;
  251.             slideIndex = 1;
  252.         }
  253.         slides.style.transform = `translateX(${
  254. -1 * slideWidth * (slideIndex - 1)
  255. }%)`;
  256.         setTimeout(showSlides, 3000); // Change image every 3 seconds
  257.     }
  258.     showSlides();
  259.     const carousel2 = document.querySelector(".carousel2");
  260.     const slides2 = carousel2.querySelector(".carousel2-slides");
  261.     const slideWidth2 = carousel2.clientWidth;
  262.     const dots2 = carousel2.querySelectorAll(".dot2");
  263.     let slideIndex2 = 0;
  264.     // Positionne les images dans le carousel
  265.     function positionSlides2() {
  266.         slides2.querySelectorAll("img").forEach((img) => {
  267.             img.classList.remove("active2");
  268.         });
  269.         slides2.querySelectorAll("img")[slideIndex2].classList.add("active2");
  270.     }
  271.     // Met à jour l'indicateur de position des points
  272.     function updateDots2() {
  273.         dots2.forEach((dot2) => dot2.classList.remove("active2"));
  274.         dots2[slideIndex2].classList.add("active2");
  275.     }
  276.     // Défilement automatique des images
  277.     function autoSlide2() {
  278.         slideIndex2++;
  279.         if (slideIndex2 >= dots2.length) {
  280.             slideIndex2 = 0;
  281.         }
  282.         positionSlides2();
  283.         updateDots2();
  284.     }
  285.     // Timer pour le défilement automatique
  286.     let timer2 = setInterval(autoSlide2, 5000);
  287.     // Défilement manuel des images
  288.     dots2.forEach((dot2, index) => {
  289.         dot2.addEventListener("click", () => {
  290.             slideIndex2 = index;
  291.             positionSlides2();
  292.             updateDots2();
  293.             clearInterval(timer2);
  294.             timer2 = setInterval(autoSlide2, 5000);
  295.         });
  296.     });
  297.     // Arrête le défilement automatique lorsque la souris est sur le carousel
  298.     carousel2.addEventListener("mouseenter", () => {
  299.         clearInterval(timer2);
  300.     });
  301.     // Reprend le défilement automatique lorsque la souris sort du carousel
  302.     carousel2.addEventListener("mouseleave", () => {
  303.         timer2 = setInterval(autoSlide2, 5000);
  304.     });
  305.     // Positionne les images initialement
  306.     positionSlides2();
  307. </script>{% endblock %}