fix: mobile

This commit is contained in:
dhanush.s 2025-09-27 02:48:56 +05:30
parent 94315ae34d
commit 6b8f7e616b
3 changed files with 627 additions and 536 deletions

View File

@ -161,10 +161,8 @@
<header class="navbar"> <header class="navbar">
<div class="logo">Kodepilot</div> <div class="logo">Kodepilot</div>
<input type="text" class="search" placeholder="Search Opportunities"> <input type="text" class="search" placeholder="Search Opportunities">
<nav>
<a href="/login">Log in</a>
</nav>
<div class="buttons"> <div class="buttons">
<a href="/login">Log in</a>
<button class="business" onclick="getInTouch()">Get in touch</button> <button class="business" onclick="getInTouch()">Get in touch</button>
<button class="login" onclick="goToApplay()">Apply</button> <button class="login" onclick="goToApplay()">Apply</button>
</div> </div>
@ -178,11 +176,56 @@
by by
your your
dream company.</p> dream company.</p>
<button class="button_blue_box"><img <button class="button_blue_box">
src="https://d8it4huxumps7.cloudfront.net/uploads/images/655edc8c1fab9_diamond_1.png?d=82x84" <img src="https://d8it4huxumps7.cloudfront.net/uploads/images/655edc8c1fab9_diamond_1.png?d=82x84"
width="41" height="42" alt="diamond" loading="lazy"><span><span width="41" height="42" alt="diamond" loading="lazy">
class="nameContainer">Aditya</span><strong> Just Went <span>
Kodepilot!</strong></span></button> <span class="nameContainer">Aditya</span>
<strong class="descContainer"> Just Went Kodepilot!</strong>
</span>
</button>
<style>
.nameContainer,
.descContainer {
transition: opacity 0.5s;
}
.fade-out {
opacity: 0;
}
.fade-in {
opacity: 1;
}
</style>
<script>
const data = [
{ name: "Aditya", text: "Just Went Kodepilot!" },
{ name: "Priya", text: "won a Hackathon!" },
{ name: "Rahul", text: "earned a Scholarship!" },
{ name: "Sneha", text: "joined a Festival!" }
];
let index1 = 0;
const nameEl1 = document.querySelector(".nameContainer");
const descEl1 = document.querySelector(".descContainer");
setInterval(() => {
nameEl1.classList.add("fade-out");
descEl1.classList.add("fade-out");
setTimeout(() => {
index1 = (index1 + 1) % data.length;
nameEl1.textContent = data[index1].name;
descEl1.textContent = " " + data[index1].text;
nameEl1.classList.remove("fade-out");
descEl1.classList.remove("fade-out");
nameEl1.classList.add("fade-in");
descEl1.classList.add("fade-in");
setTimeout(() => {
nameEl1.classList.remove("fade-in");
descEl1.classList.remove("fade-in");
}, 500);
}, 500);
}, 2000);
</script>
</div> </div>
<div class="cards"> <div class="cards">
<div class="card green">Internships<br><small>Gain Practical Experience</small></div> <div class="card green">Internships<br><small>Gain Practical Experience</small></div>
@ -475,7 +518,8 @@
" "
</p> </p>
<p class="slide-text"> <p class="slide-text">
"The Kodepilot curriculum is laser-focused on job placement. I mastered the required skills and secured my position at GBL with confidence." "The Kodepilot curriculum is laser-focused on job placement. I mastered the required
skills and secured my position at GBL with confidence."
</p> </p>
<div class="slide-logo-box"> <div class="slide-logo-box">
<div class="profile-box"> <div class="profile-box">
@ -496,7 +540,8 @@
" "
</p> </p>
<p class="slide-text"> <p class="slide-text">
"After taking the QA and DevOps courses, Kodepilot made me ready for the global stage. I was immediately placed with a top-tier company: Accenture." "After taking the QA and DevOps courses, Kodepilot made me ready for the global stage. I
was immediately placed with a top-tier company: Accenture."
</p> </p>
<div class="slide-logo-box"> <div class="slide-logo-box">
<div class="profile-box"> <div class="profile-box">
@ -516,7 +561,8 @@
" "
</p> </p>
<p class="slide-text"> <p class="slide-text">
"Kodepilot's training in AWS and DevOps was the key to my career breakthrough. I went from learning the skills to successfully landing a role at Infosys." "Kodepilot's training in AWS and DevOps was the key to my career breakthrough. I went
from learning the skills to successfully landing a role at Infosys."
</p> </p>
<div class="slide-logo-box"> <div class="slide-logo-box">
<div class="profile-box"> <div class="profile-box">
@ -536,77 +582,79 @@
<section> <section>
<!-- <div class="practice-cards-container"> --> <!-- <div class="practice-cards-container"> -->
<div class="practice-container"> <div class="practice-container">
<h1 class="practice-title">Practice Coding & Ace Hiring Assessments</h1> <div class="practice-container-box">
<p class="practice-subtitle">Level up your coding skills by practicing the hiring assessments of your <div class="practice-container-text-box">
dream companies & ace your placement game!</p> <h1 class="practice-title">Practice Coding & Ace Hiring Assessments</h1>
<p class="practice-subtitle">Level up your coding skills by practicing the hiring assessments of
<div class="practice-cards-wrapper"> your
<!-- Coding Practice Card --> dream companies & ace your placement game!</p>
<div class="practice-card active">
<div class="practice-card-content">
<div>
<div class="practice-card-icon">💻</div>
<h3>Coding Practice</h3>
<p>Level up your coding skills by practicing the hiring Questions.</p>
<div class="practice-footer-text">400+ Questions</div>
</div>
<a href="#" class="practice-cta-btn">Start Now ➤</a>
</div>
<div class="practice-card-svg">
<img src="assets/images/codinghiringassesments/nope_1.png" alt="Coding Practice">
</div>
</div> </div>
<div class="practice-cards-wrapper">
<!-- Interview Preparation Card --> <div class="practice-card active">
<div class="practice-card"> <div class="practice-card-content">
<div class="practice-card-content"> <div>
<div> <div class="practice-card-icon">💻</div>
<div class="practice-card-icon">📋</div> <h3>Coding Practice</h3>
<h3>Interview Preparation</h3> <p>Level up your coding skills by practicing the hiring Questions.</p>
<p>Crack Top companies in just 5 days with unbelivable learning</p> <div class="practice-footer-text">400+ Questions</div>
<div class="practice-footer-text">20+ Companies</div> </div>
<a href="#" class="practice-cta-btn">Start Now ➤</a>
</div> </div>
<a href="#" class="practice-cta-btn">Start Now ➤</a> <div class="practice-card-svg">
</div> <img src="assets/images/codinghiringassesments/nope_1.png" alt="Coding Practice">
<div class="practice-card-svg">
<img src="assets/images/codinghiringassesments/nope_2.png" alt="Coding Practice">
</div>
</div>
<!-- Projects Card -->
<div class="practice-card">
<div class="practice-card-content">
<div>
<div class="practice-card-icon">📂</div>
<h3>Projects</h3>
<p>Projects epitomize perfect synergy for success.</p>
<div class="practice-footer-text">15+ Projects</div>
</div> </div>
<a href="#" class="practice-cta-btn">Start Now ➤</a>
</div> </div>
<div class="practice-card-svg">
<img src="assets/images/codinghiringassesments/nope_3.webp" alt="Coding Practice">
</div>
</div>
<!-- Skill Based Assessments Card --> <!-- Interview Preparation Card -->
<div class="practice-card"> <div class="practice-card">
<div class="practice-card-content"> <div class="practice-card-content">
<div> <div>
<div class="practice-card-icon">📝</div> <div class="practice-card-icon">📋</div>
<h3>Skill Based Assessments</h3> <h3>Interview Preparation</h3>
<p>Assess your skills and get ahead of the curve.</p> <p>Crack Top companies in just 5 days with unbelivable learning</p>
<div class="practice-footer-text">2000+ Questions</div> <div class="practice-footer-text">20+ Companies</div>
</div>
<a href="#" class="practice-cta-btn">Start Now ➤</a>
</div>
<div class="practice-card-svg">
<img src="assets/images/codinghiringassesments/nope_2.png" alt="Coding Practice">
</div> </div>
<a href="#" class="practice-cta-btn">Start Now ➤</a>
</div> </div>
<div class="practice-card-svg">
<img src="assets/images/codinghiringassesments/nope_4.webp" alt="Coding Practice"> <!-- Projects Card -->
<div class="practice-card">
<div class="practice-card-content">
<div>
<div class="practice-card-icon">📂</div>
<h3>Projects</h3>
<p>Projects epitomize perfect synergy for success.</p>
<div class="practice-footer-text">15+ Projects</div>
</div>
<a href="#" class="practice-cta-btn">Start Now ➤</a>
</div>
<div class="practice-card-svg">
<img src="assets/images/codinghiringassesments/nope_3.webp" alt="Coding Practice">
</div>
</div>
<!-- Skill Based Assessments Card -->
<div class="practice-card">
<div class="practice-card-content">
<div>
<div class="practice-card-icon">📝</div>
<h3>Skill Based Assessments</h3>
<p>Assess your skills and get ahead of the curve.</p>
<div class="practice-footer-text">2000+ Questions</div>
</div>
<a href="#" class="practice-cta-btn">Start Now ➤</a>
</div>
<div class="practice-card-svg">
<img src="assets/images/codinghiringassesments/nope_4.webp" alt="Coding Practice">
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<!-- </div> -->
</section> </section>
@ -619,7 +667,8 @@
</div> </div>
<div class="card-easy-right"> <div class="card-easy-right">
<h2>The Future of Your Career Starts Now. Learn, Grow, Achieve</h2> <h2>The Future of Your Career Starts Now. Learn, Grow, Achieve</h2>
<p>Stop waiting for opportunity—create it. Dive into our extensive library to level up your expertise and unlock your next big career move.</p> <p>Stop waiting for opportunity—create it. Dive into our extensive library to level up your
expertise and unlock your next big career move.</p>
<div class="features"> <div class="features">
<div class="feature"><span></span>50+ Courses</div> <div class="feature"><span></span>50+ Courses</div>
<div class="feature"><span></span>Certificate</div> <div class="feature"><span></span>Certificate</div>
@ -676,8 +725,8 @@
<footer class="footer"> <footer class="footer">
<div class="footer-container"> <div class="footer-container">
<div class="footer-section company-section"> <div class="footer-section company-section">
<div class="logo" style="text-align: left; margin-left: 0; padding-left: 0;">Kodepilot</div> <div class="logo" style="text-align: left; margin-left: 0; padding-left: 0;">Kodepilot</div>
<p class="tagline">Built with <span class="heart"></span> in India for the world</p> <p class="tagline">Built with <span class="heart"></span> in India for the world</p>
<div class="contact-info"> <div class="contact-info">
<h4>Stay Connected</h4> <h4>Stay Connected</h4>
@ -694,14 +743,14 @@
</div> </div>
</div> </div>
<div > <div>
<strong style="color: white; font-size: 14px; line-height: 30px;">Support Inquiries</strong> <strong style="color: white; font-size: 14px; line-height: 30px;">Support Inquiries</strong>
<div style="margin-bottom: 20px; line-height: 23px; margin-left: -27px;"> <div style="margin-bottom: 20px; line-height: 23px; margin-left: -27px;">
<div class="contact-item"> <div class="contact-item">
<i class="fas fa-envelope"></i> <i class="fas fa-envelope"></i>
support@kodepilot.com support@kodepilot.com
</div> </div>
</div> </div>
</div> </div>
</div> </div>

983
main.css

File diff suppressed because it is too large Load Diff

79
main.js
View File

@ -1,5 +1,5 @@
function goToApplay() { function goToApplay() {
window.location.href = "/applay/"; window.location.href = "/apply/";
} }
function getInTouch() { function getInTouch() {
@ -422,56 +422,73 @@ function renderCourses(allCourses) {
} }
}); });
// If temp still has >= 4, push it
if (temp.courses.length >= 4) { if (temp.courses.length >= 4) {
mergedSections.push(temp); mergedSections.push(temp);
} }
// Render sections
mergedSections.forEach(sectionData => { mergedSections.forEach(sectionData => {
const section = document.createElement('div'); const section = document.createElement('div');
section.className = 'course-section'; section.className = 'course-section';
section.innerHTML = ` section.innerHTML = `
<h2 class="course-category-title">${sectionData.category}</h2> <h2 class="course-category-title">${sectionData.category}</h2>
<div class="course-slider-box"> <div class="course-slider-box">
<div class="course-slider"> <div class="course-slider">
<button class="prev-btn nav-button"></button> <button class="prev-btn nav-button"></button>
<div class="course-track"></div> <div class="course-track"></div>
<button class="next-btn nav-button"></button> <button class="next-btn nav-button"></button>
</div> </div>
</div> </div>
`; `;
const track = section.querySelector('.course-track'); const track = section.querySelector('.course-track');
const prevBtn = section.querySelector('.prev-btn');
const nextBtn = section.querySelector('.next-btn');
sectionData.courses.forEach(course => { sectionData.courses.forEach(course => {
const courseDiv = document.createElement('div'); const courseDiv = document.createElement('div');
courseDiv.className = 'course-card'; courseDiv.className = 'course-card';
courseDiv.innerHTML = ` courseDiv.innerHTML = `
<a href="${course.link}" target="_blank"> <a href="${course.link}" target="_blank">
<div class="course-image" style="background-image: url(${course.image});"></div> <div class="course-image" style="background-image: url(${course.image});"></div>
</a> </a>
<div class="course-content"> <div class="course-content">
<a href="${course.link}" class="course-name" target="_blank">${course.name}</a> <a href="${course.link}" class="course-name" target="_blank">${course.name}</a>
<div class="course-description">${course.description}</div> <div class="course-description">${course.description}</div>
</div> </div>
`; `;
track.appendChild(courseDiv); track.appendChild(courseDiv);
}); });
// Slider buttons // Button scrolling
const prevBtn = section.querySelector('.prev-btn'); const scrollAmount = 300;
const nextBtn = section.querySelector('.next-btn'); prevBtn.addEventListener('click', () => track.scrollBy({ left: -scrollAmount, behavior: 'smooth' }));
nextBtn.addEventListener('click', () => track.scrollBy({ left: scrollAmount, behavior: 'smooth' }));
prevBtn.addEventListener('click', () => { // Touch swipe
track.scrollBy({ left: -300, behavior: 'smooth' }); let startX = 0;
let isDragging = false;
track.addEventListener('touchstart', e => {
startX = e.touches[0].clientX;
isDragging = true;
}); });
nextBtn.addEventListener('click', () => {
track.scrollBy({ left: 300, behavior: 'smooth' }); track.addEventListener('touchmove', e => {
if (!isDragging) return;
const x = e.touches[0].clientX;
const walk = (startX - x) * 10;
track.scrollLeft += walk;
startX = x;
});
track.addEventListener('touchend', () => {
isDragging = false;
}); });
container.appendChild(section); container.appendChild(section);
}); });
} }
@ -493,7 +510,7 @@ function stepScroll() {
track.appendChild(first); track.appendChild(first);
track.style.transition = 'none'; track.style.transition = 'none';
track.style.transform = 'translateX(0)'; track.style.transform = 'translateX(0)';
void track.offsetWidth; // force reflow void track.offsetWidth;
track.style.transition = 'transform 0.5s ease'; track.style.transition = 'transform 0.5s ease';
track.removeEventListener('transitionend', handler); track.removeEventListener('transitionend', handler);
}); });
@ -505,7 +522,7 @@ setInterval(stepScroll, 3000);
/*--------------------------------------------------------*/ /*--------------------------------------------------------*/
document.addEventListener('DOMContentLoaded', function() { document.addEventListener('DOMContentLoaded', function () {
const cards = document.querySelectorAll('.practice-card'); const cards = document.querySelectorAll('.practice-card');
let activeCard = document.querySelector('.practice-card.active'); let activeCard = document.querySelector('.practice-card.active');
let lastActiveCard = activeCard; let lastActiveCard = activeCard;
@ -531,14 +548,14 @@ document.addEventListener('DOMContentLoaded', function() {
// Add click event listeners (better for mobile and accessibility) // Add click event listeners (better for mobile and accessibility)
cards.forEach(card => { cards.forEach(card => {
card.addEventListener('click', function() { card.addEventListener('click', function () {
setActiveCard(this); setActiveCard(this);
}); });
}); });
// Optional: Add hover effect for desktop (complementary to click) // Optional: Add hover effect for desktop (complementary to click)
cards.forEach(card => { cards.forEach(card => {
card.addEventListener('mouseenter', function() { card.addEventListener('mouseenter', function () {
// Only activate on hover if you want that behavior // Only activate on hover if you want that behavior
// setActiveCard(this); // setActiveCard(this);
}); });