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)

================================================
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
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- ===== CSS ===== -->
<link rel="stylesheet" href="assets/css/styles.css">
<!-- ===== BOX ICONS ===== -->
<link href='https://cdn.jsdelivr.net/npm/boxicons@2.0.5/css/boxicons.min.css' rel='stylesheet'>
<title>Portfolio responsive complete</title>
</head>
<body>
<!--===== HEADER =====-->
<header class="l-header">
<nav class="nav bd-grid">
<div>
<a href="#" class="nav__logo">Jhon Doe</a>
</div>
<div class="nav__menu" id="nav-menu">
<ul class="nav__list">
<li class="nav__item"><a href="#home" class="nav__link active">Home</a></li>
<li class="nav__item"><a href="#about" class="nav__link">About</a></li>
<li class="nav__item"><a href="#skills" class="nav__link">Skills</a></li>
<li class="nav__item"><a href="#portfolio" class="nav__link">Portfolio</a></li>
<li class="nav__item"><a href="#contact" class="nav__link">Contact</a></li>
</ul>
</div>
<div class="nav__toggle" id="nav-toggle">
<i class='bx bx-menu'></i>
</div>
</nav>
</header>
<main class="l-main">
<!--===== HOME =====-->
<section class="home" id="home">
<div class="home__container bd-grid">
<h1 class="home__title"><span>HE</span><br>LLO.</h1>
<div class="home__scroll">
<a href="#about" class="home__scroll-link"><i class='bx bx-up-arrow-alt' ></i>Scroll down</a>
</div>
<img src="assets/img/perfil.png" alt="" class="home__img">
</div>
</section>
<!--===== ABOUT =====-->
<section class="about section" id="about">
<h2 class="section-title">About</h2>
<div class="about__container bd-grid">
<div class="about__img">
<img src="assets/img/perfil.png" alt="">
</div>
<div>
<h2 class="about__subtitle">I'am Jhon Doe</h2>
<span class="about__profession">Web designer</span>
<p class="about__text">Lorem ipsum dolor, sit amet consectetur adipisicing elit. Adipisci consectetur, architecto quas fugiat, iste inventore facere repellendus delectus id, vitae blanditiis.</p>
<div class="about__social">
<a href="#" class="about__social-icon"><i class='bx bxl-linkedin' ></i></a>
<a href="#" class="about__social-icon"><i class='bx bxl-github' ></i></a>
<a href="#" class="about__social-icon"><i class='bx bxl-dribbble' ></i></a>
</div>
</div>
</div>
</section>
<!--===== SKILLS =====-->
<section class="skills section" id="skills">
<h2 class="section-title">Skills</h2>
<div class="skills__container bd-grid">
<div class="skills__box">
<h3 class="skills__subtitle">Development</h3>
<span class="skills__name">Html</span>
<span class="skills__name">Css</span>
<span class="skills__name">Javascript</span>
<span class="skills__name">Scss</span>
<span class="skills__name">React</span>
<span class="skills__name">Vue</span>
<h3 class="skills__subtitle">Design</h3>
<span class="skills__name">Figma</span>
<span class="skills__name">Adobe XD</span>
<span class="skills__name">Photoshop</span>
</div>
<div class="skills__img">
<img src="assets/img/skill.jpg" alt="">
</div>
</div>
</section>
<!--===== PORTFOLIO =====-->
<section class="portfolio section" id="portfolio">
<h2 class="section-title">Portfolio</h2>
<div class="portfolio__container bd-grid">
<div class="portfolio__img">
<img src="assets/img/work1.jpg" alt="">
<div class="portfolio__link">
<a href="#" class="portfolio__link-name">View details</a>
</div>
</div>
<div class="portfolio__img">
<img src="assets/img/work2.jpg" alt="">
<div class="portfolio__link">
<a href="#" class="portfolio__link-name">View details</a>
</div>
</div>
<div class="portfolio__img">
<img src="assets/img/work3.jpg" alt="">
<div class="portfolio__link">
<a href="#" class="portfolio__link-name">View details</a>
</div>
</div>
<div class="portfolio__img">
<img src="assets/img/work4.jpg" alt="">
<div class="portfolio__link">
<a href="#" class="portfolio__link-name">View details</a>
</div>
</div>
<div class="portfolio__img">
<img src="assets/img/work5.jpg" alt="">
<div class="portfolio__link">
<a href="#" class="portfolio__link-name">View details</a>
</div>
</div>
<div class="portfolio__img">
<img src="assets/img/work6.jpg" alt="">
<div class="portfolio__link">
<a href="#" class="portfolio__link-name">View details</a>
</div>
</div>
</div>
</section>
<!--===== CONTACT =====-->
<section class="contact section" id="contact">
<h2 class="section-title">Contact</h2>
<div class="contact__container bd-grid">
<div class="contact__info">
<h3 class="contact__subtitle">EMAIL</h3>
<span class="contact__text">info.mail.com</span>
<h3 class="contact__subtitle">PHONE</h3>
<span class="contact__text">+20 999-999</span>
<h3 class="contact__subtitle">ADRESS</h3>
<span class="contact__text">My contry</span>
</div>
<form action="" class="contact__form">
<div class="contact__inputs">
<input type="text" placeholder="Name" class="contact__input">
<input type="mail" placeholder="Email" class="contact__input">
</div>
<textarea name="" id="" cols="0" rows="10" class="contact__input"></textarea>
<input type="submit" value="Enviar" class="contact__button">
</form>
</div>
</section>
</main>
<!--===== FOOTER =====-->
<footer class="footer section">
<div class="footer__container bd-grid">
<div class="footer__data">
<h2 class="footer__title">JHON DOE</h2>
<p class="footer__text">I'm Jhon Doe and this is my personal website</p>
</div>
<div class="footer__data">
<h2 class="footer__title">EXPLORE</h2>
<ul>
<li><a href="#home" class="footer__link">Home</a></li>
<li><a href="#about" class="footer__link">About</a></li>
<li><a href="#skills" class="footer__link">Skills</a></li>
<li><a href="#portfolio" class="footer__link">Portfolio</a></li>
<li><a href="#Contact" class="footer__link">Contact</a></li>
</ul>
</div>
<div class="footer__data">
<h2 class="footer__title">FOLLOW</h2>
<a href="#" class="footer__social"><i class='bx bxl-facebook' ></i></a>
<a href="#" class="footer__social"><i class='bx bxl-instagram' ></i></a>
<a href="#" class="footer__social"><i class='bx bxl-twitter' ></i></a>
</div>
</div>
</footer>
<!--===== SCROLL REVEAL =====-->
<script src="https://unpkg.com/scrollreveal"></script>
<!--===== MAIN JS =====-->
<script src="assets/js/main.js"></script>
</body>
</html>
gitextract_3wk9ztpr/ ├── README.md ├── assets/ │ ├── css/ │ │ └── styles.css │ ├── js/ │ │ └── main.js │ └── sass/ │ └── styles.scss └── index.html
SYMBOL INDEX (2 symbols across 1 files)
FILE: assets/js/main.js
function linkAction (line 17) | function linkAction(){
function scrollActive (line 28) | function scrollActive(){
Condensed preview — 5 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (36K chars).
[
{
"path": "README.md",
"chars": 568,
"preview": "# Responsive Personal Portfolio Website\n## [Watch it on youtube](https://youtu.be/6cidbUHNZRQ)\n### Responsive Personal P"
},
{
"path": "assets/css/styles.css",
"chars": 9328,
"preview": "/*===== GOOGLE FONTS =====*/\n@import url(\"https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600;700&display=s"
},
{
"path": "assets/js/main.js",
"chars": 2357,
"preview": "/*===== MENU SHOW =====*/ \r\nconst showMenu = (toggleId, navId) =>{\r\n const toggle = document.getElementById(toggleId)"
},
{
"path": "assets/sass/styles.scss",
"chars": 11101,
"preview": "/*===== GOOGLE FONTS =====*/\r\n@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@500;600;700&display="
},
{
"path": "index.html",
"chars": 9742,
"preview": "<!DOCTYPE html>\r\n <html lang=\"en\">\r\n <head>\r\n <meta charset=\"UTF-8\">\r\n <meta name=\"viewport\" content"
}
]
About this extraction
This page contains the full source code of the bedimcode/responsive-portfolio-website-JhonDoe GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 5 files (32.3 KB), approximately 8.5k tokens, and a symbol index with 2 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.