Add: About page draft

- A draft for about page
- No real content
This commit is contained in:
Candifloss 2025-05-24 13:26:38 +05:30
parent c5d2bb799b
commit 22ae790de7
4 changed files with 791 additions and 7 deletions

256
css/about.css Normal file
View File

@ -0,0 +1,256 @@
body {
margin: 0;
padding: 0;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
color: #333;
overflow-x: hidden;
scroll-behavior: smooth;
}
.portfolio {
scroll-snap-type: y mandatory;
overflow-y: scroll;
height: 100vh;
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
overscroll-behavior-y: contain;
}
.portfolio__section {
scroll-snap-align: start;
position: relative;
height: 100vh;
width: 100%;
overflow: hidden;
}
.portfolio__section .content {
position: relative;
z-index: 2;
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.portfolio__section .bg-image {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-size: cover;
background-position: center;
z-index: 1;
}
.portfolio__section .bg-image::after {
content: "";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(5px);
-webkit-backdrop-filter: blur(5px);
}
.portfolio__section--intro {
text-align: center;
}
.portfolio__section--intro .intro-title {
font-size: 3.5rem;
margin-bottom: 1rem;
color: #fff;
}
.portfolio__section--intro .intro-title .highlight {
color: #3498db;
}
.portfolio__section--intro .intro-subtitle {
font-size: 1.5rem;
color: rgba(255, 255, 255, 0.8);
margin-bottom: 2rem;
}
.portfolio__section--intro .social-links {
display: flex;
justify-content: center;
gap: 1.5rem;
}
.portfolio__section--intro .social-links .social-link {
color: #fff;
text-decoration: none;
font-size: 1.1rem;
transition: color 0.3s;
}
.portfolio__section--intro .social-links .social-link:hover {
color: #3498db;
}
.portfolio__section .section-title {
font-size: 2.5rem;
margin-bottom: 2rem;
color: #fff;
position: relative;
display: inline-block;
}
.portfolio__section .section-title::after {
content: "";
position: absolute;
bottom: -10px;
left: 0;
width: 50px;
height: 3px;
background: #3498db;
}
.portfolio__section .about-content {
display: flex;
gap: 2rem;
align-items: center;
}
.portfolio__section .about-content .about-text {
flex: 1;
color: #fff;
line-height: 1.6;
}
.portfolio__section .about-content .about-image {
flex: 1;
}
.portfolio__section .about-content .about-image img {
max-width: 100%;
border-radius: 10px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
}
.portfolio__section .timeline {
position: relative;
padding-left: 2rem;
color: #fff;
}
.portfolio__section .timeline::before {
content: "";
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 2px;
background: #3498db;
}
.portfolio__section .timeline-item {
margin-bottom: 2rem;
position: relative;
}
.portfolio__section .timeline-item::before {
content: "";
position: absolute;
left: -2.5rem;
top: 0.5rem;
width: 1rem;
height: 1rem;
border-radius: 50%;
background: #fff;
border: 2px solid #3498db;
}
.portfolio__section .timeline-title {
font-size: 1.3rem;
margin-bottom: 0.3rem;
}
.portfolio__section .timeline-company {
font-style: italic;
margin-bottom: 0.5rem;
opacity: 0.8;
}
.portfolio__section .timeline-description {
line-height: 1.5;
}
.portfolio__section .projects-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
}
.portfolio__section .project-card {
background: rgba(255, 255, 255, 0.1);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border-radius: 10px;
padding: 1.5rem;
transition: transform 0.3s;
color: #fff;
}
.portfolio__section .project-card:hover {
transform: translateY(-5px);
}
.portfolio__section .project-title {
font-size: 1.3rem;
margin-bottom: 0.5rem;
color: #fff;
}
.portfolio__section .project-description {
margin-bottom: 1rem;
line-height: 1.5;
}
.portfolio__section .project-link {
color: #3498db;
text-decoration: none;
font-weight: bold;
}
.portfolio__section .project-link:hover {
text-decoration: underline;
}
.portfolio__section--footer {
background: #2c3e50;
}
.portfolio__section--footer .content {
text-align: center;
}
.portfolio__section--footer .contact-info {
margin-bottom: 2rem;
color: #fff;
}
.portfolio__section--footer .contact-info a {
color: #3498db;
text-decoration: none;
}
.portfolio__section--footer .contact-info a:hover {
text-decoration: underline;
}
.portfolio__section--footer .footer-links {
display: flex;
justify-content: center;
gap: 2rem;
margin-bottom: 2rem;
}
.portfolio__section--footer .footer-links .footer-link {
color: #fff;
text-decoration: none;
transition: color 0.3s;
}
.portfolio__section--footer .footer-links .footer-link:hover {
color: #3498db;
}
.portfolio__section--footer .copyright {
color: rgba(255, 255, 255, 0.6);
font-size: 0.9rem;
}
@media (max-width: 768px) {
.portfolio__section .content {
padding: 1rem;
}
.portfolio__section--intro .intro-title {
font-size: 2.5rem;
}
.portfolio__section--intro .intro-subtitle {
font-size: 1.2rem;
}
.portfolio__section .about-content {
flex-direction: column;
}
.portfolio__section .about-content .about-text {
order: 2;
}
.portfolio__section .about-content .about-image {
order: 1;
margin-bottom: 1.5rem;
}
.portfolio__section .section-title {
font-size: 2rem;
}
}

View File

@ -3,16 +3,99 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Your Name | Portfolio</title>
<title>Coming Soon</title> <link rel="stylesheet" href="../css/about.css">
<link rel="stylesheet" href="../css/not_ready.css">
</head> </head>
<body> <body>
<main class="portfolio">
<!-- Intro Section -->
<section class="portfolio__section portfolio__section--intro">
<div class="content">
<h1 class="intro-title">Hello, I'm <span class="highlight">Your Name</span></h1>
<p class="intro-subtitle">Job Title / Profession</p>
<div class="social-links">
<a href="#" target="_blank" class="social-link">LinkedIn</a>
<a href="#" target="_blank" class="social-link">GitHub</a>
<a href="#" target="_blank" class="social-link">Twitter</a>
</div>
</div>
<div class="bg-image" style="background-image: url('https://visme.co/blog/wp-content/uploads/2017/07/50-Beautiful-and-Minimalist-Presentation-Backgrounds-013.jpg')"></div>
</section>
<div class="container"> <!-- About Section -->
<h1>This page is not ready yet!</h1> <section class="portfolio__section">
<p>Working hard to bring you something amazing. Stay tuned!</p> <div class="content">
</div> <h2 class="section-title">About Me</h2>
<div class="about-content">
<div class="about-text">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam in dui mauris. Vivamus hendrerit arcu sed erat molestie vehicula.</p>
<p>Sed auctor neque eu tellus rhoncus ut eleifend nibh porttitor. Ut in nulla enim. Phasellus molestie magna non est bibendum non venenatis nisl tempor.</p>
</div>
<div class="about-image">
<img src="https://viewpointservices.com/wp-content/uploads/2019/07/GettyImages-1142192666-1.jpg" alt="Your Name">
</div>
</div>
</div>
<div class="bg-image" style="background-image: url('https://www.elegantthemes.com/blog/wp-content/uploads/2013/09/bg-1-full.jpg')"></div>
</section>
<!-- Experience Section -->
<section class="portfolio__section">
<div class="content">
<h2 class="section-title">Experience</h2>
<div class="timeline">
<div class="timeline-item">
<h3 class="timeline-title">Senior Developer</h3>
<p class="timeline-company">Tech Company Inc. (2020-Present)</p>
<p class="timeline-description">Lead developer for web applications.</p>
</div>
<div class="timeline-item">
<h3 class="timeline-title">Web Developer</h3>
<p class="timeline-company">Digital Agency (2017-2020)</p>
<p class="timeline-description">Front-end development and UX design.</p>
</div>
</div>
</div>
<div class="bg-image" style="background-image: url('https://wallpapers.com/images/hd/professional-zoom-background-3h69jq8rrky7f3tj.jpg')"></div>
</section>
<!-- Projects Section -->
<section class="portfolio__section">
<div class="content">
<h2 class="section-title">Projects</h2>
<div class="projects-grid">
<div class="project-card">
<h3 class="project-title">Project 1</h3>
<p class="project-description">Description of project and technologies used.</p>
<a href="#" class="project-link">View Project</a>
</div>
<div class="project-card">
<h3 class="project-title">Project 2</h3>
<p class="project-description">Description of project and technologies used.</p>
<a href="#" class="project-link">View Project</a>
</div>
</div>
</div>
<div class="bg-image" style="background-image: url('https://wallpapers.com/images/hd/integral-project-management-cover-erpo8ef1af3wuquu.jpg')"></div>
</section>
<!-- Contact/Footer Section -->
<section class="portfolio__section portfolio__section--footer">
<div class="content">
<h2 class="section-title">Get In Touch</h2>
<div class="contact-info">
<p>Email: <a href="mailto:you@example.com">you@example.com</a></p>
<p>Phone: (123) 456-7890</p>
</div>
<div class="footer-links">
<a href="#" class="footer-link">Resume (PDF)</a>
<a href="#" class="footer-link">GitHub</a>
<a href="#" class="footer-link">LinkedIn</a>
</div>
<p class="copyright">© 2023 Your Name. All rights reserved.</p>
</div>
</section>
</main>
<script src="../js/smoothscroll.js" defer></script>
</body> </body>
</html> </html>

111
js/smoothscroll.js Normal file
View File

@ -0,0 +1,111 @@
// Strict one-section-at-a-time scrolling
document.addEventListener('DOMContentLoaded', () => {
const portfolio = document.querySelector('.portfolio');
if (!portfolio) return;
let isAnimating = false;
let lastScrollTime = 0;
let currentSection = 0;
let lastTouchY = null;
const sections = document.querySelectorAll('.portfolio__section');
const sectionHeight = window.innerHeight;
const scrollDelay = 50; // Time between allowed scrolls (ms)
const scrollThreshold = 10; // Minimum pixels to trigger scroll
// Initialize scroll position
window.scrollTo(0, 0);
// Handle wheel/touch events
portfolio.addEventListener('wheel', handleScroll, { passive: false });
portfolio.addEventListener('touchstart', (e) => {
lastTouchY = e.touches[0].clientY;
}, { passive: true });
portfolio.addEventListener('touchmove', handleScroll, { passive: false });
function handleScroll(e) {
const now = Date.now();
e.preventDefault();
if (isAnimating || (now - lastScrollTime < scrollDelay)) {
return;
}
// Calculate delta based on input type
let delta;
if (e.type === 'wheel') {
delta = e.deltaY;
} else if (e.type === 'touchmove') {
delta = lastTouchY - e.touches[0].clientY;
lastTouchY = e.touches[0].clientY;
}
// Determine target section
let targetSection = currentSection;
if (delta > scrollThreshold) {
targetSection = Math.min(currentSection + 1, sections.length - 1);
} else if (delta < -scrollThreshold) {
targetSection = Math.max(currentSection - 1, 0);
} else {
return;
}
if (targetSection !== currentSection) {
isAnimating = true;
currentSection = targetSection;
lastScrollTime = now;
portfolio.scrollTo({
top: sectionHeight * targetSection,
behavior: 'smooth'
});
setTimeout(() => {
isAnimating = false;
}, scrollDelay);
}
}
// Handle keyboard navigation
document.addEventListener('keydown', (e) => {
if (isAnimating) return;
switch(e.key) {
case 'ArrowDown':
e.preventDefault();
currentSection = Math.min(currentSection + 1, sections.length - 1);
break;
case 'ArrowUp':
e.preventDefault();
currentSection = Math.max(currentSection - 1, 0);
break;
case 'Home':
e.preventDefault();
currentSection = 0;
break;
case 'End':
e.preventDefault();
currentSection = sections.length - 1;
break;
default:
return;
}
isAnimating = true;
portfolio.scrollTo({
top: sectionHeight * currentSection,
behavior: 'smooth'
});
setTimeout(() => {
isAnimating = false;
}, scrollDelay);
});
// Handle window resize
window.addEventListener('resize', () => {
portfolio.scrollTo({
top: sectionHeight * currentSection,
behavior: 'auto'
});
});
});

334
scss/about.scss Normal file
View File

@ -0,0 +1,334 @@
// Variables
$primary-color: #3498db;
$secondary-color: #2c3e50;
$text-color: #333;
$light-color: #fff;
$dark-color: #222;
$overlay-color: rgba(0, 0, 0, 0.6);
$blur-amount: 5px;
$section-padding: 2rem;
$max-content-width: 1200px;
// Mixins
@mixin flex-center {
display: flex;
justify-content: center;
align-items: center;
}
@mixin absolute-cover {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
// Base Styles
body {
margin: 0;
padding: 0;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
color: $text-color;
overflow-x: hidden;
scroll-behavior: smooth;
}
// Portfolio Container
.portfolio {
scroll-snap-type: y mandatory;
overflow-y: scroll;
height: 100vh;
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
overscroll-behavior-y: contain;
}
// Sections
.portfolio__section {
scroll-snap-align: start;
position: relative;
height: 100vh;
width: 100%;
overflow: hidden;
.content {
position: relative;
z-index: 2;
max-width: $max-content-width;
margin: 0 auto;
padding: $section-padding;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
// Background image styling
.bg-image {
@include absolute-cover;
background-size: cover;
background-position: center;
z-index: 1;
&::after {
content: '';
@include absolute-cover;
background: $overlay-color;
backdrop-filter: blur($blur-amount);
-webkit-backdrop-filter: blur($blur-amount);
}
}
// Intro section specific styles
&--intro {
text-align: center;
.intro-title {
font-size: 3.5rem;
margin-bottom: 1rem;
color: $light-color;
.highlight {
color: $primary-color;
}
}
.intro-subtitle {
font-size: 1.5rem;
color: rgba($light-color, 0.8);
margin-bottom: 2rem;
}
.social-links {
display: flex;
justify-content: center;
gap: 1.5rem;
.social-link {
color: $light-color;
text-decoration: none;
font-size: 1.1rem;
transition: color 0.3s;
&:hover {
color: $primary-color;
}
}
}
}
// Section titles
.section-title {
font-size: 2.5rem;
margin-bottom: 2rem;
color: $light-color;
position: relative;
display: inline-block;
&::after {
content: '';
position: absolute;
bottom: -10px;
left: 0;
width: 50px;
height: 3px;
background: $primary-color;
}
}
// About section
.about-content {
display: flex;
gap: 2rem;
align-items: center;
.about-text {
flex: 1;
color: $light-color;
line-height: 1.6;
}
.about-image {
flex: 1;
img {
max-width: 100%;
border-radius: 10px;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
}
}
}
// Timeline/Experience
.timeline {
position: relative;
padding-left: 2rem;
color: $light-color;
&::before {
content: '';
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 2px;
background: $primary-color;
}
}
.timeline-item {
margin-bottom: 2rem;
position: relative;
&::before {
content: '';
position: absolute;
left: -2.5rem;
top: 0.5rem;
width: 1rem;
height: 1rem;
border-radius: 50%;
background: $light-color;
border: 2px solid $primary-color;
}
}
.timeline-title {
font-size: 1.3rem;
margin-bottom: 0.3rem;
}
.timeline-company {
font-style: italic;
margin-bottom: 0.5rem;
opacity: 0.8;
}
.timeline-description {
line-height: 1.5;
}
// Projects
.projects-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
}
.project-card {
background: rgba($light-color, 0.1);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border-radius: 10px;
padding: 1.5rem;
transition: transform 0.3s;
color: $light-color;
&:hover {
transform: translateY(-5px);
}
}
.project-title {
font-size: 1.3rem;
margin-bottom: 0.5rem;
color: $light-color;
}
.project-description {
margin-bottom: 1rem;
line-height: 1.5;
}
.project-link {
color: $primary-color;
text-decoration: none;
font-weight: bold;
&:hover {
text-decoration: underline;
}
}
// Footer section
&--footer {
background: $secondary-color;
.content {
text-align: center;
}
.contact-info {
margin-bottom: 2rem;
color: $light-color;
a {
color: $primary-color;
text-decoration: none;
&:hover {
text-decoration: underline;
}
}
}
.footer-links {
display: flex;
justify-content: center;
gap: 2rem;
margin-bottom: 2rem;
.footer-link {
color: $light-color;
text-decoration: none;
transition: color 0.3s;
&:hover {
color: $primary-color;
}
}
}
.copyright {
color: rgba($light-color, 0.6);
font-size: 0.9rem;
}
}
}
// Responsive adjustments
@media (max-width: 768px) {
.portfolio__section {
.content {
padding: 1rem;
}
&--intro {
.intro-title {
font-size: 2.5rem;
}
.intro-subtitle {
font-size: 1.2rem;
}
}
.about-content {
flex-direction: column;
.about-text {
order: 2;
}
.about-image {
order: 1;
margin-bottom: 1.5rem;
}
}
.section-title {
font-size: 2rem;
}
}
}