templates/about_me/index.html.twig line 1

  1. {% extends 'base.html.twig' %}
  2. {% block style %}
  3.     @media screen and (max-width: 1400px) {
  4.         #presentation {
  5.             flex-direction:column;
  6.         }
  7.         #presentation img {
  8.             padding-right:0px;
  9.             margin-top:60px;
  10.         }
  11.         #esport, #collection {
  12.             flex-direction:column !important;
  13.         }
  14.         #photographie {
  15.             flex-direction:column-reverse !important;
  16.         }
  17.         #esportslider, #collectionslider, #photoslider {
  18.             margin-top:40px;
  19.         }
  20.         #esporttext, #photoslider, #collectiontext {
  21.             margin-right:0px !important;
  22.         }
  23.         #esportslider, #phototext, #collectionslider {
  24.             margin-left:0px !important;
  25.         }
  26.         #esporttext, #phototext, #collectiontext {
  27.             text-align:center !important;
  28.         }
  29.     }
  30.     @media screen and (max-width: 1750px) {
  31.         #esportslider, #photoslider, #collectionslider {
  32.             align-self:center;
  33.         }
  34.     }
  35.     #top-title {
  36.         display:flex;
  37.         background-image: url("{{ asset('img/top-bg.png') }}");
  38.         height:400px;
  39.         background-position-y: 50%;
  40.         background-size: cover;
  41.     }
  42.     #top-title div {
  43.         background: linear-gradient(to top, rgb(38, 38, 38), transparent);
  44.         display:flex;
  45.         flex-grow:1;
  46.         justify-content:center;
  47.     }
  48.     #top-title h1 {
  49.         align-content:center;
  50.         font-size:70px;
  51.         animation: slide-in-top 2s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
  52.     }
  53.     @keyframes slide-in-top {
  54.         0% {
  55.             transform: translateY(-100px);
  56.             opacity: 0;
  57.         }
  58.         100% {
  59.             transform: translateY(0);
  60.             opacity: 1;
  61.         }
  62.     }
  63.     #content {
  64.         background-color:#0D0D0D;
  65.         box-shadow: 0 20px 30px rgba(0, 0, 0, 0.5);
  66.         transform: scale(1); 
  67.         transition: transform 0.2s;
  68.         margin-left:130px;
  69.         margin-right:130px;
  70.         margin-top:40px;
  71.         padding:30px;
  72.         padding-top:10px;
  73.         border-radius: 20px;
  74.     }
  75.     #content a {
  76.         color:white;
  77.         transition: color 0.3s ease, font-weight 0.3s ease;
  78.     }
  79.     #content a:hover {
  80.         color:#1e4578;
  81.         font-weight:600;
  82.     }
  83.     #link a {
  84.         color:white;
  85.         background-color:#0D0D0D;
  86.         padding:20px;
  87.         border-radius:10px;
  88.         transition: color 0.3s ease, background-color 0.3s ease;
  89.     }
  90.     #link a:hover {
  91.         color:#0e2038;
  92.         background-color:white;
  93.     }
  94.     #passions {
  95.         background-color:white;
  96.     }
  97.     #passions h1 {
  98.         text-align:center;
  99.     }
  100.     #passions h2 {
  101.         font-size:30px;
  102.     }
  103.     #titlepassion {
  104.         text-align: -webkit-center;
  105.     }
  106.     #titlepassion h1 {
  107.         padding: 20px;
  108.         font-size: 40px;
  109.         background-color: black;
  110.         color: white;
  111.         font-weight: 200;
  112.         margin:0px;
  113.     }
  114.     #presentation {
  115.         display:flex;
  116.         flex-grow:1;
  117.         margin-bottom: 80px;
  118.         flex-direction:column;
  119.     }
  120.     #esport {
  121.         background-image:url("{{ asset('img/passions/esport/fond.jpg') }}");
  122.         background-size: cover;
  123.         background-position-y: 65%;
  124.     }
  125.     #photographie {
  126.         background-image:url("{{ asset('img/passions/photo/fond.jpg') }}");
  127.         background-size: cover;
  128.         background-position-y: 50%;
  129.     }
  130.     #collection {
  131.         background-image:url("{{ asset('img/passions/carte/fond.jpg') }}");
  132.         background-size: cover;
  133.     }
  134.     #esport, #photographie, #collection {
  135.         display:flex;
  136.         flex-direction:row;
  137.         padding-left:80px;
  138.         padding-right:80px;
  139.         padding-top:40px;
  140.         padding-bottom:40px;
  141.     }
  142.     #photographie {
  143.         background-color:#0D0D0D;
  144.     }
  145.     #phototext {
  146.         text-align:right;
  147.     }
  148.     #esporttext, #phototext, #collectiontext {
  149.         align-self:center;
  150.         background-color: rgba(38, 38, 38, 0.5);
  151.         padding:40px;
  152.     }
  153.     #esporttext, #photoslider, #collectiontext {
  154.         margin-right:40px;
  155.     }
  156.     #esportslider, #phototext, #collectionslider {
  157.         margin-left:40px;
  158.     }
  159.     #esportslider, #photoslider, #collectionslider {
  160.         color:white;
  161.         background-color: rgba(38, 38, 38, 0.5);
  162.         align-self:center;
  163.     }
  164.     .slider {
  165.         margin-top:20px;
  166.         padding:20px;
  167.         padding-bottom:0px;
  168.         display:flex;
  169.         font-size: 40px;
  170.         align-items: center;
  171.     }
  172.     #bubbleesport, #bubblephoto, #bubblecollection {
  173.         justify-content:center;
  174.         font-size:20px;
  175.         display:flex;
  176.         flex-direction:row;
  177.         margin-top:20px;
  178.         margin-bottom:20px;
  179.     }
  180.     #esportslider p:hover, #photoslider p:hover, #collectionslider p:hover {
  181.         cursor:pointer;
  182.     }
  183.     #esportslider img, #photoslider img, #collectionslider img {
  184.         width:600px;
  185.         margin-left:20px;
  186.         margin-right:20px;
  187.         transition: transform 1s ease-in-out;
  188.     }
  189.     .scale-in-center {
  190.         animation: scale-in-center 1.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
  191.     }
  192.     .focus-in-expand {
  193.         animation: focus-in-expand 1.5s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
  194.     }
  195.     .text-focus-in {
  196.         animation: text-focus-in 1s cubic-bezier(0.550, 0.085, 0.680, 0.530) both;
  197.     }
  198.     @keyframes scale-in-center {
  199.         0% {
  200.             transform: scale(0);
  201.             opacity: 1;
  202.         }
  203.         100% {
  204.             transform: scale(1);
  205.             opacity: 1;
  206.         }
  207.     }
  208.     @keyframes focus-in-expand {
  209.         0% {
  210.             letter-spacing: -0.5em;
  211.             filter: blur(12px);
  212.             opacity: 0;
  213.         }
  214.         100% {
  215.             filter: blur(0px);
  216.             opacity: 1;
  217.         }
  218.     }
  219.     @keyframes text-focus-in {
  220.         0% {
  221.             filter: blur(12px);
  222.             opacity: 0;
  223.         }
  224.         100% {
  225.             filter: blur(0px);
  226.             opacity: 1;
  227.         }
  228.     }
  229.     @keyframes flip-in-ver-right {
  230.         0% {
  231.             transform: rotateY(-80deg);
  232.             opacity: 0;
  233.         }
  234.         100% {
  235.             transform: rotateY(0);
  236.             opacity: 1;
  237.         }
  238.     }
  239.     .slide-out {
  240.         -webkit-animation: flip-in-ver-right 0.7s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
  241.         animation: flip-in-ver-right 0.7s cubic-bezier(0.250, 0.460, 0.450, 0.940) both;
  242.     }
  243. {% endblock %}
  244. {% block javascripts %}
  245.     <script>
  246.         let numSliderEsport = 1;
  247.         let numSliderPhoto = 1;
  248.         let numSliderCollection = 1;
  249.         function changeImgSlider(slider, number){
  250.             if(slider == "esport"){
  251.                 numSliderEsport += number;
  252.                 if(numSliderEsport > 3){
  253.                     numSliderEsport = 1;
  254.                 }
  255.                 if(numSliderEsport < 1){
  256.                     numSliderEsport = 3;
  257.                 }
  258.                 document.getElementById('imgEsport').classList.add('slide-out');
  259.                 setTimeout(() => {
  260.                     document.getElementById('imgEsport').classList.remove('slide-out');
  261.                 }, 500); 
  262.                 switch(numSliderEsport){
  263.                     case 1:
  264.                         document.getElementById('bubbleesport').innerHTML = "●○○"
  265.                         break;
  266.                     case 2:
  267.                         document.getElementById('bubbleesport').innerHTML = "●●○"           
  268.                         break; 
  269.                     case 3:
  270.                         document.getElementById('bubbleesport').innerHTML = "●●●"
  271.                         break;     
  272.                 }
  273.                 document.getElementById('imgEsport').src="{{ asset('img/passions/esport')}}/"+numSliderEsport+".jpg";
  274.             } else if(slider == "photo"){
  275.                 numSliderPhoto += number;
  276.                 if(numSliderPhoto > 6){
  277.                     numSliderPhoto = 1;
  278.                 }
  279.                 if(numSliderPhoto < 1){
  280.                     numSliderPhoto = 6;
  281.                 }
  282.                 document.getElementById('imgPhoto').classList.add('slide-out');
  283.                 setTimeout(() => {
  284.                     document.getElementById('imgPhoto').classList.remove('slide-out');
  285.                 }, 500); 
  286.                 switch(numSliderPhoto){
  287.                     case 1:
  288.                         document.getElementById('bubblephoto').innerHTML = "●○○○○○"
  289.                         break;
  290.                     case 2:
  291.                         document.getElementById('bubblephoto').innerHTML = "●●○○○○"           
  292.                         break; 
  293.                     case 3:
  294.                         document.getElementById('bubblephoto').innerHTML = "●●●○○○"
  295.                         break;
  296.                     case 4:
  297.                         document.getElementById('bubblephoto').innerHTML = "●●●●○○"
  298.                         break;
  299.                     case 5:
  300.                         document.getElementById('bubblephoto').innerHTML = "●●●●●○"
  301.                         break;     
  302.                     case 6:
  303.                         document.getElementById('bubblephoto').innerHTML = "●●●●●●"
  304.                         break;      
  305.                 }
  306.                 document.getElementById('imgPhoto').src="{{ asset('img/passions/photo')}}/"+numSliderPhoto+".jpg";
  307.             } else {
  308.                 numSliderCollection += number;
  309.                 if(numSliderCollection > 2){
  310.                     numSliderCollection = 1;
  311.                 }
  312.                 if(numSliderCollection < 1){
  313.                     numSliderCollection = 2;
  314.                 }
  315.                 document.getElementById('imgCollection').classList.add('slide-out');
  316.                 setTimeout(() => {
  317.                     document.getElementById('imgCollection').classList.remove('slide-out');
  318.                 }, 500); 
  319.                 switch(numSliderCollection){
  320.                     case 1:
  321.                         document.getElementById('bubblecollection').innerHTML = "●○"
  322.                         break;
  323.                     case 2:
  324.                         document.getElementById('bubblecollection').innerHTML = "●●"           
  325.                         break; 
  326.                 }
  327.                 document.getElementById('imgCollection').src="{{ asset('img/passions/carte')}}/"+numSliderCollection+".jpg";
  328.             }
  329.         }
  330.     </script>
  331. {% endblock %}
  332. {% block body %}
  333. <div id="presentation">
  334.     <div id="top-title">
  335.         <div>
  336.             <h1>À propos de moi</h1>
  337.         </div>
  338.     </div>
  339.     <div style="flex-grow:1;text-align:center;">
  340.         <div id="content">
  341.             <div style="text-align: -webkit-center;">
  342.                 <h1 style="padding:10px;border-radius:10px;font-size:40px;background-color: white;width: fit-content;border: solid white;color: #0D0D0D;" class="focus-in-expand">Qui suis-je ?</h1>
  343.             </div>
  344.             <div class="text-focus-in" style="animation-delay:1s;">
  345.                 <p style="margin-top:40px;">
  346.                     Moi c'est Lucas. J'habite dans les environs de Reims et à tout juste 21 ans, j'ai décroché un Bac+3 en développement Web ! 
  347.                 </p>
  348.                 <p>Si tu as fait un tour sur ma page d'accueil, tu as probablement vu que je suis aussi un amateur de photographie.
  349.                     J'ai mon propre Canon 2000D et je m'amuse à prendre des clichés ici et là. Je ne suis peut-être pas un pro, 
  350.                     mais c'est un hobby qui me permet d'exprimer ma créativité et de capturer de beaux moments.
  351.                 </p>
  352.                 <p>En dehors de tout ça, j'adore voyager et découvrir de nouvelles cultures. Mon rêve ultime ? Mettre les pieds 
  353.                     au Japon dans quelques années ! L'idée de plonger dans une culture si unique, de goûter à une cuisine incroyable
  354.                     et de vivre cette combinaison entre tradition et modernité me fait vraiment rêver.
  355.                 </p>
  356.                 <p>J'ai aussi pu avoir la chance de m'investir dans des associations durant mes études !
  357.                     J'ai notamment débuté en devenant président de l'association d'étudiant de ma promotion lors de mon DUT,
  358.                     une belle expérience quoi que un peu gâchée par le covid qui a bloqué beaucoup de chose.
  359.                     Aujourd'hui, je suis membre de l'association LeBlueWall et j'ai le plaisir de pouvoir gérer principalement la régie de la partie Twitch !
  360.                 </p>
  361.                 <p>Donc voilà, je suis ce gars cool qui aime la tech, la créativité, et qui a soif d'aventure. Mon parcours et mes passions 
  362.                     reflètent ma curiosité sans fin, et je suis super excité de voir ce que l'avenir me réserve. 
  363.                     En attendant, je continue à suivre mes rêves et à m'éclater !
  364.                 </p>
  365.             </div>
  366.         </div>
  367.         <div id="link" style="margin-top:50px">
  368.             <a class="fade-in" href="https://m-lyshu-nextjs.vercel.app/" style="margin-right:40px;animation-delay: 2s;">Voir mon CV numérique</a>
  369.         </div>
  370.     </div>
  371. </div>
  372. <div id="passions">
  373.     <div id="titlepassion">
  374.         <h1>Mes passions</h1>
  375.     </div>
  376.     <div id="esport">
  377.         <div id="esporttext">
  378.             <h2>L'Esport</h2>
  379.             <p>En tant que fervent supporter de la <strong>Karmine Corp</strong>, mon aventure dans l'esport a pris une dimension passionnante et inoubliable. Mon engagement ne se limite pas à regarder les compétitions, mais s'étend bien au-delà, me plaçant au cœur de l'action en tant que <strong>membre actif de la communauté LeBlueWall.</strong> <br><br>
  380.                 Les moments les plus mémorables de mon expérience ont été gravés lors de déplacements aux événements majeurs de l'esport. Ma première immersion a eu lieu aux <strong>Worlds de Rocket League à Düsseldorf</strong>, où l'effervescence et l'énergie du BlueWall ont transcendé les frontières virtuelles pour devenir une véritable communion. Le <strong>KCX3</strong> a été une autre étape marquante de mon parcours. Vivre l'action en direct, <strong>soutenir la Karmine Corp dans les moments cruciaux</strong> et célébrer chaque victoire avec mes camarades de tribune ont créé des liens indéfectibles. L'<strong>Ultimate Fighting Arena</strong> a été un autre chapitre palpitant de mon aventure esportive. Les combats intenses et la compétition acharnée ont élevé l'atmosphère à des sommets inégalés. <br><br>
  381.     
  382.                 Mon rôle en tant que <strong>régisseur de la chaîne Twitch</strong> pour l'association des ultras LeBlueWall m'a offert une perspective unique en coulisses. Contribuer à la diffusion des moments clés et interagir avec la communauté en ligne ont ajouté une dimension interactive à mon expérience, <strong>renforçant ainsi le lien entre les supporters.</strong> <br><br>
  383.                 Être supporter de la Karmine Corp ne se limite pas à encourager une équipe, <strong>c'est embrasser une culture, une passion partagée</strong>, et c'est exactement ce que je vis en tant que membre actif du BlueWall. Chaque événement, chaque rencontre, et chaque victoire sont des éléments fondateurs de mon voyage esportif, <strong>un périple qui va au-delà des pixels pour devenir une aventure humaine et collective</strong>. Et c'est avec une fierté immense que je continue de porter les couleurs de la Karmine Corp, un supporter dévoué au cœur du mouvement LeBlueWall.</p>
  384.         </div>
  385.         <div id="esportslider">
  386.             <div class="slider">
  387.                 <p onclick="changeImgSlider('esport', -1)">&lsaquo;</p>
  388.                 <img src="{{ asset('img/passions/esport/1.jpg') }}" id="imgEsport">
  389.                 <p onclick="changeImgSlider('esport', 1)">&rsaquo;</p>
  390.             </div>
  391.             <div id="bubbleesport">
  392.                 &#x25CF;&#x25CB;&#x25CB;
  393.             </div>
  394.         </div>
  395.     </div>
  396.     <div id="photographie">
  397.         <div id="photoslider">
  398.             <div class="slider">
  399.                 <p onclick="changeImgSlider('photo', -1)">&lsaquo;</p>
  400.                 <img src="{{ asset('img/passions/photo/1.jpg') }}" id="imgPhoto">
  401.                 <p onclick="changeImgSlider('photo', 1)">&rsaquo;</p>
  402.             </div>
  403.             <div id="bubblephoto">
  404.                 &#x25CF;&#x25CB;&#x25CB;&#x25CB;&#x25CB;&#x25CB;
  405.             </div>
  406.         </div>
  407.         <div id="phototext">
  408.             <h2>La photographie</h2>
  409.             <p>Mon incursion dans le monde fascinant de la photographie a été <strong>une aventure que j'ai toujours rêvé de vivre</strong>. Longtemps passionné par la photographie, j'ai finalement sauté le pas grâce à l'argent provenant de mon alternance, me permettant d'acquérir mon tout premier appareil photo : <strong>un Canon 2000D Reflex.</strong><br><br>
  410.             Cet appareil représente bien plus qu'un simple outil, <strong>c'est une porte d'entrée vers un univers où la créativité et la capture de moments précieux prennent vie à travers l'objectif</strong>. Chaque cliché que je réalise devient une exploration visuelle, une tentative de figer l'instant éphémère dans le temps.<br><br>
  411.             Mes premiers pas dans la photographie m'ont conduit à expérimenter différentes techniques, à apprendre les subtilités de l'art de composer une image. Les premiers shoots ont été un mélange d'excitation et d'appréhension, mais avec chaque déclenchement, <strong>j'ai découvert une nouvelle passion qui a pris racine dans mon quotidien.</strong><br><br>
  412.             Capturer la beauté du monde qui m'entoure est devenu un moyen de <strong>m'exprimer artistiquement</strong>. Que ce soit la majesté d'un paysage, la complexité des détails urbains, ou la simplicité d'un instant volé, mon Canon 2000D a été le témoin silencieux de mes explorations photographiques.<br><br>
  413.             Avec mon Canon 2000D en main, je me lance dans une <strong>aventure visuelle</strong>, cherchant à capturer l'essence même de chaque moment. Chaque clic de l'obturateur est une invitation à explorer le monde à travers un nouvel objectif, et c'est avec enthousiasme et détermination que je continue de développer mon regard artistique, <strong>découvrant la magie de la photographie à chaque instant figé dans le temps.</strong></p>
  414.         </div>
  415.     </div>
  416.     <div id="collection">
  417.         <div id="collectiontext">
  418.             <h2>La collection de cartes</h2>
  419.             <p>La collection de cartes Pokémon a toujours été bien plus qu'un simple loisir pour moi, <strong>c'est une passion qui transcende le simple fait de posséder des cartes</strong>. Pour moi, l'essence de cette expérience réside davantage dans le plaisir palpitant <strong>d'ouvrir un booster que dans l'objectif de rassembler toutes les cartes existantes</strong>. C'est un voyage où chaque paquet ouvert devient une fenêtre vers l'inconnu, une source d'excitation et de découvertes.<br><br>
  420.             Lorsque je m'immerge dans le rituel d'ouvrir un booster, l'anticipation atteint son paroxysme. Chaque carte révélée ajoute une dose d'excitation, que ce soit une carte commune ou une rareté étincelante. <strong>L'effervescence de la découverte prime sur l'ambition de compléter une collection exhaustive</strong>.<br><br>
  421.             Parmi toutes les séries de cartes Pokémon, ce sont <strong>Poing de Fusion</strong> et <strong>Faille Paradoxe</strong> qui ont conquis mon cœur de collectionneur. Les illustrations captivantes et les choix de design de ces séries ajoutent une dimension artistique à ma passion, transformant chaque carte en <strong>une œuvre d'art miniature</strong>.<br><br>
  422.             La recherche des cartes de ces séries est devenue un véritable plaisir, une quête où <strong>chaque trouvaille est célébrée comme une victoire personnelle</strong>. Les moments d'émerveillement devant une rareté inattendue font partie intégrante de cette expérience de collection.<br><br>
  423.             Ainsi, ma collection de cartes Pokémon n'est pas simplement un ensemble de morceaux de carton colorés, mais <strong>un témoignage de moments de joie, d'émerveillement et de camaraderie</strong>. Chaque carte a son histoire, chaque booster ouvert est un chapitre de cette aventure continue. Et c'est dans cette passion pour l'inattendu et le plaisir de la découverte que réside <strong>le véritable enchantement de ma collection de cartes Pokémon.</strong></p>
  424.         </div>
  425.         <div id="collectionslider">
  426.             <div class="slider">
  427.                 <p onclick="changeImgSlider('collection', -1)">&lsaquo;</p>
  428.                 <img src="{{ asset('img/passions/carte/1.jpg') }}" id="imgCollection">
  429.                 <p onclick="changeImgSlider('collection', 1)">&rsaquo;</p>
  430.             </div>
  431.             <div id="bubblecollection">
  432.                 &#x25CF;&#x25CB;
  433.             </div>
  434.         </div>
  435.     </div>
  436. </div>
  437. {% endblock %}