Added main sections, visual improvements

This commit is contained in:
Florian Sylvain
2022-01-27 00:16:50 +01:00
parent 72e02a412c
commit e92a58aa02
4 changed files with 184 additions and 64 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

+43 -5
View File
@@ -29,25 +29,63 @@
</header> </header>
<div class="main-title"> <div class="main-title">
<h1><a href="#about">Florian Sylvain</a></h1> <h1>
<a href="#about">
Florian Sylvain
</a>
</h1>
</div> </div>
<div id="content"> <div id="content">
<div class="to-fade" id="about"> <div class="to-fade" id="about">
<h2>About</h2> <h2>About</h2>
<p>Bonsoir à tous</p> <div class="block">
<img src="assets/test.jpg"> <img class="to-grow" src="assets/FlorianSylvain.jpg">
<p>
Étudiant en DUT Informatique à l'Université Gustave Eiffel et apprenti développeur R&D chez WATT Earth, je me passionne pour l'informatique depuis toujours. Le web design, les jeux vidéo, l'algorithmie forment à eux trois mon fer de lance en informatique.
</p>
</div>
</div> </div>
<div class="to-fade" id="education"> <div class="to-fade" id="education">
<h2>Education</h2> <h2>Education</h2>
<p>Bonsoir à tous</p>
<div class="to-slide">
<h3>Université Gustave Eiffel</h3>
<p><span class="degree">DUT Informatique</span><br><span class="time-range">Sept. 2020 - Sept. 2022</span></p>
<p>
« Enseignements fondamentaux, pour acquérir des connaissances, des concepts de base et des méthodes de travail ; appliqués, pour faciliter l'apprentissage de ces concepts et déployer des savoir-faire professionnels ; évolutifs, pour intégrer les progrès technologiques et les exigences du monde professionnel ; ouverts, pour développer les facultés de communication indispensables aux informaticiens dans l'exercice de leur métier. »
</p>
</div>
<div class="to-slide">
<h3>Lycée Polyvalent René Cassin</h3>
<p><span class="degree">Baccalauréat STI2D</span><br><span class="time-range">Sept. 2017 - Juil. 2020</span></p>
<p>
Formation à l'industrie et à l'innovation technologique dans le respect de la préservation de lenvironnement.
</p>
</div>
</div> </div>
<div class="to-fade" id="experience"> <div class="to-fade" id="experience">
<h2>Experience</h2> <h2>Experience</h2>
<p>Bonsoir à tous</p>
<div class="to-slide">
<h3>WATT Earth</h3>
<p><span class="degree">Apprenti développeur R&D</span><br><span class="time-range">Oct. 2021 - Sept. 2022</span></p>
<p>« Contribuer à la conception et au développement de fonctionnalités innovantes au cœur des produits de WATT Earth. »</p>
</div>
<div class="to-slide">
<h3>UGAP</h3>
<p><span class="degree">Support technique et informatique</span><br><span class="time-range">2016, une semaine</span></p>
<p>
Mes objectifs étaient de déterminer les solutions et préconisations techniques et les communiquer aux clients, analyser des problèmes techniques, informer les clients des problèmes techniques relevés et des modifications et réparations à apporter, former des utilisateurs à un produit ou un équipement et effectuer le suivi technique des produits et de leur évolution auprès des clients.
</p>
</div>
</div> </div>
<div class="to-fade" id="projects"> <div class="to-fade" id="projects">
+47 -31
View File
@@ -1,57 +1,73 @@
const mainTitle = document.querySelector('.main-title') /*jslint browser maxlen:80 */
const navBarElems = document.querySelector('body > header > nav') /*global window */
const mainContent = document.querySelectorAll('#content') const mainTitle = document.querySelector('.main-title');
const navBarElems = document.querySelector('body > header > nav');
function fadeIn() { function toMove(toClass, inClass) {
const elementsToFade = document.querySelectorAll(".to-fade") "use strict";
if (elementsToFade !== null) {
elementsToFade.forEach(elem => { const elementsToMove = document.querySelectorAll(toClass);
const distInView = (elem.getBoundingClientRect().bottom - (elem.offsetHeight) / 2) - window.innerHeight
if (elementsToMove !== null) {
elementsToMove.forEach(function (elem) {
const distInView = (
elem.getBoundingClientRect().bottom - (elem.offsetHeight) / 2
) - window.innerHeight;
if (distInView < 0) { if (distInView < 0) {
elem.classList.add("fade-in") elem.classList.add(inClass);
} else { } else {
elem.classList.remove("fade-in") elem.classList.remove(inClass);
} }
}) });
} }
} }
function scrollHandler() { function scrollHandler() {
fadeIn() "use strict";
const y = window.scrollY
const titlePos = mainTitle.getBoundingClientRect() toMove('.to-fade', 'fade-in');
toMove('.to-grow', 'grow-in');
toMove('.to-slide', 'slide-in');
const y = window.scrollY;
const titlePos = mainTitle.getBoundingClientRect();
if (titlePos.bottom > 0) { if (titlePos.bottom > 0) {
const distanceToTop = window.pageYOffset + titlePos.top const distanceToTop = window.pageYOffset + titlePos.top;
const elementHeight = mainTitle.offsetHeight const elementHeight = mainTitle.offsetHeight;
const opacity = 1 - ((y - distanceToTop) / elementHeight) * 2 const opacity = 1 - ((y - distanceToTop) / elementHeight) * 2;
if (opacity > 0) { if (opacity > 0) {
mainTitle.style.letterSpacing = (y * 0.005 <= 0.1 ? 0.1 : y * 0.005) * 2 + 'em' const pixelsSpacing = (y * 0.005 <= 0.1
mainTitle.style.opacity = opacity ? 0.1
: y * 0.005);
mainTitle.style.letterSpacing = (pixelsSpacing * 2) + 'em';
mainTitle.style.opacity = opacity;
} }
} }
} }
scrollHandler() scrollHandler();
window.addEventListener('scroll', scrollHandler) window.addEventListener('scroll', scrollHandler);
function switchNavBar() { function switchNavBar() {
const header = document.querySelector('.hamburger').parentNode.classList "use strict";
const header = document.querySelector('.hamburger').parentNode.classList;
if (header.contains('slide-in') || header.contains('to-cross')) { if (header.contains('slide-in') || header.contains('to-cross')) {
header.remove('slide-in') header.remove('slide-in');
header.remove('to-cross') header.remove('to-cross');
navBarElems.classList.remove('slide-elements') navBarElems.classList.remove('slide-elements');
} else { } else {
header.add('slide-in') header.add('slide-in');
header.add('to-cross') header.add('to-cross');
navBarElems.classList.add('slide-elements') navBarElems.classList.add('slide-elements');
} }
} }
document.querySelectorAll('nav a').forEach(a => { document.querySelectorAll('nav a').forEach(function (a) {
a.onclick = switchNavBar "use strict";
}) a.onclick = switchNavBar;
});
+93 -27
View File
@@ -10,18 +10,18 @@
* { * {
box-sizing: border-box; box-sizing: border-box;
scroll-behavior: smooth; scroll-behavior: smooth;
color: #fff;
font-family: Manrope;
font-variation-settings: "wght" 600;
} }
body { body {
width: 100%; width: 100%;
height: 2000px; height: 2000px;
margin: 0; margin: 0;
color: #fff;
font-family: Manrope;
font-variation-settings: 'wght' 500;
background-color: #101010; background-color: #101010;
} }
@@ -73,13 +73,26 @@ nav a:nth-child(0n+5) {
transition: transform 200ms, opacity 200ms, letter-spacing 200ms; transition: transform 200ms, opacity 200ms, letter-spacing 200ms;
} }
.slide-elements a { h2 {
opacity: 100%; letter-spacing: 2px;
transform: translateX(0); padding-bottom: 10px;
border-bottom: 2px solid #101010;
transition: transform 200ms, text-shadow 200ms;
}
h2:first-letter {
color: #3AC414;
font-variation-settings: 'wght' 600;
} }
a { a {
text-decoration: none; text-decoration: none;
color: #fff;
}
.slide-elements a {
opacity: 100%;
transform: translateX(0);
} }
.hamburger { .hamburger {
@@ -138,7 +151,7 @@ a {
} }
.slide-in { .slide-in {
transform: translateY(0); transform: translateY(0) translateX(0) !important;
} }
.main-title { .main-title {
@@ -157,11 +170,10 @@ a {
text-align: center; text-align: center;
font-family: Manrope; font-family: Manrope;
font-variation-settings: "wght" 600; font-variation-settings: 'wght' 500;
font-size: 2em; font-size: 2em;
letter-spacing: 0.1em; letter-spacing: 0.1em;
color: #fff; color: #fff;
text-shadow: #ffff 0 0 0;
} }
.main-title h1 { .main-title h1 {
@@ -174,22 +186,9 @@ a {
text-shadow: #253622 10px 10px 10px; text-shadow: #253622 10px 10px 10px;
} }
#content { h2:hover {
width: 80%; transform: translateX(-2px) translateY(-2px);
margin: auto; text-shadow: #253622 3px 3px 5px;
}
#content img {
width: 100%;
border-radius: 0.5em;
}
#content > div {
padding-top: 55px;
}
#content > div:last-child {
margin-bottom: 100vh;
} }
.to-fade { .to-fade {
@@ -200,3 +199,70 @@ a {
.fade-in { .fade-in {
opacity: 100%; opacity: 100%;
} }
#content > div {
padding: 55px 10% 55px 10%;
}
#content > div:nth-child(2n-1) {
color: #101010;
background-color: #fff;
}
#content > div:nth-child(2n) > h2 {
border-bottom: 2px solid #fff;
}
#content img {
width: 300px;
height: 300px;
margin: 5px 0 5px 0;
box-shadow: #0002 0 0 25px;
transform: scale(0.95) rotate(0);
transition: transform 1s, box-shadow 200ms;
}
.grow-in {
transform: scale(1) rotate(2deg) !important;
}
.block {
display: flex;
flex-direction: column;
align-items: center;
}
.block > p {
margin: 0;
padding: 25px 3px 0 3px;
}
#education > div, #experience > div {
transform: translateX(-150%);
transition: transform 200ms;
margin-bottom: 30px;
}
#education h3, #experience h3 {
font-variation-settings: 'wght' 600;
}
#education > div:last-child, #experience > div:last-child {
margin-bottom: 0;
}
#education p + p {
font-size: smaller;
}
.degree {
font-variation-settings: 'wght' 500;
}
.time-range {
font-size: smaller;
font-variation-settings: 'wght' 300;
}