Your Interactive Learning Companion for Web Development Basics
Building the Foundation of Web Development
Imagine building a house! HTML is like the skeleton and walls (structure), CSS is like the paint and decoration (styling), and JavaScript is like the electricity and plumbing (functionality). Together, they create a beautiful, working website!
Think of Facebook: HTML creates the posts, buttons, and text boxes. CSS makes it look blue and organized. JavaScript lets you like posts, comment, and see notifications without refreshing the page!
Every HTML document is like a letter with specific parts: it has a header (information about the letter), a body (the actual message), and follows a specific format so browsers can read it correctly!
┌─────────────────────────────────────┐
│ <!DOCTYPE html> │ ← Tells browser: "This is HTML5!"
├─────────────────────────────────────┤
│ <html> │ ← Root element (everything goes inside)
│ ├─ <head> │ ← Information ABOUT the page
│ │ ├─ <title> │ ← Tab title
│ │ ├─ <meta> │ ← Page settings
│ │ └─ <link> │ ← CSS files
│ │ │
│ └─ <body> │ ← What users SEE on the page
│ ├─ <header> │ ← Top section
│ ├─ <main> │ ← Main content
│ └─ <footer> │ ← Bottom section
│ </html> │
└─────────────────────────────────────┘
Basic HTML Template
<!-- This tells the browser we're using HTML5 -->
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Character encoding for proper text display -->
<meta charset="UTF-8">
<!-- Makes website responsive on mobile -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Title shown in browser tab -->
<title>My First Webpage</title>
</head>
<body>
<h1>Welcome to My Website!</h1>
<p>This is my first webpage.</p>
</body>
</html>
<!DOCTYPE html> must be the FIRST line<html> wraps everything<head> contains metadata (not visible to users)<body> contains visible content<!DOCTYPE html> tells the browser which version of HTML we're using. For HTML5 (latest version), we simply write <!DOCTYPE html>. It's important because:
Understanding the Building Blocks of HTML
Think of a sandwich! The tags are like the two slices of bread (opening <p> and closing </p>), and the element is the complete sandwich including the bread and filling (everything together)!
Opening Tag Content Closing Tag
↓ ↓ ↓
<p> Hello World! </p>
└────────────┬────────────┘
Complete Element
On Amazon, product titles use heading tags (<h1>), descriptions use paragraph tags (<p>), and features use list tags (<ul>, <li>). Each serves a specific purpose!
Headings are like chapter titles in a book - they organize content from most important (h1) to least important (h6). Paragraphs are like regular text blocks in a book!
Heading Examples (h1 to h6)
<h1>Main Title - Most Important</h1>
<h2>Section Heading</h2>
<h3>Sub-section Heading</h3>
<h4>Minor Heading</h4>
<h5>Small Heading</h5>
<h6>Smallest Heading</h6>
<!-- Real Example: Blog Post -->
<h1>How to Learn Web Development</h1>
<h2>Step 1: Learn HTML</h2>
<h3>Understanding Tags</h3>
<h3>Creating Your First Page</h3>
<h2>Step 2: Learn CSS</h2>
Paragraph Examples
<p>This is a simple paragraph. It contains regular text.</p>
<p>
Paragraphs automatically add space above and below.
Even if you write on multiple lines in code,
it appears as one line in the browser.
</p>
<!-- Line break within paragraph -->
<p>
First line<br>
Second line (forced line break)
</p>
<!-- Horizontal rule (divider line) -->
<hr>
<p>Content after horizontal line</p>
Text Formatting Tags
<!-- Bold Text -->
<strong>Important text (semantic - means important)</strong>
<b>Bold text (just visual, no meaning)</b>
<!-- Italic Text -->
<em>Emphasized text (semantic)</em>
<i>Italic text (just visual)</i>
<!-- Other Formatting -->
<mark>Highlighted text</mark>
<small>Smaller text</small>
<del>Deleted text (strikethrough)</del>
<ins>Inserted text (underlined)</ins>
<sub>Subscript</sub> H<sub>2</sub>O
<sup>Superscript</sup> X<sup>2</sup>
Lists are like shopping lists or to-do lists! Unordered lists (ul) use bullets, ordered lists (ol) use numbers, and description lists (dl) are like dictionary entries!
Unordered List Example
<h3>My Favorite Fruits</h3>
<ul>
<li>Apple</li>
<li>Banana</li>
<li>Orange</li>
</ul>
<!-- Nested List -->
<ul>
<li>Fruits
<ul>
<li>Apple</li>
<li>Banana</li>
</ul>
</li>
<li>Vegetables</li>
</ul>
Ordered List Example
<h3>Steps to Make Tea</h3>
<ol>
<li>Boil water</li>
<li>Add tea leaves</li>
<li>Add sugar and milk</li>
<li>Strain and serve</li>
</ol>
<!-- Start from different number -->
<ol start="5">
<li>This will be number 5</li>
<li>This will be number 6</li>
</ol>
<!-- Reverse order -->
<ol reversed>
<li>Third</li>
<li>Second</li>
<li>First</li>
</ol>
Description List Example
<dl>
<dt>HTML</dt>
<dd>HyperText Markup Language - used for structure</dd>
<dt>CSS</dt>
<dd>Cascading Style Sheets - used for styling</dd>
<dt>JavaScript</dt>
<dd>Programming language - used for interactivity</dd>
</dl>
Connecting Pages and Adding Visual Content
Links are like doors that take you from one room (webpage) to another! The <a> tag (anchor) creates these doors, and the href attribute tells where the door leads!
On Wikipedia, blue underlined words are links. Click "India" and it takes you to India's page. Click "History" and you go to the history section. That's how the entire web is connected!
Link Examples
<!-- External Link (to another website) -->
<a href="https://www.google.com">Visit Google</a>
<!-- Open in new tab -->
<a href="https://www.google.com" target="_blank">Open Google in New Tab</a>
<!-- Internal Link (same website) -->
<a href="about.html">About Us</a>
<a href="/contact.html">Contact</a>
<!-- Jump to section on same page -->
<a href="#section1">Go to Section 1</a>
<h2 id="section1">Section 1</h2>
<!-- Email Link -->
<a href="mailto:someone@example.com">Send Email</a>
<!-- Phone Link -->
<a href="tel:+919876543210">Call Us</a>
<!-- Download Link -->
<a href="document.pdf" download>Download PDF</a>
href attribute (link won't work without it)target="_blank" for external linksabout.html (same folder), ../index.html (parent folder)https://example.com (full URL)The <img> tag is like a picture frame that displays images on your webpage. The src (source) tells where the picture is, and alt (alternative text) describes it for people who can't see it!
Image Examples
<!-- Basic Image -->
<img src="photo.jpg" alt="A beautiful sunset">
<!-- Image with size -->
<img src="photo.jpg" alt="Sunset" width="300" height="200">
<!-- Image from URL -->
<img src="https://example.com/image.jpg" alt="Description">
<!-- Clickable Image (Image as Link) -->
<a href="https://www.google.com">
<img src="logo.png" alt="Google Logo">
</a>
<!-- Responsive Image (adapts to screen size) -->
<img src="photo.jpg" alt="Sunset" style="max-width: 100%; height: auto;">
<!-- Image with title (tooltip) -->
<img src="photo.jpg" alt="Sunset" title="Beautiful sunset at beach">
<img> is a self-closing tag (no closing tag needed)alt attribute for accessibilityimages/photo.jpgloading="lazy" for better performanceResponsive images are like smart pictures that automatically adjust their size based on the device - big on desktop, small on mobile!
Responsive Image Techniques
<!-- Method 1: CSS max-width -->
<img src="photo.jpg" alt="Photo" style="max-width: 100%; height: auto;">
<!-- Method 2: Picture element (different images for different screens) -->
<picture>
<source media="(min-width: 800px)" srcset="large.jpg">
<source media="(min-width: 400px)" srcset="medium.jpg">
<img src="small.jpg" alt="Responsive image">
</picture>
<!-- Method 3: srcset attribute -->
<img src="small.jpg"
srcset="small.jpg 400w, medium.jpg 800w, large.jpg 1200w"
sizes="(max-width: 400px) 400px, (max-width: 800px) 800px, 1200px"
alt="Responsive image">
alt attribute is crucial for several reasons:
https://example.com/images/photo.jpg/images/photo.jpg (from website root)photo.jpg (same folder)images/photo.jpg (subfolder)../photo.jpg (parent folder)target="_blank" attribute:
<a href="https://google.com" target="_blank">Open Google</a>
Target Values:
_blank: Opens in new tab/window_self: Opens in same tab (default)_parent: Opens in parent frame_top: Opens in full windowtarget="_blank", add rel="noopener noreferrer" for security:
<a href="https://google.com" target="_blank" rel="noopener noreferrer">Google</a>
Collecting User Input and Data
Forms are like questionnaires or registration forms you fill at school or hospital. They collect information from users - like login forms, contact forms, or survey forms!
When you sign up for Gmail, you fill a form with your name, email, password, phone number, and birthday. When you search on Google, the search box is a form. When you post on Facebook, that's a form too!
┌─────────────────────────────────────┐
│ <form> │ ← Form container
│ ├─ <label> Name: </label> │ ← Label (describes input)
│ ├─ <input type="text"> │ ← Input field
│ │ │
│ ├─ <label> Email: </label> │
│ ├─ <input type="email"> │
│ │ │
│ └─ <button> Submit </button> │ ← Submit button
│ </form> │
└─────────────────────────────────────┘
Basic Form Structure
<form action="/submit" method="POST">
<!-- Text Input -->
<label for="name">Name:</label>
<input type="text" id="name" name="name" required>
<!-- Email Input -->
<label for="email">Email:</label>
<input type="email" id="email" name="email" required>
<!-- Submit Button -->
<button type="submit">Submit</button>
</form>
Input types are like different types of answer boxes - some for text, some for numbers, some for dates, some for passwords (hidden text), and more!
All Input Types
<form>
<!-- Text Input -->
<input type="text" placeholder="Enter your name">
<!-- Password (hidden text) -->
<input type="password" placeholder="Enter password">
<!-- Email (validates email format) -->
<input type="email" placeholder="email@example.com">
<!-- Number -->
<input type="number" min="1" max="100" step="1">
<!-- Date -->
<input type="date">
<!-- Time -->
<input type="time">
<!-- Color Picker -->
<input type="color">
<!-- File Upload -->
<input type="file" accept="image/*">
<!-- Checkbox -->
<input type="checkbox" id="agree">
<label for="agree">I agree to terms</label>
<!-- Radio Buttons (choose one) -->
<input type="radio" name="gender" value="male"> Male
<input type="radio" name="gender" value="female"> Female
<!-- Range Slider -->
<input type="range" min="0" max="100" value="50">
<!-- URL -->
<input type="url" placeholder="https://example.com">
<!-- Tel (Phone) -->
<input type="tel" placeholder="+91 98765 43210">
<!-- Search -->
<input type="search" placeholder="Search...">
</form>
Textarea Example
<label for="message">Your Message:</label>
<textarea id="message" name="message" rows="5" cols="30" placeholder="Write your message here...">
</textarea>
Select Dropdown Example
<label for="country">Select Country:</label>
<select id="country" name="country">
<option value="">Choose a country</option>
<option value="india">India</option>
<option value="usa">USA</option>
<option value="uk" selected>UK</option>
</select>
<!-- Grouped Options -->
<select name="food">
<optgroup label="Fruits">
<option>Apple</option>
<option>Banana</option>
</optgroup>
<optgroup label="Vegetables">
<option>Carrot</option>
<option>Potato</option>
</optgroup>
</select>
Button Types
<!-- Submit Button (submits form) -->
<button type="submit">Submit Form</button>
<!-- Reset Button (clears form) -->
<button type="reset">Reset Form</button>
<!-- Regular Button (for JavaScript) -->
<button type="button" onclick="alert('Clicked!')">Click Me</button>
<!-- Input as button -->
<input type="submit" value="Submit">
<input type="reset" value="Reset">
<input type="button" value="Click">
Validation is like a teacher checking your homework - it makes sure you filled everything correctly before submitting!
Validation Attributes
<form>
<!-- Required field (must be filled) -->
<input type="text" name="username" required>
<!-- Minimum length -->
<input type="password" minlength="8" required>
<!-- Maximum length -->
<input type="text" maxlength="50">
<!-- Pattern (regex) -->
<input type="text" pattern="[0-9]{10}" placeholder="10-digit phone">
<!-- Min and Max for numbers -->
<input type="number" min="18" max="100">
<!-- Disabled (cannot interact) -->
<input type="text" value="Cannot edit" disabled>
<!-- Readonly (can see but not edit) -->
<input type="text" value="Read only" readonly>
<!-- Placeholder (hint text) -->
<input type="email" placeholder="Enter your email">
<!-- Autofocus (cursor starts here) -->
<input type="text" autofocus>
<button type="submit">Submit</button>
</form>
| Aspect | GET | POST |
|---|---|---|
| Data Visibility | Visible in URL | Hidden in request body |
| Security | Less secure | More secure |
| Data Size | Limited (~2048 chars) | Unlimited |
| Bookmarkable | Yes | No |
| Use Case | Search, filters | Login, registration |
<label> tag describes what an input field is for. Benefits:
<label for="email">Email:</label>
<input type="email" id="email" name="email">
The for value must match the input's id. Now clicking "Email:" will focus the input box!
name attributename<!-- Radio: Choose ONE -->
<input type="radio" name="gender" value="male"> Male
<input type="radio" name="gender" value="female"> Female
<!-- Checkbox: Choose MULTIPLE -->
<input type="checkbox" name="hobby1" value="reading"> Reading
<input type="checkbox" name="hobby2" value="sports"> Sports
Writing Meaningful and Accessible Code
Semantic HTML is like using proper labels on boxes instead of calling everything "box". Instead of using <div> for everything, we use tags that describe what's inside - like <header>, <article>, <footer>!
Think of a newspaper: It has a header (newspaper name), articles (stories), sections (sports, news), and a footer (page number, date). Semantic HTML tags work the same way - they give meaning to different parts of a webpage!
<div id="header">...</div>
<div class="article">...</div>
<div id="footer">...</div>
No meaning, just containers
<header>...</header>
<article>...</article>
<footer>...</footer>
Clear meaning and purpose
┌─────────────────────────────────────────┐
│ <header> │ ← Top section (logo, nav)
│ <nav> Navigation Links </nav> │ ← Navigation menu
│ </header> │
├─────────────────────────────────────────┤
│ <main> │ ← Main content area
│ ├─ <section> │ ← Thematic grouping
│ │ <article> Blog Post </article> │ ← Independent content
│ │ <article> Blog Post </article> │
│ │ </section> │
│ │ │
│ └─ <aside> Sidebar </aside> │ ← Related/side content
│ </main> │
├─────────────────────────────────────────┤
│ <footer> │ ← Bottom section
│ Copyright, Links, Contact │
│ </footer> │
└─────────────────────────────────────────┘
Structural Tags Example
<!-- Header: Top section of page/section -->
<header>
<h1>My Website</h1>
<nav>
<a href="#home">Home</a>
<a href="#about">About</a>
</nav>
</header>
<!-- Main: Primary content (only one per page) -->
<main>
<!-- Section: Thematic grouping -->
<section>
<h2>Latest News</h2>
<!-- Article: Independent, self-contained content -->
<article>
<h3>Article Title</h3>
<p>Article content...</p>
</article>
</section>
<!-- Aside: Related/sidebar content -->
<aside>
<h3>Related Links</h3>
<ul>
<li>Link 1</li>
<li>Link 2</li>
</ul>
</aside>
</main>
<!-- Footer: Bottom section -->
<footer>
<p>© 2024 My Website. All rights reserved.</p>
</footer>
Content Tags Example
<!-- Figure: Image with caption -->
<figure>
<img src="photo.jpg" alt="Sunset">
<figcaption>Beautiful sunset at the beach</figcaption>
</figure>
<!-- Time: Dates and times -->
<p>Published on <time datetime="2024-01-15">January 15, 2024</time></p>
<!-- Mark: Highlighted text -->
<p>This is <mark>important</mark> information.</p>
<!-- Details & Summary: Collapsible content -->
<details>
<summary>Click to expand</summary>
<p>Hidden content appears here when expanded.</p>
</details>
<!-- Address: Contact information -->
<address>
Written by John Doe<br>
Email: <a href="mailto:john@example.com">john@example.com</a>
</address>
<!-- Blockquote: Quotations -->
<blockquote cite="https://example.com">
<p>This is a quoted text from another source.</p>
</blockquote>
Accessibility means making websites usable for everyone, including people with disabilities. It's like building ramps alongside stairs - everyone can access the building!
alt text for images<label>
Accessibility Examples
<!-- Skip to main content link (for keyboard users) -->
<a href="#main-content" class="skip-link">Skip to main content</a>
<!-- Proper heading structure -->
<h1>Main Page Title</h1>
<h2>Section Title</h2>
<h3>Subsection Title</h3>
<!-- Descriptive link text -->
<a href="article.html">Read our accessibility guide</a>
<!-- NOT: <a href="article.html">Click here</a> -->
<!-- Form with proper labels -->
<label for="email">Email Address:</label>
<input type="email" id="email" name="email" required aria-required="true">
<!-- Button with clear purpose -->
<button type="submit" aria-label="Submit contact form">Submit</button>
<nav> for navigation instead of <div class="nav">
<article>. If it's just grouping related content, it's a <section>.
Adding Audio and Video to Your Webpages
The <audio> tag is like a music player embedded in your webpage. You can play songs, podcasts, or any sound files directly in the browser!
Spotify Web Player uses audio elements to play music. Podcast websites use it to let you listen to episodes. Language learning sites use it for pronunciation examples!
Audio Examples
<!-- Basic Audio -->
<audio src="song.mp3" controls>
Your browser does not support audio.
</audio>
<!-- Audio with all controls -->
<audio controls autoplay loop muted>
<source src="song.mp3" type="audio/mpeg">
<source src="song.ogg" type="audio/ogg">
Your browser does not support the audio element.
</audio>
<!-- Preload options -->
<audio src="song.mp3" controls preload="auto"></audio>
<!-- preload: "none" | "metadata" | "auto" -->
controls attribute for user controlautoplay - it annoys users!The <video> tag is like a TV or movie player on your webpage. You can play videos directly without needing YouTube or other platforms!
Netflix and YouTube use video elements (with advanced features). Course websites like Udemy use them for lessons. News websites use them for video reports!
Video Examples
<!-- Basic Video -->
<video src="movie.mp4" controls width="640" height="360">
Your browser does not support video.
</video>
<!-- Video with multiple sources and poster -->
<video controls width="640" height="360" poster="thumbnail.jpg">
<source src="movie.mp4" type="video/mp4">
<source src="movie.webm" type="video/webm">
<source src="movie.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
<!-- Video with subtitles/captions -->
<video controls>
<source src="movie.mp4" type="video/mp4">
<track src="subtitles_en.vtt" kind="subtitles" srclang="en" label="English">
<track src="subtitles_hi.vtt" kind="subtitles" srclang="hi" label="Hindi">
</video>
<!-- All attributes -->
<video
src="movie.mp4"
controls
autoplay
loop
muted
poster="thumbnail.jpg"
width="640"
height="360"
preload="metadata">
</video>
poster for better user experience<track> for accessibilitySometimes you want to embed videos from YouTube, Vimeo, or maps from Google Maps. Use the <iframe> tag - it's like a window showing another website inside yours!
Iframe Examples
<!-- YouTube Video -->
<iframe
width="560"
height="315"
src="https://www.youtube.com/embed/VIDEO_ID"
title="YouTube video player"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen>
</iframe>
<!-- Google Maps -->
<iframe
src="https://www.google.com/maps/embed?pb=..."
width="600"
height="450"
style="border:0;"
allowfullscreen=""
loading="lazy">
</iframe>
<!-- Responsive iframe (maintains aspect ratio) -->
<div style="position: relative; padding-bottom: 56.25%; height: 0;">
<iframe
src="https://www.youtube.com/embed/VIDEO_ID"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
frameborder="0"
allowfullscreen>
</iframe>
</div>
controls, provide multiple formats with <source>, and include fallback text.
<source> tags provide fallback options for different browsers:
<video controls>
<source src="video.mp4" type="video/mp4">
<source src="video.webm" type="video/webm">
<source src="video.ogg" type="video/ogg">
Fallback text for unsupported browsers
</video>
How it works:
<iframe> (Inline Frame) embeds another HTML page or external content inside your webpage.
<iframe
src="https://www.youtube.com/embed/VIDEO_ID"
width="560"
height="315"
allowfullscreen>
</iframe>
Security Note: Only embed iframes from trusted sources. Malicious iframes can be security risks.
Putting It All Together
Now it's time to use everything you learned this week! Create a personal webpage with your bio, skills, hobbies, and contact form. This project combines HTML structure, semantic tags, forms, images, and multimedia!
Complete Personal Webpage Code
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Personal webpage of John Doe">
<title>John Doe - Personal Webpage</title>
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
margin: 0;
padding: 0;
background: #f4f4f4;
}
header {
background: #333;
color: white;
padding: 20px;
text-align: center;
}
nav {
background: #444;
padding: 10px;
text-align: center;
}
nav a {
color: white;
margin: 0 15px;
text-decoration: none;
}
main {
max-width: 800px;
margin: 20px auto;
padding: 20px;
background: white;
}
section {
margin-bottom: 30px;
}
img {
max-width: 100%;
height: auto;
border-radius: 10px;
}
form {
display: flex;
flex-direction: column;
gap: 10px;
}
input, textarea {
padding: 10px;
border: 1px solid #ddd;
border-radius: 5px;
}
button {
padding: 10px 20px;
background: #333;
color: white;
border: none;
border-radius: 5px;
cursor: pointer;
}
footer {
background: #333;
color: white;
text-align: center;
padding: 20px;
margin-top: 20px;
}
</style>
</head>
<body>
<!-- Header Section -->
<header>
<h1>Welcome to My Personal Webpage</h1>
<p>Hi, I'm John Doe - Web Developer & Designer</p>
</header>
<!-- Navigation Menu -->
<nav>
<a href="#about">About</a>
<a href="#skills">Skills</a>
<a href="#hobbies">Hobbies</a>
<a href="#contact">Contact</a>
</nav>
<!-- Main Content -->
<main>
<!-- About Section -->
<section id="about">
<h2>About Me</h2>
<figure>
<img src="profile.jpg" alt="John Doe profile picture" width="300">
<figcaption>That's me!</figcaption>
</figure>
<p>
Hello! I'm a passionate web developer with <strong>3 years of experience</strong>
in creating beautiful and functional websites. I love learning new
technologies and solving complex problems.
</p>
<p>
I graduated from <em>XYZ University</em> with a degree in Computer Science.
Currently, I work as a freelance developer helping businesses establish
their online presence.
</p>
</section>
<!-- Skills Section -->
<section id="skills">
<h2>My Skills</h2>
<h3>Technical Skills</h3>
<ul>
<li>HTML5 & CSS3</li>
<li>JavaScript (ES6+)</li>
<li>React & Node.js</li>
<li>Responsive Web Design</li>
<li>Git & GitHub</li>
</ul>
<h3>Soft Skills</h3>
<ul>
<li>Problem Solving</li>
<li>Team Collaboration</li>
<li>Time Management</li>
<li>Communication</li>
</ul>
</section>
<!-- Hobbies Section -->
<section id="hobbies">
<h2>My Hobbies</h2>
<ol>
<li>
<strong>Photography</strong> - I love capturing beautiful moments
</li>
<li>
<strong>Reading</strong> - Especially tech blogs and sci-fi novels
</li>
<li>
<strong>Gaming</strong> - Strategy and puzzle games
</li>
<li>
<strong>Traveling</strong> - Exploring new places and cultures
</li>
</ol>
</section>
<!-- Contact Form Section -->
<section id="contact">
<h2>Contact Me</h2>
<p>Feel free to reach out! I'd love to hear from you.</p>
<form action="/submit" method="POST">
<label for="name">Your Name:</label>
<input
type="text"
id="name"
name="name"
placeholder="Enter your name"
required>
<label for="email">Your Email:</label>
<input
type="email"
id="email"
name="email"
placeholder="your.email@example.com"
required>
<label for="subject">Subject:</label>
<select id="subject" name="subject" required>
<option value="">Select a subject</option>
<option value="project">Project Inquiry</option>
<option value="job">Job Opportunity</option>
<option value="other">Other</option>
</select>
<label for="message">Your Message:</label>
<textarea
id="message"
name="message"
rows="5"
placeholder="Write your message here..."
required></textarea>
<button type="submit">Send Message</button>
</form>
</section>
</main>
<!-- Footer Section -->
<footer>
<p>© 2024 John Doe. All Rights Reserved.</p>
<p>
Connect with me:
<a href="https://github.com/johndoe" target="_blank" style="color: white;">GitHub</a> |
<a href="https://linkedin.com/in/johndoe" target="_blank" style="color: white;">LinkedIn</a> |
<a href="https://twitter.com/johndoe" target="_blank" style="color: white;">Twitter</a>
</p>
</footer>
</body>
</html>
This project demonstrates: