Repository: bedimcode/responsive-portfolio-website-JhonDoe Branch: master Commit: 06b1844a42ca Files: 5 Total size: 32.3 KB Directory structure: gitextract_3wk9ztpr/ ├── README.md ├── assets/ │ ├── css/ │ │ └── styles.css │ ├── js/ │ │ └── main.js │ └── sass/ │ └── styles.scss └── index.html ================================================ FILE CONTENTS ================================================ ================================================ FILE: README.md ================================================ # Responsive Personal Portfolio Website ## [Watch it on youtube](https://youtu.be/6cidbUHNZRQ) ### Responsive Personal Portfolio Website - Responsive Personal Portfolio Website Using HTML CSS And JavaScript - Contains animations when scrolling. - Smooth scrolling in each section. - Developed first with the Mobile First methodology, then for desktop. - Compatible with all mobile devices and with a beautiful and pleasant user interface. 💙 Join the channel to see more videos like this. [Bedimcode](https://www.youtube.com/@Bedimcode) ![preview img](/preview.png) ================================================ FILE: assets/css/styles.css ================================================ /*===== GOOGLE FONTS =====*/ @import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600;700&display=swap"); /*===== VARIABLES CSS =====*/ :root{ --header-height: 3rem; --font-medium: 500; } /*===== Colores =====*/ :root{ --first-color: #5361FF; --white-color: #FAFAFF; --dark-color: #2A3B47; --text-color: #697477; } /*===== Fuente y tipografia =====*/ :root{ --body-font: 'Montserrat', sans-serif; --big-font-size: 6.25rem; --h2-font-size: 1.25rem; --normal-font-size: .938rem; --small-font-size: .813rem; } @media screen and (min-width: 768px){ :root{ --big-font-size: 10.5rem; --h2-font-size: 2rem; --normal-font-size: 1rem; --small-font-size: .875rem; } } /*===== Margenes =====*/ :root{ --mb-1: .5rem; --mb-2: 1rem; --mb-3: 1.5rem; --mb-4: 2rem; } /*===== z index =====*/ :root{ --z-fixed: 100; } /*===== BASE =====*/ *,::before,::after{ box-sizing: border-box; } html{ scroll-behavior: smooth; } body{ margin: var(--header-height) 0 0 0; font-family: var(--body-font); font-size: var(--normal-font-size); font-weight: var(--font-medium); color: var(--text-color); line-height: 1.6; } h1,h2,p{ margin: 0; } ul{ margin: 0; padding: 0; list-style: none; } a{ text-decoration: none; color: var(--text-color); } img{ max-width: 100%; height: auto; display: block; } /*===== CLASS CSS ===== */ .section{ padding: 3rem 0; } .section-title{ position: relative; font-size: var(--h2-font-size); color: var(--dark-color); margin: var(--mb-4) 0; text-align: center; } .section-title::after{ position: absolute; content: ""; width: 32px; height: .18rem; left: 0; right: 0; margin: auto; top: 2rem; background-color: var(--first-color); } /*===== LAYOUT =====*/ .bd-grid{ max-width: 1024px; display: grid; grid-template-columns: 100%; grid-column-gap: 2rem; width: calc(100% - 2rem); margin-left: var(--mb-2); margin-right: var(--mb-2); } .l-header{ width: 100%; position: fixed; top: 0; left: 0; z-index: var(--z-fixed); background-color: var(--first-color); } /*===== NAV =====*/ .nav{ height: var(--header-height); display: flex; justify-content: space-between; align-items: center; } @media screen and (max-width: 768px){ .nav__menu{ position: fixed; top: var(--header-height); right: -100%; width: 80%; height: 100%; padding: 2rem; background-color: rgba(255,255,255,.3); transition: .5s; backdrop-filter: blur(10px); } } .nav__item{ margin-bottom: var(--mb-4); } .nav__link{ position: relative; color: var(--dark-color); } .nav__link:hover{ color: var(--first-color); } .nav__logo{ color: var(--white-color); } .nav__toggle{ color: var(--white-color); font-size: 1.5rem; cursor: pointer; } /*=== Show menu ===*/ .show{ right: 0; } /*Active menu*/ .active::after{ position: absolute; content: ""; width: 100%; height: .18rem; left: 0; top: 2rem; background-color: var(--first-color); } /*===== HOME =====*/ .home{ position: relative; background-color: var(--first-color); overflow: hidden; } .home__container{ height: calc(100vh - var(--header-height)); row-gap: 5rem; } .home__title{ align-self: flex-end; font-size: var(--big-font-size); color: var(--white-color); line-height: .8; } .home__title span{ text-shadow: 0 20px 25px rgba(0,0,0,.5); } .home__scroll{ align-self: flex-end; padding-bottom: var(--mb-4); } .home__scroll-link{ writing-mode: vertical-lr; transform: rotate(-180deg); color: var(--white-color); } .home__img{ position: absolute; right: 0; bottom: 0; width: 295px; } /* ===== ABOUT =====*/ .about__container{ justify-items: center; row-gap: 2rem; text-align: center; } .about__img{ display: flex; justify-content: center; padding-top: 1rem; width: 120px; height: 120px; background-color: var(--first-color); border-radius: 50%; overflow: hidden; } .about__img img{ width: 100px; } .about__subtitle{ font-size: var(--h2-font-size); color: var(--first-color); margin-bottom: var(--mb-1); } .about__text{ margin-bottom: var(--mb-4); } .about__profession{ display: block; margin-bottom: var(--mb-4); } .about__social-icon{ font-size: 1.4rem; margin: 0 var(--mb-1); } .about__social-icon:hover{ color: var(--first-color); } /* ===== SKILLS =====*/ .skills__container{ row-gap: 2rem; } .skills__subtitle{ color: var(--first-color); margin-bottom: var(--mb-3); } .skills__name{ display: inline-block; font-size: var(--small-font-size); margin-right: var(--mb-2); margin-bottom: var(--mb-3); padding: .25rem .5rem; background-color: var(--white-color); border-radius: .25rem; } .skills__name:hover{ background-color: var(--first-color); color: var(--white-color); } .skills__img img{ border-radius: .5rem; } /* ===== PORTFOLIO =====*/ .portfolio{ background-color: var(--white-color); } .portfolio__container{ justify-items: center; row-gap: 2rem; } .portfolio__img{ position: relative; overflow: hidden; } .portfolio__img img{ border-radius: .5rem; } .portfolio__link{ position: absolute; bottom: -100%; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; background-color: rgba(255,255,255,.3); border-radius: .5rem; cursor: pointer; backdrop-filter: blur(10px); transition: .3s; } .portfolio__img:hover .portfolio__link{ bottom: 0; } .portfolio__link-name{ color: var(--dark-color); } /* ===== CONTACT =====*/ .contact__container{ row-gap: 2rem; } .contact__subtitle{ font-size: var(--normal-font-size); color: var(--first-color); } .contact__text{ display: inline-block; margin-bottom: var(--mb-2); } .contact__inputs{ display: grid; grid-template-columns: repeat(2, 1fr); column-gap: 1rem; } .contact__input{ width: 100%; padding: .8rem; outline: none; border: 1.5px solid var(--dark-color); font-size: var(--normal-font-size); margin-bottom: var(--mb-4); border-radius: .5rem; } .contact__button{ display: block; background-color: var(--first-color); color: var(--white-color); padding: .75rem 2.5rem; margin-left: auto; border-radius: .5rem; border: none; outline: none; font-size: var(--normal-font-size); cursor: pointer; } /* ===== FOOTER=====*/ .footer{ background-color: var(--dark-color); } .footer__container{ row-gap: 2rem; } .footer__title{ font-size: var(--normal-font-size); color: var(--white-color); margin-bottom: var(--mb-2); } .footer__link{ padding: .25rem 0; } .footer__link:hover{ color: var(--first-color); } .footer__social{ font-size: 1.4rem; margin-right: var(--mb-1); } .footer__social:hover{ color: var(--first-color); } /* ===== MEDIA QUERIES =====*/ /* For small devices */ @media screen and (max-width: 320px) { .home__img { width: 230px; } } @media screen and (min-width: 768px){ body{ margin: 0; } .section{ padding-top: 4rem; } .section-title{ margin-bottom: 3rem; } .section-title::after{ width: 64px; top: 3rem; } .nav{ height: calc(var(--header-height) + 1rem); } .nav__list{ display: flex; } .nav__item{ margin-left: var(--mb-4); margin-bottom: 0; } .nav__toggle{ display: none; } .nav__link{ color: var(--white-color); } .nav__link:hover{ color: var(--white-color); } .active::after{ background-color: var(--white-color); } .home__container{ height: 100vh; grid-template-rows: 1.7fr 1fr; row-gap: 0; } .home__img{ width: 524px; right: 10%; } .about__container{ grid-template-columns: repeat(2, 1fr); align-items: center; text-align: initial; padding: 4rem 0; } .about__img{ width: 200px; height: 200px; } .about__img img{ width: 165px; } .skills__container{ grid-template-columns: repeat(2, 1fr); align-items: center; } .portfolio__container{ grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 1fr); column-gap: 2rem; } .contact__container{ grid-template-columns: repeat(2, 1fr); justify-items: center; } .contact__form{ width: 380px; } .footer__container{ grid-template-columns: repeat(3, 1fr); justify-items: center; } } @media screen and (min-width: 1024px){ .bd-grid{ margin-left: auto; margin-right: auto; } } /* For tall screens on mobiles y desktop*/ @media screen and (min-height: 721px) { .home__container { height: 640px; } .home__img { width: 500px; right: 24%; } } ================================================ FILE: assets/js/main.js ================================================ /*===== MENU SHOW =====*/ const showMenu = (toggleId, navId) =>{ const toggle = document.getElementById(toggleId), nav = document.getElementById(navId) if(toggle && nav){ toggle.addEventListener('click', ()=>{ nav.classList.toggle('show') }) } } showMenu('nav-toggle','nav-menu') /*===== REMOVE MENU MOBILE =====*/ const navLink = document.querySelectorAll('.nav__link') function linkAction(){ const navMenu = document.getElementById('nav-menu') navMenu.classList.remove('show') } navLink.forEach(n => n.addEventListener('click', linkAction)) /*===== SCROLL SECTIONS ACTIVE LINK =====*/ const sections = document.querySelectorAll('section[id]') window.addEventListener('scroll', scrollActive) function scrollActive(){ const scrollY = window.pageYOffset sections.forEach(current =>{ const sectionHeight = current.offsetHeight const sectionTop = current.offsetTop - 50; sectionId = current.getAttribute('id') if(scrollY > sectionTop && scrollY <= sectionTop + sectionHeight){ document.querySelector('.nav__menu a[href*=' + sectionId + ']').classList.add('active') }else{ document.querySelector('.nav__menu a[href*=' + sectionId + ']').classList.remove('active') } }) } /*===== SCROLL REVEAL ANIMATION =====*/ const sr = ScrollReveal({ origin: 'top', distance: '80px', duration: 2000, reset: true }) /*SCROLL HOME*/ sr.reveal('.home__title', {}) sr.reveal('.home__scroll', {delay: 200}) sr.reveal('.home__img', {origin:'right', delay: 400}) /*SCROLL ABOUT*/ sr.reveal('.about__img', {delay: 500}) sr.reveal('.about__subtitle', {delay: 300}) sr.reveal('.about__profession', {delay: 400}) sr.reveal('.about__text', {delay: 500}) sr.reveal('.about__social-icon', {delay: 600, interval: 200}) /*SCROLL SKILLS*/ sr.reveal('.skills__subtitle', {}) sr.reveal('.skills__name', {distance: '20px', delay: 50, interval: 100}) sr.reveal('.skills__img', {delay: 400}) /*SCROLL PORTFOLIO*/ sr.reveal('.portfolio__img', {interval: 200}) /*SCROLL CONTACT*/ sr.reveal('.contact__subtitle', {}) sr.reveal('.contact__text', {interval: 200}) sr.reveal('.contact__input', {delay: 400}) sr.reveal('.contact__button', {delay: 600}) ================================================ FILE: assets/sass/styles.scss ================================================ /*===== GOOGLE FONTS =====*/ @import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600;700&display=swap'); /*===== VARIABLES CSS =====*/ :root{ --header-height: 3rem; --font-medium: 500; } /*===== Colores =====*/ :root{ --first-color: #5361FF; --white-color: #FAFAFF; --dark-color: #2a3b47; --text-color: #697477; } /*===== Fuente y tipografia =====*/ :root{ --body-font: 'Montserrat', sans-serif; --big-font-size: 6.25rem; --h2-font-size: 1.25rem; --normal-font-size: .938rem; --small-font-size: .813rem; @media screen and (min-width: 768px){ --big-font-size: 10.5rem; --h2-font-size: 2rem; --normal-font-size: 1rem; --small-font-size: .875rem; } } /*===== Margenes =====*/ :root{ --mb-1: 0.5rem; --mb-2: 1rem; --mb-3: 1.5rem; --mb-4: 2rem; } /*===== z index =====*/ :root{ --z-fixed: 100; } /*===== BASE =====*/ *,::before,::after{ box-sizing: border-box; } html{ scroll-behavior: smooth; } body{ margin: var(--header-height) 0 0 0; font-family: var(--body-font); font-size: var(--normal-font-size); font-weight: var(--font-medium); color: var(--text-color); line-height: 1.6; } h1,h2,p{ margin: 0; } ul{ margin: 0; padding: 0; list-style: none; } a{ text-decoration: none; color: var(--text-color); } img{ max-width: 100%; height: auto; display: block; } /*===== CLASS CSS ===== */ .section{ padding: 3rem 0; &-title{ position: relative; font-size: var(--h2-font-size); color: var(--dark-color); margin: var(--mb-4) 0; text-align: center; &::after{ position: absolute; content: ''; width: 32px; height: .18rem; left: 0; right: 0; margin: auto; top: 2rem; background-color: var(--first-color); } } } /*===== LAYOUT =====*/ .bd-grid{ max-width: 1024px; display: grid; grid-template-columns: 100%; grid-column-gap: 2rem; width: calc(100% - 2rem); margin-left: var(--mb-2); margin-right: var(--mb-2); } .l-header{ width: 100%; position: fixed; top: 0; left: 0; z-index: var(--z-fixed); background-color: var(--first-color); } /*===== NAV =====*/ .nav{ height: var(--header-height); display: flex; justify-content: space-between; align-items: center; &__menu{ @media screen and (max-width: 768px){ position: fixed; top: var(--header-height); right: -100%; width: 80%; height: 100%; padding: 2rem; background: rgba(255, 255, 255, 0.3); transition: .5s; backdrop-filter: blur(10px); } } &__item{ margin-bottom: var(--mb-4); } &__link{ position: relative; color: var(--dark-color); &:hover{ color: var(--first-color); } } &__logo{ color: var(--white-color); } &__toggle{ color: var(--white-color); font-size: 1.5rem; cursor: pointer; } } /*=== Show menu ===*/ .show{ right: 0; } /*Active menu*/ .active::after{ position: absolute; content: ''; width: 100%; height: 0.18rem; left: 0; top: 2rem; background-color: var(--first-color); } /*===== HOME =====*/ .home{ position: relative; background-color: var(--first-color); overflow: hidden; &__container{ height: calc(100vh - var(--header-height)); row-gap: 5rem; } &__title{ align-self: flex-end; font-size: var(--big-font-size); color: var(--white-color); line-height: .8; & span{ text-shadow: 0 20px 25px rgba(0, 0, 0, .5); } } &__scroll{ align-self: flex-end; padding-bottom: var(--mb-4); &-link{ writing-mode: vertical-lr; transform: rotate(-180deg); color: var(--white-color); } } &__img{ position: absolute; right: 0; bottom: 0; width: 295px; } } /* ===== ABOUT =====*/ .about{ &__container{ justify-items: center; row-gap: 2rem; text-align: center; } &__img{ display: flex; justify-content: center; padding-top: 1rem; width: 120px; height: 120px; background-color: var(--first-color); border-radius: 50%; overflow: hidden; & img{ width: 100px; } } &__subtitle{ font-size: var(--h2-font-size); color: var(--first-color); margin-bottom: var(--mb-1); } &__text{ margin-bottom: var(--mb-4); } &__profession{ display: block; margin-bottom: var(--mb-4); } &__social{ &-icon{ font-size: 1.4rem; margin: 0 var(--mb-1); &:hover{ color: var(--first-color); } } } } /* ===== SKILLS =====*/ .skills{ &__container{ row-gap: 2rem; } &__subtitle{ color: var(--first-color); margin-bottom: var(--mb-3); } &__name{ display: inline-block; font-size: var(--small-font-size); margin-right: var(--mb-2); margin-bottom: var(--mb-3); padding: .25rem .5rem ; background-color: var(--white-color); border-radius: .25rem; &:hover{ background-color: var(--first-color); color: var(--white-color); } } &__img{ & img{ border-radius: .5rem; } } } /* ===== PORTFOLIO =====*/ .portfolio{ background-color: var(--white-color); &__container{ justify-items: center; row-gap: 2rem; } &__img{ position: relative; overflow: hidden; & img{ border-radius: .5rem; } &:hover .portfolio__link{ bottom: 0; } } &__link{ position: absolute; bottom: -100%; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; background: rgba(255, 255, 255, 0.3); border-radius: .5rem; cursor: pointer; backdrop-filter: blur(10px); transition: .3s; &-name{ color: var(--dark-color); } } } /* ===== CONTACT =====*/ .contact{ &__container{ row-gap: 2rem; } &__subtitle{ font-size: var(--normal-font-size); color: var(--first-color); } &__text{ display: inline-block; margin-bottom: var(--mb-2); } &__inputs{ display: grid; grid-template-columns: repeat(2, 1fr); column-gap: 1rem; } &__input{ width: 100%; padding: .8rem; outline: none; border: 1.5px solid var(--dark-color); font-size: var(--normal-font-size); margin-bottom: var(--mb-4); border-radius: .5rem; } &__button{ display: block; background-color: var(--first-color); color: var(--white-color); padding: .75rem 2.5rem; margin-left: auto; border-radius: .5rem; border: none; outline: none; font-size: var(--normal-font-size); cursor: pointer; } } /* ===== FOOTER=====*/ .footer{ background-color: var(--dark-color); &__container{ row-gap: 2rem; } &__title{ font-size: var(--normal-font-size); color: var(--white-color); margin-bottom: var(--mb-2); } &__link{ padding: .25rem 0; &:hover{ color: var(--first-color); } } &__social{ font-size: 1.4rem; margin-right: var(--mb-1); &:hover{ color: var(--first-color); } } } /* ===== MEDIA QUERIES=====*/ /* For small devices */ @media screen and (max-width: 320px) { .home__img{ width: 230px; } } @media screen and(min-width: 768px){ body{ margin: 0; } .section{ padding-top: 4rem; &-title{ margin-bottom: 3rem; &::after{ width: 64px; top: 3rem; } } } .nav{ height: calc(var(--header-height) + 1rem); &__list{ display: flex; } &__item{ margin-left: var(--mb-4); margin-bottom: 0; } &__toggle{ display: none; } &__link{ color: var(--white-color); &:hover{ color: var(--white-color); } } } .active::after{ background-color: var(--white-color); } .home{ &__container{ height: 100vh; grid-template-rows: 1.7fr 1fr; row-gap: 0; } &__img{ width: 524px; right: 10%; } } .about{ &__container{ grid-template-columns: repeat(2, 1fr); align-items: center; text-align: initial; padding: 4rem 0; } &__img{ width: 200px; height: 200px; & img{ width: 165px; } } } .skills{ &__container{ grid-template-columns: repeat(2,1fr); align-items: center; } } .portfolio{ &__container{ grid-template-columns: repeat(3,1fr); grid-template-rows: repeat(2, 1fr); column-gap: 2rem; } } .contact{ &__container{ grid-template-columns: repeat(2,1fr); justify-items: center; } &__form{ width: 380px; } } .footer{ &__container{ grid-template-columns: repeat(3,1fr); justify-items: center; } } } @media screen and(min-width: 1024px){ .bd-grid{ margin-left: auto; margin-right: auto; } } /* For tall screens on mobiles y desktop*/ @media screen and (min-height: 721px) { .home{ &__container{ height: 640px; } &__img{ width: 500px; right: 24%; } } } ================================================ FILE: index.html ================================================ Portfolio responsive complete

HE
LLO.

About

I'am Jhon Doe

Web designer

Lorem ipsum dolor, sit amet consectetur adipisicing elit. Adipisci consectetur, architecto quas fugiat, iste inventore facere repellendus delectus id, vitae blanditiis.

Skills

Development

Html Css Javascript Scss React Vue

Design

Figma Adobe XD Photoshop

Portfolio

Contact

EMAIL

info.mail.com

PHONE

+20 999-999

ADRESS

My contry