ADVANCED TOPICS
Take Your Web Development Skills to the Next Level
Lesson Progress
⏳ In Progress
Advanced Curriculum
Section 5.1 - 5.2
Section 5.3 - 5.4
5.1 Forms & Interactivity
Advanced Form Techniques
<!-- Autocomplete off -->
<form autocomplete="off">
<!-- Fieldset for grouping -->
<fieldset>
<legend>Personal Info</legend>
<input type="text">
</fieldset>
<!-- Datalist for suggestions -->
<input list="browsers">
<datalist id="browsers">
<option value="Chrome">
<option value="Firefox">
</datalist>
<!-- Range with output -->
<input type="range" oninput="output.value=value">
<output id="output">50</output>
Live Demo: Advanced Form
Form Data to Object
// Convert form data to JavaScript object
const form = document.getElementById('myForm');
const formData = new FormData(form);
const data = Object.fromEntries(formData);
console.log(data);
// Or with jQuery
const data = $('#myForm').serializeArray();
5.2 Responsive Design
Mobile-First Approach
/* Mobile First - base styles for phones */
.container {
width: 100%;
padding: 10px;
}
/* Tablet */
@media (min-width: 768px) {
.container {
width: 750px;
margin: 0 auto;
}
}
/* Desktop */
@media (min-width: 1024px) {
.container {
width: 960px;
}
}
/* Large Desktop */
@media (min-width: 1200px) {
.container {
width: 1140px;
}
}
Responsive Units
| Unit | Description | Example |
|---|---|---|
| vw | 1% of viewport width | 50vw = half screen |
| vh | 1% of viewport height | 100vh = full height |
| % | Percentage of parent | width: 50% |
| em | Relative to parent font | 2em = 2× parent |
| rem | Relative to root font | 1rem = 16px default |
| fr | Fraction of available space | 1fr in grid |
📱 Responsive Card Demo
Resize your browser window to see the magic!
Card 1
Card 2
Card 3
Card 4
Uses grid-template-columns: repeat(auto-fit, minmax(200px, 1fr))
Responsive Images
<!-- Responsive image with srcset -->
<img src="small.jpg"
srcset="medium.jpg 1000w,
large.jpg 2000w"
sizes="(max-width: 600px) 100vw,
(max-width: 1200px) 50vw,
33vw"
alt="Responsive image">
<!-- Picture element for art direction -->
<picture>
<source media="(max-width: 600px)" srcset="mobile.jpg">
<source media="(max-width: 1200px)" srcset="tablet.jpg">
<img src="desktop.jpg" alt="Default">
</picture>
5.3 Deployment Basics
Shared Hosting
cPanel, FileZilla, FTP
- ✅ Cheap ($3-10/month)
- ✅ Easy to use
- ❌ Limited resources
- ❌ Shared IP
VPS
DigitalOcean, Linode, Vultr
- ✅ Full control
- ✅ Scalable
- ❌ Requires sysadmin
- ❌ More expensive
Cloud Platforms
Netlify, Vercel, Heroku
- ✅ Free tier available
- ✅ Git integration
- ✅ Auto-deploy
- ✅ SSL included
Step-by-Step Deployment Guide
Option 1: Deploy to Netlify (Free, Easiest)
# 1. Build your site # 2. Drag and drop your folder to: https://app.netlify.com/drop # Or connect Git repository # 3. Push to GitHub # 4. Connect Netlify to your repo # 5. Automatic deploys on every push!
Your Netlify URL: https://kranedigitalhub.netlify.app
Perfect for static sites (HTML, CSS, JS)
Option 2: Deploy to Hostinger (PHP Support)
# 1. Buy hosting plan # 2. Access cPanel # 3. Open File Manager or use FTP # 4. Upload files to public_html/ # 5. Create MySQL database in cPanel # 6. Update config.php with database credentials
Option 3: Deploy to VPS (DigitalOcean)
# SSH into server ssh root@your-server-ip # Install LAMP/LEMP stack apt update apt install nginx mysql-server php-fpm # Clone your repository git clone https://github.com/yourusername/yourproject.git # Configure nginx # Set up domain and SSL with Let's Encrypt
🌐 Deployment Checklist
5.4 Performance Optimization
Optimization Techniques
| Technique | Impact |
|---|---|
| Minify CSS/JS | Reduce file size 30-50% |
| Compress images | Reduce image size 60-80% |
| Lazy loading | Load images only when needed |
| CDN usage | Faster global delivery |
| Caching | Reduce server load |
| Gzip compression | Reduce transfer size 70% |
Performance Metrics
First Contentful Paint: 0.8s
Time to Interactive: 1.2s
Largest Contentful Paint: 1.5s
Image Optimization
<!-- Lazy loading -->
<img src="image.jpg" loading="lazy">
<!-- Modern formats -->
<picture>
<source srcset="image.webp" type="image/webp">
<img src="image.jpg" alt="Fallback">
</picture>
<!-- Responsive images -->
<img srcset="small.jpg 300w,
medium.jpg 600w,
large.jpg 900w"
sizes="(max-width: 600px) 100vw, 50vw"
src="fallback.jpg">
Code Optimization
// Debounce - limit function calls
function debounce(func, wait) {
let timeout;
return function() {
clearTimeout(timeout);
timeout = setTimeout(func, wait);
};
}
// Throttle - ensure max one call per interval
function throttle(func, limit) {
let inThrottle;
return function() {
if (!inThrottle) {
func();
inThrottle = true;
setTimeout(() => inThrottle = false, limit);
}
};
}
⚡ Test Your Page Speed
Click the button to simulate a performance test:
Tools for Performance Testing
🚀 Final Project: Build a Complete Website
Combine Everything You've Learned!
Project Requirements:
- ✅ Responsive navigation bar
- ✅ Hero section with call-to-action
- ✅ About section with your bio
- ✅ Services/features grid (Flexbox/Grid)
- ✅ Portfolio gallery with images
- ✅ Contact form with validation
- ✅ Footer with social links
- ✅ Mobile-friendly design
- ✅ Smooth scrolling
- ✅ Interactive elements (hover effects)
- ✅ Form submission handling
- ✅ Deployed to Netlify
Bonus Features:
- 🌟 Dark/light mode toggle
- 🌟 Animations on scroll
- 🌟 Blog section with posts
- 🌟 Search functionality
- 🌟 Comments section
Starter Template:
<!DOCTYPE html>
<html>
<head>
<title>My Portfolio</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
/* Your CSS here */
</style>
</head>
<body>
<header>
<nav>...</nav>
</header>
<main>
<section class="hero">...</section>
<section class="about">...</section>
<section class="services">...</section>
<section class="portfolio">...</section>
<section class="contact">...</section>
</main>
<footer>...</footer>
<script>
// Your JavaScript here
</script>
</body>
</html>