first deployment site

This commit is contained in:
BenjaminToby 2021-07-02 06:13:23 +01:00
parent b19e5b64a2
commit 83cdd53187
12 changed files with 1078 additions and 227 deletions

BIN
docs/Benjamin-Toby-CV.pdf Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 KiB

BIN
images/my-image-large.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

12
images/white-arrow.svg Normal file
View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 30 30" style="enable-background:new 0 0 30 30;" xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
</style>
<g>
<path class="st0" d="M28.6,13.4l-11,9.4c-0.7,0.6-1.7,0.9-2.6,0.9c-0.9,0-1.8-0.3-2.6-0.9l-11-9.4C-0.3,12-0.5,9.4,1,7.7
C2.4,6,5,5.8,6.6,7.2l8.4,7.2l8.4-7.2C25.1,5.8,27.6,6,29,7.7C30.5,9.4,30.3,12,28.6,13.4z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 626 B

View File

@ -16,7 +16,7 @@
rel="stylesheet">
<link rel="stylesheet" href="main.min.css">
<link rel="stylesheet" href="main.css">
</head>
@ -44,17 +44,17 @@
<nav>
<a href="#my-work" id="my-work-link" class="nav-link">My Work</a>
<a href="#about-me" id="about-me-link" class="nav-link">About Me</a>
<a href="#my-specialties" id="resume-link" class="nav-link">Resume</a>
<a href="#contact-me" id="contact-me-link" class="nav-link">Contact Me</a>
<div style="display: flex;align-items: center;">
<a href="mailto:benoti.san@gmail.com" class="social-media-links material-icons" id="mail">mail</a>
<a href="#" class="social-media-links material-icons" id="linkedin"><img src="images/linkedin.svg"
alt=""></a>
</div>
<a href="#my-specialties" id="resume-link" class="nav-link footer-special">Resume</a>
<a href="#contact-me" id="contact-me-link" class="nav-link footer-special">Contact Me</a>
</nav>
</div>
<div style="display: flex;align-items: center;">
<a href="mailto:benoti.san@gmail.com" class="social-media-links material-icons" id="mail">mail</a>
<a href="https://linkedin.com/in/benjamin-toby" class="social-media-links material-icons" id="linkedin"
target="_blank"><img src="images/linkedin.svg" alt=""></a>
</div>
<button class="hamburger-button">
<div></div>
<div></div>
@ -72,6 +72,19 @@
<!-- #################################################################################-- Preloader -->
<div id="preloader-container">
<img src="images/clouds.jpg" alt="">
<img src="images/logo-v3.svg" alt="">
</div>
<!-- #################################################################################-- Hero -->
@ -82,10 +95,10 @@
<div class="main-text-block">
Hi. Im a
<h1 class="main-hero-text">
<a href="" class="uiux-designer-link">UI UX Designer</a>,
<a href="" class="web-designer-link">Web Designer</a>,
<a href="" class="frontend-designer-link">Frontend Web Developer</a>,
<a href="" class="graphic-motion-designer-link">Graphic and motion Designer</a>.
<a href="#" class="uiux-designer-link">UI UX Designer</a>,
<a href="#" class="web-designer-link">Web Designer</a>,
<a href="#" class="frontend-designer-link">Frontend Web Developer</a>,
<a href="#" class="graphic-motion-designer-link">Graphic and motion Designer</a>.
</h1> <br>
<button class="main-cta-button"><a href="#contact-me">Let's Talk</a></button>
</div>
@ -103,6 +116,10 @@
<a href="#my-work">
<img src="images/down-arrow.svg" alt="">
</a>
<div></div>
<div></div>
<div></div>
</div>
</div>
@ -131,13 +148,76 @@
<section class="my-work-section" id="my-work">
<div>
<h2 class="scroll-into-view-content" data-delay="200">Some of My Work</h2>
<p class="scroll-into-view-content" data-delay="400">Lorem ipsum dolor sit amet, consectetur adipiscing
elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices
gravida. Risus commodo viverra maecenas accumsan lacus vel facilisis. </p>
<p class="scroll-into-view-content" data-delay="400">Here are a few of my works: you can find more of my
work on my <a href="https://99designs.com/profiles/2220588" target="_blank">99designs</a> profile.</p>
<div class="portfolio-buttons-container">
<button class="portfolio-left-button"><img src="images/white-arrow.svg" alt=""></button>
<button class="portfolio-right-button"><img src="images/white-arrow.svg" alt=""></button>
</div>
</div>
<div class="scroll-into-view">
<div class="portfolio-items-container scroll-into-view-content" data-delay="800"></div>
<div class="portfolio-items-container scroll-into-view-content" data-delay="800">
<!-- Porfolio entry -->
<div class="portfolio-entry" id="transcend-barriers">
<!-- <img src="images/my-image-large.jpg" alt=""> -->
<div>
<h3>Transcend Barriers Animation</h3>
<p>This animations was made for web view. I used aftereffects and bodymoving to accomplish this:
the result? High definition svg anmimation that looks crisp on any resolution and maintains
a relatively light weight</p>
</div>
<div>
<div class="specialty-skill">
<div>Adobe Illustrator</div><img src="images/illustrator.svg" alt="">
</div>
<div class="specialty-skill">
<div>Adobe After Effects</div><img src="images/aftereffects.svg" alt="">
</div>
<div class="specialty-skill">
<div>javascript</div><img src="images/javascript.svg" alt="">
</div>
</div>
</div>
<!-- Porfolio entry -->
<div class="portfolio-entry" id="github-to-asana">
<!-- <img src="images/mountains.png" alt=""> -->
<div>
<h3>Github to Asana</h3>
<p>This project is an ongoing webapp that connects github to asana. In this project I'm focusing
on the UI/UX, together with frontend functionality.</p>
</div>
<div>
<div class="specialty-skill">
<div>Adobe Photoshop</div><img src="images/photoshop.svg" alt="">
</div>
<div class="specialty-skill">
<div>Adobe Illustrator</div><img src="images/illustrator.svg" alt="">
</div>
<div class="specialty-skill">
<div>Adobe After Effects</div><img src="images/aftereffects.svg" alt="">
</div>
<div class="specialty-skill">
<div>HTML5</div><img src="images/html5.svg" alt="">
</div>
<div class="specialty-skill">
<div>CSS3</div><img src="images/css3.svg" alt="">
</div>
<div class="specialty-skill">
<div>javascript</div><img src="images/javascript.svg" alt="">
</div>
<div class="specialty-skill">
<div>Git version control</div><img src="images/git-version-control.svg" alt="">
</div>
</div>
<img src="images/Project_GitToAsana_LandingPage_002.jpg" alt="">
<div id="github-to-asana-animation"></div>
</div>
</div>
</div>
</section>
@ -153,13 +233,15 @@
<section class="about-me-section" id="about-me">
<div class="scroll-into-view">
<img src="images/my-image-large.jpg" alt="">
</div>
<div>
<h2 class="scroll-into-view-content">About Me</h2>
<p class="scroll-into-view-content">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus
commodo viverra maecenas accumsan lacus vel facilisis. </p>
<p class="scroll-into-view-content">I've traversed multiple fields over the past decade: from engineering
studies, to solar power constructions, to web design, graphic design, 2d animations, and code. Over the
years I've learnt the best skill: which is learnability and adaptability: hence I aim to cut across many
different fields: the world changes fast, and I think this is the only skill that matters.</p>
</div>
</section>
@ -175,68 +257,67 @@
<section class="my-specialties-section" id="my-specialties">
<h2 class="scroll-into-view-content">My Tools For Creating Awesomeness</h2>
<p class="scroll-into-view-content">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Quis ipsum suspendisse ultrices gravida. Risus commodo
viverra maecenas accumsan lacus vel facilisis. </p>
<p class="scroll-into-view-content">Ever expanding and ever improving, I have proffesional grade understanding
of the tools below. But I don't plan to stop here.</p>
<div>
<div class="scroll-into-view-content" data-delay="0">
<div class="specialty-skill scroll-into-view-content" data-delay="0">
<div>Adobe Photoshop</div><img src="images/photoshop.svg" alt="">
</div>
<div class="scroll-into-view-content" data-delay="100">
<div class="specialty-skill scroll-into-view-content" data-delay="100">
<div>Adobe Illustrator</div><img src="images/illustrator.svg" alt="">
</div>
<div class="scroll-into-view-content" data-delay="200">
<div class="specialty-skill scroll-into-view-content" data-delay="200">
<div>Adobe After Effects</div><img src="images/aftereffects.svg" alt="">
</div>
<div class="scroll-into-view-content" data-delay="300">
<div class="specialty-skill scroll-into-view-content" data-delay="300">
<div>HTML 5</div><img src="images/html5.svg" alt="">
</div>
<div class="scroll-into-view-content" data-delay="400">
<div class="specialty-skill scroll-into-view-content" data-delay="400">
<div>CSS3</div><img src="images/css3.svg" alt="">
</div>
<div class="scroll-into-view-content" data-delay="500">
<div class="specialty-skill scroll-into-view-content" data-delay="500">
<div>javascript</div><img src="images/javascript.svg" alt="">
</div>
<div class="scroll-into-view-content" data-delay="600">
<div class="specialty-skill scroll-into-view-content" data-delay="600">
<div>Git Version Control</div><img src="images/git-version-control.svg" alt="">
</div>
<div class="scroll-into-view-content" data-delay="700">
<div class="specialty-skill scroll-into-view-content" data-delay="700">
<div>Figma</div><img src="images/figma.svg" alt="">
</div>
<div class="scroll-into-view-content" data-delay="800">
<div class="specialty-skill scroll-into-view-content" data-delay="800">
<div>Wordpress</div><img src="images/wordpress.svg" alt="">
</div>
<div class="scroll-into-view-content-2" data-delay="900">
<div class="specialty-skill scroll-into-view-content-2" data-delay="900">
<div>Webflow</div><img src="images/webflow.svg" alt="">
</div>
<div class="scroll-into-view-content-2" data-delay="1000">
<div class="specialty-skill scroll-into-view-content-2" data-delay="1000">
<div>Adobe XD</div><img src="images/adobe-xd.svg" alt="">
</div>
<div class="scroll-into-view-content-2" data-delay="1100">
<div class="specialty-skill scroll-into-view-content-2" data-delay="1100">
<div>Visual Studio Code</div><img src="images/vs-code.svg" alt="">
</div>
<div class="scroll-into-view-content-2" data-delay="1200">
<div class="specialty-skill scroll-into-view-content-2" data-delay="1200">
<div>Dreamweaver</div><img src="images/dreamweaver.svg" alt="">
</div>
<div class="scroll-into-view-content-2" data-delay="1300">
<div class="specialty-skill scroll-into-view-content-2" data-delay="1300">
<div>Adobe Animate</div><img src="images/adobe animate.svg" alt="">
</div>
<div class="scroll-into-view-content-2" data-delay="1400">
<div class="specialty-skill scroll-into-view-content-2" data-delay="1400">
<div>Affinity Photo and Affinity Designer</div><img src="images/affinity.svg" alt="">
</div>
</div>
@ -258,8 +339,9 @@
<div>
<h2 class="scroll-into-view-content">So. Let's talk</h2>
<p class="scroll-into-view-content">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. </p>
<p class="scroll-into-view-content">Your business is my business as soon as you hit that contact button. I'm
ready
to attend to your needs as soon as possible. Just drop a line.</p>
<a href="mailto:benoti.san@gmail.com" class="scroll-into-view-content-2" data-delay="500">
Email Address&nbsp;<span class="material-icons">mail</span>
</a>
@ -303,7 +385,8 @@
<!-- #################################################################################-- Scripts -->
<script src="scripts/anime.min.js"></script>
<script src="scripts/main.min.js"></script>
<script src="scripts/lottie.min.js"></script>
<script src="scripts/main.js"></script>
</body>

460
main.css
View File

@ -67,6 +67,11 @@ header > div:nth-of-type(1) {
transform-style: preserve-3d;
}
header > div:nth-of-type(2) {
position: relative;
transform-style: preserve-3d;
}
header.scrolled {
padding: 20px;
background-color: white;
@ -97,7 +102,7 @@ header > a {
color: inherit;
display: flex;
align-items: center;
font-weight: 900;
font-weight: 700;
position: relative;
perspective: 500px;
transform-style: preserve-3d;
@ -142,6 +147,7 @@ nav {
.hamburger-button {
width: 40px;
min-width: 40px;
height: 40px;
padding: 10px 0;
display: none;
@ -254,6 +260,11 @@ p {
letter-spacing: .5px;
}
p a {
color: var(--main-color);
border-bottom: 1px solid var(--main-color);
}
span {
font-size: inherit;
font-weight: inherit;
@ -403,6 +414,45 @@ input:focus {
#preloader-container {
position: fixed;
width: 100vw;
height: 100vh;
top: 0;
left: 0;
background-color: #1b239b;
z-index: 50000;
}
#preloader-container img:nth-child(1) {
min-width: 110%;
min-height: 110vh;
left: -5%;
top: -5%;
position: absolute;
opacity: .2;
}
#preloader-container img:nth-child(2) {
width: 50px;
align-self: center;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
animation: preloaderanimation 2s ease-in-out infinite normal both;
}
@keyframes preloaderanimation {
0%{filter: hue-rotate(0deg);}
50%{filter: hue-rotate(90deg);}
100%{filter: hue-rotate(0deg);}
}
@ -466,6 +516,7 @@ input:focus {
justify-content: flex-end;
perspective: 600px;
padding-bottom: 30px;
transform-style: preserve-3d;
}
.hero-text-section-graphic img, .hero-text-section-graphic a {
@ -482,6 +533,37 @@ input:focus {
width: 100%;
}
.hero-text-section-graphic > div:nth-of-type(1) {
position: absolute;
width: 1vw;
height: 1vw;
background-color: var(--sec-color-1);
top: 30vh;
left: -6vw;
transform: translateZ(100px) rotate(5deg);
}
.hero-text-section-graphic > div:nth-of-type(2) {
position: absolute;
width: 2vw;
height: 2vw;
background-color: var(--sec-color-3);
bottom: 30vh;
left: -8vw;
transform: translateZ(120px) rotate(-25deg);
z-index: -1;
}
.hero-text-section-graphic > div:nth-of-type(3) {
position: absolute;
width: 1.5vw;
height: 1.5vw;
background-color: rgba(99,105,176,0.2);
top: 50vh;
right: 13vw;
transform: translateZ(100px) rotate(-2deg);
}
@ -505,7 +587,7 @@ input:focus {
min-height: 110vh;
left: -5%;
top: -5%;
opacity: 0.2;
opacity: 1;
}
#mountains {
@ -536,7 +618,7 @@ input:focus {
background-size: cover;
opacity: .8;
transform-style: preserve-3d;
transition: all 1s cubic-bezier(0.1, 0.63, 0.355, 1);
transition: all .8s cubic-bezier(0.1, 0.63, 0.355, 1);
}
.benjamin-image-block-overlay {
@ -550,16 +632,19 @@ input:focus {
.benjamin-big-text-block {
position: absolute;
/* width: 500px;
height: 300px; */
font-size: 10.5vw;
bottom: 0px;
left: 5%;
font-weight: 900;
font-weight: 700;
line-height: .8;
color: white;
mix-blend-mode: overlay;
filter: drop-shadow(0 0 20px rgba(0,0,0,0.4));
padding: 40px;
transform-style: preserve-3d;
/* background-color: #747bef; */
/* transition: all .5s ease; */
}
@ -649,18 +734,19 @@ input:focus {
}
.my-work-section > div:nth-child(1) {
.my-work-section > div:nth-of-type(1) {
color: rgba(0,0,0,0.6);
align-items: flex-end;
}
.my-work-section > div:nth-child(2) {
.my-work-section > div:nth-of-type(2) {
background-color: var(--sec-color-2);
display: flex;
align-items: center;
justify-content: center;
perspective: 600px;
transform-style: preserve-3d;
padding: 0;
/* width: 20%;*/
}
@ -674,13 +760,152 @@ input:focus {
}
.portfolio-items-container {
width: 70%;
height: 70%;
width: 100%;
height: 100%;
/* background-color: white;
box-shadow: 0px 10px 20px -5px rgba(0,0,0,0.2);
transform-style: preserve-3d; */
display: flex;
align-items: center;
justify-content: center;
perspective: 600px;
transform-style: preserve-3d;
}
.portfolio-buttons-container {
display: flex;
}
.portfolio-buttons-container button {
width: 50px;
height: 50px;
background-color: var(--main-color);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 5px;
transition: background .3s ease-out;
}
.portfolio-buttons-container button:hover {
background-color: var(--dark-color);
background-position: -100px 0px;
}
.portfolio-buttons-container button img {
width: 15px;
height: 15px;
}
.portfolio-right-button {
transform: rotate(-90deg);
}
.portfolio-left-button {
transform: rotate(90deg);
}
.portfolio-entry {
position: absolute;
width: 80%;
height: 80%;
background-color: yellow;
overflow: hidden;
background-color: white;
box-shadow: 0px 10px 20px -5px rgba(0,0,0,0.2);
transform-style: preserve-3d;
}
.portfolio-entry > img {
width: 100%;
position: relative;
pointer-events: none;
}
.portfolio-entry > div:nth-of-type(1) {
width: 90%;
padding: 40px 40px 80px 40px;
display: flex;
flex-direction: column;
align-items: center;
background-color: rgba(28,55,102,0.9);
color: white;
position: absolute;
z-index: 2000;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
text-align: center;
opacity: 0;
transition: all .4s cubic-bezier( 0.1, 0.63, 0.355, 1 );
}
.portfolio-entry:hover > div:nth-of-type(1) {
opacity: 1;
}
.portfolio-entry > div:nth-of-type(1) h3, .portfolio-entry div:nth-of-type(1) p {
text-align: inherit;
}
.portfolio-entry > div:nth-of-type(1) p {
font-size: 16px;
}
.portfolio-entry > div:nth-of-type(2) {
padding: 10px;
display: flex;
align-items: center;
color: white;
position: absolute;
z-index: 2000;
bottom: 10px;
left: 50%;
transform: translateX(-50%);
transition: all .4s cubic-bezier( 0.1, 0.63, 0.355, 1 );
}
.portfolio-entry:hover > div:nth-of-type(2) {
bottom: 30px;
}
.portfolio-entry:hover .specialty-skill {
background-color: var(--sec-color-1);
}
.portfolio-entry:hover .specialty-skill:hover {
background-color: rgba(99,105,176,0.6);
}
.portfolio-entry .specialty-skill {
background-color: var(--main-color);
width: 40px;
height: 40px;
padding: 10px;
}
.portfolio-entry .specialty-skill img {
width: 100%;
height: 100%;
}
#github-to-asana-animation {
width: 250px;
height: 400px;
filter: drop-shadow(0px 10px 20px rgba(0,0,0,0.2));
position: absolute;
top: 20px;
right: 20px;
}
#github-to-asana > img {
width: 80%;
box-shadow: 0px 0px 40px -5px rgba(0,0,0,0.2);
margin-left: 40px;
margin-top: -550px;
}
@ -697,7 +922,18 @@ input:focus {
.about-me-section > div:nth-child(1) {
background-color: var(--sec-color-3);
/* width: 20%;*/
overflow: hidden;
padding: 0;
align-items: flex-start;
justify-content: flex-start;
}
.about-me-section img {
mix-blend-mode: multiply;
opacity: 0;
position: relative;
top: -150px;
width: 100%;
}
.about-me-section > div:nth-child(2) p {
@ -717,7 +953,8 @@ input:focus {
color: white;
text-align: center;
padding: 150px 80px 120px 80px;
height: auto;
height: 100vh;
justify-content: center;
}
.my-specialties-section h2 {
@ -739,7 +976,20 @@ input:focus {
margin-bottom: 30px;
}
.my-specialties-section > div > div {
/* .my-specialties-section > div > div {
width: 80px;
height: 80px;
background-color: var(--main-color);
margin: 10px;
border-radius: 50%;
transform-style: preserve-3d;
padding: 20px;
cursor: pointer;
transition: all .8s cubic-bezier(0.075, 0.82, 0.165, 1);
position: relative;
} */
.specialty-skill {
width: 80px;
height: 80px;
background-color: var(--main-color);
@ -756,6 +1006,10 @@ input:focus {
background-color: rgba(99,105,176,0.6);
}
.specialty-skill:hover {
background-color: rgba(99,105,176,0.6);
}
.my-specialties-section > div > div:nth-of-type(4) {
/* padding: 10px; */
}
@ -765,7 +1019,23 @@ input:focus {
height: 100%;
}
.my-specialties-section > div > div > div {
/* .my-specialties-section > div > div > div {
padding: 20px;
border-radius: 10px;
background-color: var(--sec-color-1);
color: white;
position: absolute;
top: -70px;
left: 50%;
box-shadow: 0px 10px 20px -5px rgba(0,0,0,0.3);
white-space: nowrap;
transition: all .4s cubic-bezier(0.075, 0.82, 0.165, 1);
opacity: 0;
pointer-events: none;
transform: translateX(-50%);
} */
.specialty-skill > div {
padding: 20px;
border-radius: 10px;
background-color: var(--sec-color-1);
@ -781,7 +1051,12 @@ input:focus {
transform: translateX(-50%);
}
.my-specialties-section > div > div:hover > div {
/* .my-specialties-section > div > div:hover > div {
opacity: 1;
top: -80px;
} */
.specialty-skill:hover > div {
opacity: 1;
top: -80px;
}
@ -979,7 +1254,7 @@ input:focus {
}
.hero-section > div:nth-child(2) {
padding: 140px 30px 60px 60px;
padding: 140px 60px 60px 60px;
font-size: 36px;
}
@ -992,6 +1267,10 @@ input:focus {
width: 40%;
}
.main-text-block {
max-width: 100%;
}
.main-text-block h1 a {
background-position: 0px 60px;
}
@ -1013,6 +1292,31 @@ input:focus {
width: 100%;
}
.hero-text-section-graphic > div:nth-of-type(1) {
display: none;
}
.hero-text-section-graphic > div:nth-of-type(2) {
display: none;
}
.hero-text-section-graphic > div:nth-of-type(3) {
display: none;
}
.about-me-section > div:nth-child(1) {
height: 600px;
}
.about-me-section > div:nth-child(2) {
max-height: 600px;
}
.about-me-section img {
width: 120%;
top: -50px;
}
}
@ -1025,6 +1329,15 @@ input:focus {
display: flex;
}
header > a > div {
position: absolute;
left: 46px;
}
header img:not(#linkedin img) {
margin-right: 0;
}
@ -1086,7 +1399,12 @@ input:focus {
border-bottom: 2px solid #ddd;
z-index: 0;
padding-top: 120px;
box-shadow: 0px 10px 20px rgba(0,0,0,0.5);
box-shadow: 0px 10px 20px rgba(0,0,0,0.1);
}
header > div:nth-of-type(2) {
position: relative;
transform-style: preserve-3d;
}
@ -1110,7 +1428,8 @@ input:focus {
.hero-text-section-graphic {
height: 100%;
width: 50%;
width: 40%;
right: 0;
}
.benjamin-image-block-wrapper {
@ -1174,7 +1493,7 @@ input:focus {
.my-work-section > div:nth-child(2) {
width: 100%;
height: auto;
padding: 80px;
padding: 40px;
}
.my-work-section h2 {
@ -1186,7 +1505,20 @@ input:focus {
}
.portfolio-items-container {
height: 400px;
height: 600px;
}
.portfolio-buttons-container {
justify-content: center;
}
.my-work-section > div:nth-of-type(1) {
align-items: center;
}
.portfolio-entry {
width: 100%;
height: 500px;
}
@ -1201,7 +1533,16 @@ input:focus {
}
.about-me-section > div:nth-child(1) {
height: 500px;
height: 600px;
}
.about-me-section > div:nth-child(2) {
padding: 60px;
}
.about-me-section img {
top: -100px;
width: 100%;
}
@ -1318,14 +1659,57 @@ input:focus {
/* My work section */
.my-work-section > div:nth-child(2) {
padding: 40px;
padding: 20px;
}
.portfolio-items-container {
height: 300px;
width: 300px;
height: 600px;
width: 100%;
}
.portfolio-entry > div:nth-of-type(2) {
flex-wrap: wrap;
justify-content: center;
width: 100%;
}
.portfolio-entry > div:nth-of-type(1) {
padding: 40px 20px 160px 20px;
width: 100%;
bottom: 0;
height: 100%;
}
#github-to-asana > img {
margin-left: 0px;
margin-top: -550px;
width: 90%;
}
#github-to-asana-animation {
width: 200px;
height: 300px;
position: absolute;
top: 10px;
right: 10px;
}
.about-me-section > div:nth-child(2) {
padding: 20px;
}
.about-me-section img {
top: 0;
width: 120%;
}
/* Contact Me section */
@ -1347,6 +1731,7 @@ input:focus {
.my-specialties-section {
padding: 100px 20px;
height: auto;
}
}
@ -1408,6 +1793,24 @@ input:focus {
height: 70%;
}
header > div:nth-of-type(2) {
margin-top: 165px;
opacity: 0;
border-top: 1px solid #ddd;
width: 100%;
justify-content: center;
padding-top: 15px;
}
header > div:nth-of-type(1) {
padding-top: 200px;
}
.hero-text-section-graphic {
height: 105%;
width: 60%;
}
}
@ -1417,10 +1820,21 @@ input:focus {
@media (max-width: 350px) {
@media (max-width: 382px) {
.about-me-section img {
width: auto;
min-height: 100%;
top: 0;
}
}
@media (max-width: 320px) {
#github-to-asana > img {
width: 120%;
}
}

1
main.min.css vendored

File diff suppressed because one or more lines are too long

15
scripts/lottie.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,25 +1,45 @@
function ben(element) {
return document.querySelector(element);
};
function benA(elements) {
return document.querySelectorAll(elements);
};
//############################################# -- Intro Animations
const heroTextSection = document.querySelector(".hero-section > div:nth-child(2)");
const myImageBlock = document.querySelector(".benjamin-image-block-wrapper");
const myBigTextBlock = document.querySelector(".benjamin-big-text-block");
const mainTextBlock = document.querySelector(".main-text-block");
const mainCTA = document.querySelector(".main-cta-button");
const allHeaderElements = document.querySelectorAll("header *:not(header > div)");
const mountains = document.querySelector("#mountains");
const clouds = document.querySelector("#clouds");
const footerController = document.querySelector(".contact-section-controller");
const header = document.querySelector("header");
const heroTxtGraphic = document.querySelector(".hero-text-section-graphic");
const preloader = ben("#preloader-container");
const heroTextSection = ben(".hero-section > div:nth-child(2)");
const myImageBlock = ben(".benjamin-image-block-wrapper");
const myBigTextBlock = ben(".benjamin-big-text-block");
const mainTextBlock = ben(".main-text-block");
const mainCTA = ben(".main-cta-button");
const allHeaderElements = benA("header *:not(header > div)");
const mountains = ben("#mountains");
const clouds = ben("#clouds");
const footerController = ben(".contact-section-controller");
const header = ben("header");
const heroTxtGraphic = ben(".hero-text-section-graphic");
const socialLinks = ben("header > div:nth-of-type(2)");
// const heroTextGraphics = ben(".hero-text-section-graphic");
function intro() {
preloader.style.pointerEvents = "none";
anime({
targets: preloader,
opacity: 0,
// pointerEvents: "none",
easing: "easeOutQuad",
duration: 1200,
delay: 800,
});
if (window.innerWidth > 800) {
anime({
targets: heroTextSection,
@ -110,32 +130,38 @@ function intro() {
delay: 2600,
});
if (window.innerWidth > 600) {
anime({
targets: mountains,
translateY: [200, 0],
opacity: [0, 1],
easing: "cubicBezier(0.1, 0.63, 0.355, 1)",
duration: 1500,
delay: 1000,
})
anime({
targets: mountains,
left: [0, -50],
easing: "easeOutQuad",
duration: 800,
delay: 1600,
});
}
anime({
targets: mountains,
translateY: [
{ value: 200, duration: 0, delay: 0 },
{ value: 0, duration: 1500, delay: 1000 }
],
left: [
{ value: 0, duration: 0, delay: 0 },
{ value: -50, duration: 800, delay: 1600 },
],
opacity: [
{ value: 0, duration: 0, delay: 0 },
{ value: 1, duration: 1500, delay: 1000 },
],
easing: "cubicBezier(0.1, 0.63, 0.355, 1)",
});
anime({
targets: clouds,
opacity: [0.2, 1],
targets: heroTxtGraphic,
opacity: [0, 1],
translateZ: [100, 10],
easing: "easeOutQuad",
duration: 1200,
delay: 800,
delay: 2000,
});
anime({
targets: benA(".hero-text-section-graphic *"),
opacity: [0, 1],
easing: "easeOutQuad",
duration: 800,
delay: anime.stagger(300, { start: 3000 }, { easing: 'easeOutQuad' }),
});
}
@ -213,7 +239,7 @@ introInit();
//############################################# -- Header Scroll interactions
var headerController = document.querySelector("#header-controller");
var headerController = ben("#header-controller");
var windowRect = {
rootMargin: "0px",
};
@ -225,9 +251,11 @@ function changeHeader(entry) {
if (entry[0].isIntersecting) {
if (window.innerWidth > 800) {
document.querySelectorAll(".nav-link").forEach(item => {
benA(".nav-link.footer-special").forEach(item => {
if (entry[0].target.className == "contact-section-controller") { item.style.color = "white"; }
if (entry[0].target.className == "contact-section-controller") {
item.style.color = "white";
}
});
header.className = "none";
@ -240,13 +268,21 @@ function changeHeader(entry) {
duration: 400,
easing: "easeOutCubic",
});
}
anime({
targets: "header > a > div",
translateX: 0,
opacity: 1,
duration: 1000,
});
if (window.innerWidth < 801 && window.innerWidth > 450) {
anime({
targets: "header > a > div",
translateX: 0,
targets: socialLinks,
opacity: 1,
duration: 1000,
easing: "easeOutCubic",
duration: 300,
});
}
@ -256,7 +292,7 @@ function changeHeader(entry) {
// if (entry[0].isIntersecting) {
document.querySelectorAll(".nav-link").forEach(item => {
benA(".nav-link.footer-special").forEach(item => {
if (entry[0].target.className == "contact-section-controller") { item.style.color = ""; }
});
@ -281,6 +317,15 @@ function changeHeader(entry) {
opacity: 0,
duration: 1000,
});
if (window.innerWidth < 801 && window.innerWidth > 450) {
anime({
targets: socialLinks,
opacity: 0,
easing: "easeOutCubic",
duration: 300,
});
}
}
}
@ -313,7 +358,7 @@ window.addEventListener("load", () => {
//############################################# -- Secitons intersection Observer
const sections = document.querySelectorAll(".scroll-into-view");
const sections = benA(".scroll-into-view");
//var sectionContainer = document.querySelector(".my-work-section > div:nth-child(2)");
let footerHeaderFn = () => { headerObserver.observe(footerController); };
@ -350,10 +395,10 @@ sections.forEach(item => {
//############################################# -- Content intersection Observer
const contents = document.querySelectorAll(".scroll-into-view-content");
const contents = benA(".scroll-into-view-content");
const contentsIO = new IntersectionObserver(contentsObserverFn, { rootMargin: "0px 0px -100px 0px" });
const contentsAlt = document.querySelectorAll(".scroll-into-view-content-2");
const contentsAlt = benA(".scroll-into-view-content-2");
const contentsIOAlt = new IntersectionObserver(contentsObserverFn, { rootMargin: "0px" });
function contentsObserverFn(entries) {
@ -379,6 +424,31 @@ function contentsObserverFn(entries) {
}
const myImageAboutSectionObserver = new IntersectionObserver(contentsObserverAboutImg, { rootMargin: "0px 0px -200px 0px", });
const myImageAbout = ben(".about-me-section img");
function contentsObserverAboutImg(entries) {
if (entries[0].isIntersecting) {
myImageAbout.animate([
{
transform: "none",
opacity: .5,
}
], {
duration: 1300,
easing: "cubic-bezier(0.1, 0.63, 0.355, 1)",
fill: "forwards",
delay: 1000,
});
myImageAboutSectionObserver.unobserve(myImageAbout);
}
}
myImageAboutSectionObserver.observe(myImageAbout);
contents.forEach(item => {
@ -409,11 +479,11 @@ anime({
direction: "alternate",
});
const navSections = document.querySelectorAll("section");
const myWorkNavLink = document.querySelector("#my-work-link");
const aboutMeNavLink = document.querySelector("#about-me-link");
const resumeLink = document.querySelector("#resume-link");
const contactMeNavLink = document.querySelector("#contact-me-link");
const navSections = benA("section");
const myWorkNavLink = ben("#my-work-link");
const aboutMeNavLink = ben("#about-me-link");
const resumeLink = ben("#resume-link");
const contactMeNavLink = ben("#contact-me-link");
const anchorLinksObserver = new IntersectionObserver(anchorLinksFn, { rootMargin: "0px", threshold: 0.75 });
@ -472,64 +542,126 @@ function parralaxMouse(event) {
// mountains.style.transition = "all .7s ease";
clouds.animate([{
transform: `translateX(${xPos * -10}px) translateY(${yPos * -10}px)`,
}], {
easing: "ease",
fill: "forwards",
// let items = [clouds, mountains, myImageBlock, mainTextBlock, heroTxtGraphic, myBigTextBlock];
// items.forEach(item => { item.style.transition = "all 1s ease" });
// clouds.animate([{
// transform: `translateX(${xPos * -10}px) translateY(${yPos * -10}px)`,
// }], {
// easing: "ease",
// fill: "forwards",
// });
// mountains.animate([{
// transform: `translateX(${xPos * -100}px) translateY(${yPos * -20}px)`,
// }], {
// easing: "ease",
// fill: "forwards",
// direction: "normal"
// });
// myImageBlock.animate([{
// transform: `translateX(${xPos * -30}px) translateY(${yPos * -10}px) rotateX(${yPos * 4}deg) rotateY(${xPos * -3}deg)`,
// }], {
// easing: "ease",
// fill: "forwards",
// });
// mainTextBlock.animate([{
// transform: `translateZ(15px) rotateX(${yPos * 2}deg) rotateY(${xPos * -2}deg)`,
// }], {
// easing: "ease-out",
// fill: "forwards",
// });
// heroTxtGraphic.animate([{
// transform: `translateX(${xPos * -5}px) translateY(${yPos * -5}px) translateZ(10px) rotateX(${yPos * 2}deg) rotateY(${xPos * -2}deg)`,
// }], {
// easing: "ease",
// fill: "forwards",
// });
// myBigTextBlock.animate([{
// transform: `translateX(${xPos * -40}px) translateY(${yPos * -20}px) translateZ(50px) rotateX(${yPos * 4}deg) rotateY(${xPos * -3}deg)`,
// }], {
// easing: "ease",
// fill: "forwards",
// });
anime({
targets: mountains,
translateX: xPos * -100,
translateY: yPos * -20,
easing: "easeOutQuad",
duration: 700,
});
mountains.animate([{
transform: `translateX(${xPos * -100}px) translateY(${yPos * -20}px)`,
}], {
easing: "ease",
fill: "forwards",
direction: "normal"
anime({
targets: clouds,
translateX: xPos * -10,
translateY: yPos * -10,
easing: "easeOutQuad",
duration: 500,
});
myImageBlock.animate([{
transform: `translateX(${xPos * -30}px) translateY(${yPos * -10}px) rotateX(${yPos * 4}deg) rotateY(${xPos * -3}deg)`,
}], {
easing: "ease",
fill: "forwards",
anime({
targets: myImageBlock,
translateX: xPos * -30,
translateY: yPos * -10,
easing: "easeOutQuad",
duration: 500,
rotateX: yPos * 4,
rotateY: xPos * -3
});
mainTextBlock.animate([{
transform: `translateZ(15px) rotateX(${yPos * 2}deg) rotateY(${xPos * -2}deg)`,
}], {
easing: "ease-out",
fill: "forwards",
anime({
targets: myBigTextBlock,
translateX: xPos * -40,
translateY: yPos * -20,
translateZ: 50,
rotateX: yPos * 4,
rotateY: xPos * -3,
easing: "easeOutQuad",
duration: 500,
});
heroTxtGraphic.animate([{
transform: `translateX(${xPos * -5}px) translateY(${yPos * -5}px) translateZ(10px) rotateX(${yPos * 2}deg) rotateY(${xPos * -2}deg)`,
}], {
easing: "ease",
fill: "forwards",
anime({
targets: mainTextBlock,
translateZ: 15,
rotateX: yPos * 2,
rotateY: xPos * -2,
easing: "easeOutQuad",
duration: 300,
});
myBigTextBlock.animate([{
transform: `translateX(${xPos * -40}px) translateY(${yPos * -20}px) translateZ(50px) rotateX(${yPos * 4}deg) rotateY(${xPos * -3}deg)`,
}], {
easing: "ease",
fill: "forwards",
anime({
targets: heroTxtGraphic,
translateX: xPos * -5,
translateY: yPos * -5,
translateZ: 10,
rotateX: yPos * 2,
rotateY: xPos * -2,
easing: "easeOutQuad",
duration: 300,
});
}
const uiuxDesignerLinks = document.querySelectorAll(".main-hero-text a");
const myImage = document.querySelector(".benjamin-image-block");
const myImageOverlay = document.querySelector(".benjamin-image-block-overlay");
const serviceDisplay = document.querySelector(".service-display-block");
const uiuxDesignerLinks = benA(".main-hero-text a");
const myImage = ben(".benjamin-image-block");
const myImageOverlay = ben(".benjamin-image-block-overlay");
const serviceDisplay = ben(".service-display-block");
uiuxDesignerLinks.forEach(item => {
item.addEventListener("mouseover", function (event) {
// myImage.style.transform = "rotateX(1deg) rotateY(2deg) rotateZ(-2deg) translateZ(20px) translateX(20px)";
myImage.style.width = "23vw";
myImage.style.width = "20vw";
if (event.target.className == "uiux-designer-link") {
@ -584,51 +716,111 @@ uiuxDesignerLinks.forEach(item => {
//############################################# -- Mobile hamburger interactrions
const hamburgerButton = document.querySelector(".hamburger-button");
const mobileNavWrapper = document.querySelector("header > div:nth-of-type(1)");
const hamburgerButton = ben(".hamburger-button");
const mobileNavWrapper = ben("header > div:nth-of-type(1)");
let a = 0;
hamburgerButton.addEventListener("click", () => {
if (a == 0) {
mobileNavWrapper.animate([
{
opacity: 0,
height: "0px",
pointerEvents: "none",
transform: "translateZ(50px) translateY(-50px)"
},
{
opacity: 1,
height: "450px",
pointerEvents: "visible",
transform: "translateZ(0px) translateY(0px)"
}
], {
fill: "both",
duration: 600,
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
});
} else {
mobileNavWrapper.animate([
{
opacity: 1,
height: "450px",
pointerEvents: "visible",
transform: "translateZ(0px) translateY(0px)"
if (window.innerWidth > 449) {
},
{
opacity: 0,
height: "0px",
pointerEvents: "none",
transform: "translateZ(50px) translateY(-50px)"
}
], {
fill: "both",
duration: 600,
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
mobileNavWrapper.animate([
{
opacity: 0,
height: "0px",
pointerEvents: "none",
transform: "translateZ(50px) translateY(-50px)"
},
{
opacity: 1,
height: "350px",
pointerEvents: "visible",
transform: "translateZ(0px) translateY(0px)"
}
], {
fill: "both",
duration: 300,
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
});
} else {
mobileNavWrapper.animate([
{
opacity: 0,
height: "0px",
pointerEvents: "none",
transform: "translateZ(50px) translateY(-50px)"
},
{
opacity: 1,
height: "420px",
pointerEvents: "visible",
transform: "translateZ(0px) translateY(0px)"
}
], {
fill: "both",
duration: 300,
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
});
}
anime({
targets: socialLinks,
opacity: 1,
easing: "easeOutCubic",
duration: 300,
});
} else {
if (window.innerWidth > 449) {
mobileNavWrapper.animate([
{
opacity: 1,
height: "350px",
pointerEvents: "visible",
transform: "translateZ(0px) translateY(0px)"
},
{
opacity: 0,
height: "0px",
pointerEvents: "none",
transform: "translateZ(50px) translateY(-50px)"
}
], {
fill: "both",
duration: 300,
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
});
} else {
mobileNavWrapper.animate([
{
opacity: 1,
height: "420px",
pointerEvents: "visible",
transform: "translateZ(0px) translateY(0px)"
},
{
opacity: 0,
height: "0px",
pointerEvents: "none",
transform: "translateZ(50px) translateY(-50px)"
}
], {
fill: "both",
duration: 300,
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
});
}
anime({
targets: socialLinks,
opacity: 0,
easing: "easeOutCubic",
duration: 300,
});
a = -1;
@ -642,27 +834,61 @@ hamburgerButton.addEventListener("click", () => {
hamburgerButton.addEventListener("blur", () => {
mobileNavWrapper.animate([
{
opacity: 1,
height: "450px",
pointerEvents: "visible",
transform: "translateZ(0px) translateY(0px)"
if (a == 1) {
},
{
opacity: 0,
height: "0px",
pointerEvents: "none",
transform: "translateZ(50px) translateY(-50px)"
if (window.innerWidth > 449) {
mobileNavWrapper.animate([
{
opacity: 1,
height: "350px",
pointerEvents: "visible",
transform: "translateZ(0px) translateY(0px)"
},
{
opacity: 0,
height: "0px",
pointerEvents: "none",
transform: "translateZ(50px) translateY(-50px)"
}
], {
fill: "both",
duration: 600,
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
});
} else {
mobileNavWrapper.animate([
{
opacity: 1,
height: "420px",
pointerEvents: "visible",
transform: "translateZ(0px) translateY(0px)"
},
{
opacity: 0,
height: "0px",
pointerEvents: "none",
transform: "translateZ(50px) translateY(-50px)"
}
], {
fill: "both",
duration: 600,
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
});
}
], {
fill: "both",
duration: 600,
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
});
a = 0;
anime({
targets: socialLinks,
opacity: 0,
easing: "easeOutCubic",
duration: 300,
});
a = 0;
}
// mobileNavWrapper.style.opacity = "1"
});
@ -675,6 +901,125 @@ hamburgerButton.addEventListener("blur", () => {
ben(".my-specialties-section button").addEventListener("click", () => {
window.location = "docs/Benjamin-Toby-CV.pdf";
});
//############################################# -- My Work Slider
const portfolioContainter = ben(".portfolio-items-container");
const portfolioEntries = benA(".portfolio-entry");
const portfolioLeftButton = ben(".portfolio-left-button");
const portfolioRightButton = ben(".portfolio-right-button");
let p = 0;
function portfolioClickEvents() {
// anime({
// targets: portfolioEntries,
// opacity: [1, 0],
// translateZ: [0, -50],
// duration: 300,
// easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
// });
if (p == 0) {
portfolioLeftButton.style.opacity = ".2";
} else if (p == (portfolioEntries.length - 1)) {
portfolioRightButton.style.opacity = ".2";
}
portfolioEntries.forEach(entry => {
// entry.style.opacity = "0";
entry.animate([
{ opacity: 0, transform: "translateZ(-50px)", pointerEvents: "none" }
], {
duration: 500,
fill: "both",
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
});
});
// portfolioEntries[p].style.opacity = "1";
// anime({
// targets: (portfolioEntries[p]),
// opacity: [0, 1],
// translateZ: [-50, 0],
// duration: 300,
// easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )",
// delay: 200,
// });
portfolioEntries[p].animate([
{ opacity: 1, transform: "translateZ(0px)", pointerEvents: "visible" }
], {
duration: 500,
fill: "both",
delay: 200,
easing: "cubic-bezier( 0.1, 0.63, 0.355, 1 )"
});
}
portfolioClickEvents();
portfolioLeftButton.style.opacity = ".2";
portfolioRightButton.addEventListener("click", () => {
if (p == (portfolioEntries.length - 1)) { return; };
p++;
portfolioClickEvents();
portfolioLeftButton.style.opacity = "1";
});
portfolioLeftButton.addEventListener("click", () => {
if (p == 0) { return; };
p--;
portfolioClickEvents();
portfolioRightButton.style.opacity = "1";
});
//############################################# -- Lottie Animations
const portfolioEntry1 = ben("#transcend-barriers");
const portfolioEntry2 = ben("#github-to-asana-animation");
const portfolioEntry1Animation = lottie.loadAnimation({
container: portfolioEntry1,
renderer: 'svg',
loop: true,
autoplay: true,
path: "scripts/portfolio-item-1.json"
});
const portfolioEntry2Animation = lottie.loadAnimation({
container: portfolioEntry2,
renderer: 'svg',
loop: true,
autoplay: true,
path: "scripts/portfolio-item-2.json"
});
@ -682,5 +1027,3 @@ hamburgerButton.addEventListener("blur", () => {

17
scripts/main.min.js vendored
View File

@ -1,17 +0,0 @@
const heroTextSection=document.querySelector(".hero-section > div:nth-child(2)");const myImageBlock=document.querySelector(".benjamin-image-block-wrapper");const myBigTextBlock=document.querySelector(".benjamin-big-text-block");const mainTextBlock=document.querySelector(".main-text-block");const mainCTA=document.querySelector(".main-cta-button");const allHeaderElements=document.querySelectorAll("header *:not(header > div)");const mountains=document.querySelector("#mountains");const clouds=document.querySelector("#clouds");const footerController=document.querySelector(".contact-section-controller");const header=document.querySelector("header");const heroTxtGraphic=document.querySelector(".hero-text-section-graphic");function intro(){if(window.innerWidth>800){anime({targets:heroTextSection,width:[0,"50%"],translateX:[200,0],easing:"cubicBezier( 0.93, 0, 0.09, 1 )",duration:1500,delay:1000,})}else if(window.innerWidth<801&&window.innerWidth>600){anime({targets:heroTextSection,width:[0,"60%"],translateX:[200,0],easing:"cubicBezier( 0.93, 0, 0.09, 1 )",duration:1500,delay:1000,})}else if(window.innerWidth<601){anime({targets:heroTextSection,width:[0,"100%"],translateX:[500,0],easing:"cubicBezier( 0.93, 0, 0.09, 1 )",duration:1500,delay:0,})}
anime({targets:allHeaderElements,translateX:[-20,0],opacity:[0,1],easing:"easeOutQuad",duration:800,delay:anime.stagger(100,{start:1000}),});anime({targets:myBigTextBlock,translateY:[100,0],translateZ:50,opacity:[0,1],easing:"cubicBezier( 0.1, 0.63, 0.355, 1 )",duration:1200,delay:2000,});anime({targets:myImageBlock,translateY:[100,0],opacity:[0,1],easing:"cubicBezier( 0.1, 0.63, 0.355, 1 )",duration:1500,delay:2200,});if(window.innerWidth<601){anime({targets:mainTextBlock,translateX:[-50,0],translateZ:[30,0],opacity:[0,1],easing:"cubicBezier( 0.1, 0.63, 0.355, 1 )",duration:1200,delay:2500,})}else{anime({targets:mainTextBlock,translateX:[-50,0],translateZ:[30,15],opacity:[0,1],easing:"cubicBezier( 0.1, 0.63, 0.355, 1 )",duration:1200,delay:2500,})}
anime({targets:mainCTA,translateX:[-50,0],opacity:[0,1],easing:"cubicBezier( 0.1, 0.63, 0.355, 1 )",duration:1200,delay:2600,});if(window.innerWidth>600){anime({targets:mountains,translateY:[200,0],opacity:[0,1],easing:"cubicBezier(0.1, 0.63, 0.355, 1)",duration:1500,delay:1000,})
anime({targets:mountains,left:[0,-50],easing:"easeOutQuad",duration:800,delay:1600,})}
anime({targets:clouds,opacity:[0.2,1],easing:"easeOutQuad",duration:1200,delay:800,})}
function introInit(){if(window.innerWidth<601){anime({targets:heroTextSection,width:[0],translateX:500,duration:0})}else{anime({targets:heroTextSection,width:[0],translateX:200,duration:0})}
anime({targets:allHeaderElements,translateX:[-20],opacity:[0],duration:0});anime({targets:myBigTextBlock,translateY:[100],opacity:[0],duration:0});anime({targets:myImageBlock,translateY:[100],opacity:[0],duration:0});anime({targets:mainTextBlock,translateX:[-50],opacity:[0],duration:0});anime({targets:mainCTA,translateX:[-50],opacity:[0],duration:0});anime({targets:mountains,opacity:0,duration:0})}
introInit();var headerController=document.querySelector("#header-controller");var windowRect={rootMargin:"0px",};var headerObserver=new IntersectionObserver(changeHeader,windowRect);function changeHeader(entry){if(entry[0].isIntersecting){if(window.innerWidth>800){document.querySelectorAll(".nav-link").forEach(item=>{if(entry[0].target.className=="contact-section-controller"){item.style.color="white"}});header.className="none";anime({targets:"header > a > img",width:40,height:100,top:0,duration:400,easing:"easeOutCubic",});anime({targets:"header > a > div",translateX:0,opacity:1,duration:1000,})}}else{if(window.innerWidth>800){document.querySelectorAll(".nav-link").forEach(item=>{if(entry[0].target.className=="contact-section-controller"){item.style.color=""}});header.classList.add("scrolled");anime({targets:"header > a > img",width:60,height:130,top:20,duration:400,easing:"easeOutCubic",})}
anime({targets:"header > a > div",translateX:-50,opacity:0,duration:1000,})}}
window.addEventListener("load",()=>{setTimeout(()=>{intro()},1000);setTimeout(()=>{headerObserver.observe(headerController)},3000);if(window.innerWidth>800){setTimeout(()=>{window.addEventListener("mousemove",parralaxMouse)},4000)}});const sections=document.querySelectorAll(".scroll-into-view");let footerHeaderFn=()=>{headerObserver.observe(footerController)};var windowRect2={rootMargin:"0px 0px -200px 0px",};var sectionsIO=new IntersectionObserver(sectionsObserverFn,windowRect2);function sectionsObserverFn(entries){entries.forEach(entry=>{if(entry.isIntersecting){entry.target.classList.add("scrolled-into-view");if(entry.target.id=="footer-right-section"&&entries[2]){return}
if(window.innerWidth>800){footerHeaderFn()}}})}
sections.forEach(item=>{sectionsIO.observe(item)});const contents=document.querySelectorAll(".scroll-into-view-content");const contentsIO=new IntersectionObserver(contentsObserverFn,{rootMargin:"0px 0px -100px 0px"});const contentsAlt=document.querySelectorAll(".scroll-into-view-content-2");const contentsIOAlt=new IntersectionObserver(contentsObserverFn,{rootMargin:"0px"});function contentsObserverFn(entries){entries.forEach(entry=>{if(entry.isIntersecting){entry.target.animate([{transform:"none",opacity:1,}],{duration:1300,easing:"cubic-bezier(0.1, 0.63, 0.355, 1)",fill:"forwards",delay:(entry.target.dataset.delay),});contentsIO.unobserve(entry.target);contentsIOAlt.unobserve(entry.target)}})}
contents.forEach(item=>{contentsIO.observe(item)});contentsAlt.forEach(item=>{contentsIOAlt.observe(item)});anime({targets:".hero-text-section-graphic img",translateY:[-5,5],easing:"easeInOutQuad",duration:1000,loop:!0,direction:"alternate",});const navSections=document.querySelectorAll("section");const myWorkNavLink=document.querySelector("#my-work-link");const aboutMeNavLink=document.querySelector("#about-me-link");const resumeLink=document.querySelector("#resume-link");const contactMeNavLink=document.querySelector("#contact-me-link");const anchorLinksObserver=new IntersectionObserver(anchorLinksFn,{rootMargin:"0px",threshold:0.75});navSections.forEach(item=>{anchorLinksObserver.observe(item)});function anchorLinksFn(entries){if(entries[3]){return}
entries.forEach(entry=>{myWorkNavLink.classList.remove("active-anchor");aboutMeNavLink.classList.remove("active-anchor");resumeLink.classList.remove("active-anchor");contactMeNavLink.classList.remove("active-anchor");if(entry.target.className=="hero-section"){return}else if(entry.target.className=="my-work-section"){myWorkNavLink.classList.add("active-anchor")}else if(entry.target.className=="about-me-section"){aboutMeNavLink.classList.add("active-anchor")}else if(entry.target.className=="my-specialties-section"){resumeLink.classList.add("active-anchor")}else if(entry.target.className=="contact-section"){contactMeNavLink.classList.add("active-anchor")}else{myWorkNavLink.classList.remove("active-anchor");aboutMeNavLink.classList.remove("active-anchor");resumeLink.classList.remove("active-anchor");contactMeNavLink.classList.remove("active-anchor")}})}
function parralaxMouse(event){let xPos=(event.clientX/window.innerWidth)-0.5;let yPos=(event.clientY/window.innerHeight)-0.5;clouds.animate([{transform:`translateX(${xPos * -10}px) translateY(${yPos * -10}px)`,}],{easing:"ease",fill:"forwards",});mountains.animate([{transform:`translateX(${xPos * -100}px) translateY(${yPos * -20}px)`,}],{easing:"ease",fill:"forwards",direction:"normal"});myImageBlock.animate([{transform:`translateX(${xPos * -30}px) translateY(${yPos * -10}px) rotateX(${yPos * 4}deg) rotateY(${xPos * -3}deg)`,}],{easing:"ease",fill:"forwards",});mainTextBlock.animate([{transform:`translateZ(15px) rotateX(${yPos * 2}deg) rotateY(${xPos * -2}deg)`,}],{easing:"ease-out",fill:"forwards",});heroTxtGraphic.animate([{transform:`translateX(${xPos * -5}px) translateY(${yPos * -5}px) translateZ(10px) rotateX(${yPos * 2}deg) rotateY(${xPos * -2}deg)`,}],{easing:"ease",fill:"forwards",});myBigTextBlock.animate([{transform:`translateX(${xPos * -40}px) translateY(${yPos * -20}px) translateZ(50px) rotateX(${yPos * 4}deg) rotateY(${xPos * -3}deg)`,}],{easing:"ease",fill:"forwards",})}
const uiuxDesignerLinks=document.querySelectorAll(".main-hero-text a");const myImage=document.querySelector(".benjamin-image-block");const myImageOverlay=document.querySelector(".benjamin-image-block-overlay");const serviceDisplay=document.querySelector(".service-display-block");uiuxDesignerLinks.forEach(item=>{item.addEventListener("mouseover",function(event){myImage.style.width="23vw";if(event.target.className=="uiux-designer-link"){myImageOverlay.style.backgroundColor="rgba(237,125,113,0.8)"}else if(event.target.className=="web-designer-link"){myImageOverlay.style.backgroundColor="rgba(117,240,230,0.8)"}else if(event.target.className=="frontend-designer-link"){myImageOverlay.style.backgroundColor="rgba(116,123,239,0.8)"}else if(event.target.className=="graphic-motion-designer-link"){myImageOverlay.style.backgroundColor="rgba(28,55,102,0.8)"}})});uiuxDesignerLinks.forEach(item=>{item.addEventListener("mouseout",function(){myImage.style.transform="none";myImageOverlay.style.backgroundColor="transparent";myImage.style.width="100%"})});const hamburgerButton=document.querySelector(".hamburger-button");const mobileNavWrapper=document.querySelector("header > div:nth-of-type(1)");let a=0;hamburgerButton.addEventListener("click",()=>{if(a==0){mobileNavWrapper.animate([{opacity:0,height:"0px",pointerEvents:"none",transform:"translateZ(50px) translateY(-50px)"},{opacity:1,height:"450px",pointerEvents:"visible",transform:"translateZ(0px) translateY(0px)"}],{fill:"both",duration:600,easing:"cubic-bezier( 0.1, 0.63, 0.355, 1 )"})}else{mobileNavWrapper.animate([{opacity:1,height:"450px",pointerEvents:"visible",transform:"translateZ(0px) translateY(0px)"},{opacity:0,height:"0px",pointerEvents:"none",transform:"translateZ(50px) translateY(-50px)"}],{fill:"both",duration:600,easing:"cubic-bezier( 0.1, 0.63, 0.355, 1 )"});a=-1}
a++});hamburgerButton.addEventListener("blur",()=>{mobileNavWrapper.animate([{opacity:1,height:"450px",pointerEvents:"visible",transform:"translateZ(0px) translateY(0px)"},{opacity:0,height:"0px",pointerEvents:"none",transform:"translateZ(50px) translateY(-50px)"}],{fill:"both",duration:600,easing:"cubic-bezier( 0.1, 0.63, 0.355, 1 )"});a=0})

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long