A clean, responsive portfolio template for designers, developers, and creatives. Copy the code below and customize.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modern Portfolio | Alex Morgan</title>
<link rel="stylesheet" href="style.css">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
</head>
<body>
<!-- Navigation -->
<nav class="navbar">
<div class="container">
<a href="#" class="logo">Alex Morgan</a>
<div class="nav-links">
<a href="#home">Home</a>
<a href="#work">Work</a>
<a href="#about">About</a>
<a href="#contact">Contact</a>
</div>
<button class="mobile-menu"><i class="fas fa-bars"></i></button>
</div>
</nav>
<!-- Hero Section -->
<section id="home" class="hero">
<div class="container">
<div class="hero-content">
<div class="hero-badge">UI/UX Designer & Developer</div>
<h1>Creating digital <span>experiences</span> that matter</h1>
<p>I'm Alex Morgan, a creative designer and developer focused on building beautiful, functional websites.</p>
<div class="hero-buttons">
<a href="#work" class="btn-primary">View My Work <i class="fas fa-arrow-right"></i></a>
<a href="#contact" class="btn-secondary">Contact Me <i class="fas fa-envelope"></i></a>
</div>
</div>
</div>
</section>
<!-- Work Section -->
<section id="work" class="work">
<div class="container">
<div class="section-header">
<span class="section-tag">Portfolio</span>
<h2>Selected Projects</h2>
<p>Here are some of my recent works. Each project tells a unique story.</p>
</div>
<div class="work-grid">
<div class="work-card">
<div class="work-image">🎨</div>
<div class="work-info">
<h3>BrandFlow</h3>
<p>A branding platform for modern agencies.</p>
<a href="#" class="work-link">View Project →</a>
</div>
</div>
<div class="work-card">
<div class="work-image">🎯</div>
<div class="work-info">
<h3>Nexus Studio</h3>
<p>Interactive portfolio for a creative studio.</p>
<a href="#" class="work-link">View Project →</a>
</div>
</div>
<div class="work-card">
<div class="work-image">🌿</div>
<div class="work-info">
<h3>EcoCart</h3>
<p>Sustainable e-commerce experience.</p>
<a href="#" class="work-link">View Project →</a>
</div>
</div>
</div>
</div>
</section>
<!-- About Section -->
<section id="about" class="about">
<div class="container">
<div class="about-content">
<div class="about-text">
<span class="section-tag">About Me</span>
<h2>Passionate about creating impactful digital solutions</h2>
<p>With over 8 years of experience in design and development, I've had the privilege of working with startups, agencies, and global brands. My approach combines creativity with technical expertise to deliver exceptional results.</p>
<div class="skills">
<span>UI/UX Design</span>
<span>Frontend Dev</span>
<span>React</span>
<span>Figma</span>
</div>
</div>
</div>
</div>
</section>
<!-- Contact Section -->
<section id="contact" class="contact">
<div class="container">
<div class="contact-content">
<h2>Let's Work Together</h2>
<p>Have a project in mind? I'd love to hear from you.</p>
<a href="#" class="btn-primary">hello@alex.dev <i class="fas fa-paper-plane"></i></a>
</div>
</div>
</section>
<!-- Footer -->
<footer>
<div class="container">
<p>© 2025 Alex Morgan. Built with <i class="fas fa-heart"></i> using AI.</p>
</div>
</footer>
<script src="script.js"></script>
</body>
</html>
/* Modern Portfolio Styles */
:root {
--primary: #e94560;
--primary-dark: #c7354e;
--dark: #1a1a2e;
--light: #f5f5f5;
--gray: #666;
--white: #ffffff;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
color: var(--dark);
line-height: 1.6;
background: var(--white);
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 2rem;
}
/* Navigation */
.navbar {
position: fixed;
top: 0;
width: 100%;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
z-index: 1000;
padding: 1rem 0;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
.navbar .container {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
font-size: 1.5rem;
font-weight: 800;
text-decoration: none;
color: var(--dark);
}
.nav-links {
display: flex;
gap: 2rem;
}
.nav-links a {
text-decoration: none;
color: var(--dark);
font-weight: 500;
transition: color 0.3s;
}
.nav-links a:hover {
color: var(--primary);
}
.mobile-menu {
display: none;
background: none;
border: none;
font-size: 1.5rem;
cursor: pointer;
}
/* Hero Section */
.hero {
min-height: 100vh;
display: flex;
align-items: center;
background: linear-gradient(135deg, #f5f7fa 0%, #f0f2f5 100%);
padding-top: 80px;
}
.hero-badge {
display: inline-block;
background: var(--primary);
color: white;
padding: 0.3rem 1rem;
border-radius: 50px;
font-size: 0.8rem;
font-weight: 500;
margin-bottom: 1.5rem;
}
.hero h1 {
font-size: 3.5rem;
line-height: 1.2;
margin-bottom: 1.5rem;
max-width: 700px;
}
.hero h1 span {
color: var(--primary);
}
.hero p {
font-size: 1.2rem;
color: var(--gray);
max-width: 500px;
margin-bottom: 2rem;
}
.hero-buttons {
display: flex;
gap: 1rem;
}
.btn-primary, .btn-secondary {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.8rem 1.8rem;
border-radius: 50px;
text-decoration: none;
font-weight: 600;
transition: all 0.3s;
}
.btn-primary {
background: var(--primary);
color: white;
}
.btn-primary:hover {
background: var(--primary-dark);
transform: translateY(-2px);
}
.btn-secondary {
background: transparent;
color: var(--dark);
border: 2px solid var(--dark);
}
.btn-secondary:hover {
background: var(--dark);
color: white;
transform: translateY(-2px);
}
/* Section Header */
.section-header {
text-align: center;
margin-bottom: 3rem;
}
.section-tag {
display: inline-block;
background: rgba(233, 69, 96, 0.1);
color: var(--primary);
padding: 0.3rem 1rem;
border-radius: 50px;
font-size: 0.8rem;
font-weight: 500;
margin-bottom: 1rem;
}
.section-header h2 {
font-size: 2.5rem;
margin-bottom: 1rem;
}
.section-header p {
color: var(--gray);
max-width: 600px;
margin: 0 auto;
}
/* Work Section */
.work {
padding: 5rem 0;
}
.work-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.work-card {
background: var(--white);
border-radius: 16px;
overflow: hidden;
box-shadow: 0 10px 30px rgba(0,0,0,0.05);
transition: all 0.3s;
}
.work-card:hover {
transform: translateY(-10px);
box-shadow: 0 20px 40px rgba(0,0,0,0.1);
}
.work-image {
height: 200px;
background: linear-gradient(135deg, var(--primary), var(--primary-dark));
display: flex;
align-items: center;
justify-content: center;
font-size: 4rem;
}
.work-info {
padding: 1.5rem;
}
.work-info h3 {
margin-bottom: 0.5rem;
}
.work-info p {
color: var(--gray);
margin-bottom: 1rem;
}
.work-link {
color: var(--primary);
text-decoration: none;
font-weight: 600;
}
/* About Section */
.about {
padding: 5rem 0;
background: var(--light);
}
.about-content {
max-width: 800px;
margin: 0 auto;
text-align: center;
}
.about-text h2 {
font-size: 2rem;
margin: 1rem 0;
}
.skills {
display: flex;
flex-wrap: wrap;
gap: 0.8rem;
justify-content: center;
margin-top: 2rem;
}
.skills span {
background: var(--white);
padding: 0.5rem 1.2rem;
border-radius: 50px;
font-size: 0.9rem;
font-weight: 500;
box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}
/* Contact Section */
.contact {
padding: 5rem 0;
text-align: center;
}
.contact h2 {
font-size: 2rem;
margin-bottom: 1rem;
}
.contact p {
color: var(--gray);
margin-bottom: 2rem;
}
/* Footer */
footer {
background: var(--dark);
color: #888;
text-align: center;
padding: 2rem;
}
footer i {
color: var(--primary);
}
/* Responsive */
@media (max-width: 768px) {
.nav-links {
display: none;
}
.mobile-menu {
display: block;
}
.hero h1 {
font-size: 2rem;
}
.hero-buttons {
flex-direction: column;
}
.section-header h2 {
font-size: 1.8rem;
}
.work-grid {
grid-template-columns: 1fr;
}
}
// Modern Portfolio JavaScript
// Mobile Menu Toggle
const mobileMenu = document.querySelector('.mobile-menu');
const navLinks = document.querySelector('.nav-links');
if (mobileMenu) {
mobileMenu.addEventListener('click', () => {
navLinks.classList.toggle('active');
mobileMenu.classList.toggle('active');
});
}
// Smooth Scroll for Anchor Links
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
anchor.addEventListener('click', function(e) {
e.preventDefault();
const target = document.querySelector(this.getAttribute('href'));
if (target) {
target.scrollIntoView({ behavior: 'smooth' });
// Close mobile menu if open
if (navLinks.classList.contains('active')) {
navLinks.classList.remove('active');
mobileMenu.classList.remove('active');
}
}
});
});
// Intersection Observer for Scroll Animations
const observerOptions = {
threshold: 0.1,
rootMargin: '0px 0px -50px 0px'
};
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.style.opacity = '1';
entry.target.style.transform = 'translateY(0)';
}
});
}, observerOptions);
// Animate work cards on scroll
document.querySelectorAll('.work-card').forEach(card => {
card.style.opacity = '0';
card.style.transform = 'translateY(30px)';
card.style.transition = 'all 0.6s ease';
observer.observe(card);
});
// Active navigation link on scroll
window.addEventListener('scroll', () => {
const sections = document.querySelectorAll('section');
const scrollPos = window.scrollY + 100;
sections.forEach(section => {
if (scrollPos >= section.offsetTop && scrollPos < section.offsetTop + section.offsetHeight) {
const id = section.getAttribute('id');
document.querySelectorAll('.nav-links a').forEach(link => {
link.classList.remove('active');
if (link.getAttribute('href') === `#${id}`) {
link.classList.add('active');
}
});
}
});
});