Lập Trình Web HTML/CSS
1. HTML Cơ Bản (Cấu Trúc)
1.1. Cấu Trúc Trang Web
Mọi trang web đều bắt đầu bằng bộ khung HTML chuẩn.
<!DOCTYPE html>
<html>
<head>
<title>Tiêu đề xuất hiện trên tab trình duyệt</title>
</head>
<body>
<h1>Tiêu đề lớn nhất</h1>
<p>Đây là một đoạn văn bản (paragraph).</p>
</body>
</html>
2. CSS Cơ Bản (Trang Trí)
CSS (Cascading Style Sheets) giống như "lớp trang điểm" cho trang web, giúp định dạng màu sắc, bố cục và phông chữ.
2.1. Cú Pháp CSS
h1 {
color: blue; /* Thuộc tính: Giá trị */
font-size: 20px;
}
2.2. Các Loại Selector (Bộ Chọn)
- Cơ bản:
p { color: red; }(Thẻ: mọi thẻ p).box { background: #eee; }(Class: class="box")#header { height: 50px; }(ID: id="header")
- Nâng cao (Mối quan hệ):
div p { ... }(Hậu duệ: mọi thẻ p nằm trong div)ul > li { ... }(Con trực tiếp: chỉ li là con trực tiếp của ul)h1, h2, h3 { ... }(Nhóm: áp dụng cho cả h1, h2, h3)
- Pseudo-class (Trạng thái):
a:hover { color: orange; }(Khi di chuột vào thẻ a)input:focus { border: blue; }(Khi đang nhập liệu)
2.3. Cách Chèn CSS
Phổ biến nhất là dùng thẻ <style> trong <head> hoặc
file .css riêng.
<style>
body { font-family: Arial, sans-serif; }
.highlight { color: orange; font-weight: bold; }
</style>
2.4. Định Kiểu Liên Kết & Danh Sách
a. Liên Kết (Links)
Thường dùng text-decoration để bỏ
gạch chân và :hover để tạo hiệu ứng.
a {
text-decoration: none; /* Bỏ gạch chân */
color: #3b82f6;
}
a:hover {
text-decoration: underline; /* Gạch chân khi di chuột */
color: #1d4ed8;
}
b. Danh Sách (Lists)
Dùng list-style-type để đổi kiểu
dấu đầu dòng.
ul {
list-style-type: square; /* Hình vuông */
/* Các giá trị khác: circle, none (bỏ dấu) */
}
2.5. Định Kiểu Bảng & Box Model (Div)
a. Box Model (Mô hình hộp)
Mọi phần tử HTML (như <div>)
đều là một cái hộp. Các thành phần chính:
- Content: Nội dung bên trong.
- Padding: Khoảng cách từ nội dung đến viền.
- Border: Đường viền bao quanh.
- Margin: Khoảng cách giữa các hộp.
.box {
width: 200px;
padding: 20px; /* Đệm trong */
border: 2px solid black; /* Viền */
margin: 10px; /* Lề ngoài */
}
b. Định Kiểu Bảng (Tables)
Dùng border-collapse để gộp viền
và padding để tạo không gian.
table {
width: 100%;
border-collapse: collapse; /* Gộp 2 viền thành 1 */
}
th, td {
border: 1px solid #ddd;
padding: 8px; /* Khoảng cách nội dung */
text-align: left;
}
/* Hiệu ứng sọc ngựa vằn */
tr:nth-child(even) { background-color: #f2f2f2; }
2.6. Định Kiểu Biểu Mẫu (Forms)
Làm đẹp ô nhập liệu và nút bấm để tăng trải nghiệm người dùng.
input[type="text"], select {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px; /* Bo góc */
box-sizing: border-box; /* Tính cả padding vào width */
}
button {
width: 100%;
background-color: #4CAF50;
color: white;
padding: 14px 20px;
margin: 8px 0;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #45a049;
}
3. Bảng và Khung (Tables & Frames)
3.1. Tạo Bảng (HTML Tables)
Sử dụng thẻ <table> để hiển thị dữ liệu dạng lưới.
<table border="1">
<tr> <!-- Hàng -->
<th>Tên</th> <!-- Tiêu đề cột -->
<th>Tuổi</th>
</tr>
<tr>
<td>An</td> <!-- Ô dữ liệu -->
<td>20</td>
</tr>
</table>
3.2. Khung (Frames/Borders)
Bạn có thể tạo "khung" nhúng trang web khác bằng <iframe> hoặc tạo khung
viền trang trí bằng CSS border.
Khung viền CSS (border)
Thẻ iframe (Nhúng bản đồ/video)
4. Đa Phương Tiện (Multimedia)
4.1. Hình Ảnh (Images)
Sử dụng thẻ <img> để chèn ảnh. Lưu ý thẻ này không có thẻ đóng.
<img src="hinh-anh.jpg" alt="Mô tả ảnh" width="300">
4.2. Âm Thanh (Audio)
Sử dụng thẻ <audio> để phát nhạc.
<audio controls> <source src="nhac.mp3" type="audio/mpeg"> Trình duyệt của bạn không hỗ trợ thẻ audio. </audio>
4.3. Video
Sử dụng thẻ <video> để phát video.
<video width="320" height="240" controls> <source src="video.mp4" type="video/mp4"> Trình duyệt của bạn không hỗ trợ thẻ video. </video>
5. Biểu Mẫu (Forms)
5.1. Thẻ Form & Input
Biểu mẫu giúp thu thập dữ liệu từ người dùng.
<form>: Bao quanh các phần tử biểu mẫu.<input>: Ô nhập liệu (text, password, number...).<button>: Nút bấm.
Ví dụ Form Đăng Nhập:
6. Dự Án: Trang Hồ Sơ Cá Nhân
Hãy kết hợp tất cả kiến thức để tạo một trang "Portfolio" giới thiệu bản thân.
<!DOCTYPE html>
<html>
<head>
<title>Hồ Sơ Của Tôi</title>
<style>
body { font-family: sans-serif; margin: 0; background: #f4f4f4; color: #333; }
/* Header & Nav */
header { background: #3b82f6; color: white; padding: 20px; text-align: center; }
nav a { color: white; margin: 0 10px; text-decoration: none; font-weight: bold; }
nav a:hover { text-decoration: underline; color: #fbbf24; }
/* Main Layout */
.container { max-width: 800px; margin: 20px auto; background: white; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
section { margin-bottom: 30px; }
h2 { border-bottom: 2px solid #3b82f6; padding-bottom: 10px; color: #1e3a8a; }
/* Elements */
img { border-radius: 50%; border: 4px solid #3b82f6; }
table { width: 100%; border-collapse: collapse; margin-top: 10px; }
th, td { border: 1px solid #ddd; padding: 10px; text-align: left; }
th { background: #eff6ff; }
form input, form textarea { width: 100%; padding: 10px; margin: 5px 0; border: 1px solid #ccc; border-radius: 4px; box-sizing: border-box; }
button { background: #3b82f6; color: white; padding: 10px 20px; border: none; border-radius: 4px; cursor: pointer; }
button:hover { background: #2563eb; }
footer { text-align: center; padding: 20px; color: #666; font-size: 0.9em; border-top: 1px solid #ddd; margin-top: 20px; }
</style>
</head>
<body>
<header>
<img src="https://via.placeholder.com/100" alt="Avatar">
<h1>Nguyễn Văn A</h1>
<nav>
<a href="#about">Giới Thiệu</a>
<a href="#skills">Kỹ Năng</a>
<a href="#contact">Liên Hệ</a>
</nav>
</header>
<div class="container">
<section id="about">
<h2>Giới Thiệu</h2>
<p>Xin chào! Tôi là một lập trình viên web đầy nhiệt huyết. Tôi thích tạo ra những trang web đẹp và hữu ích.</p>
</section>
<section id="skills">
<h2>Kỹ Năng</h2>
<table>
<tr><th>Kỹ Năng</th><th>Đánh Giá</th></tr>
<tr><td>HTML & CSS</td><td>⭐⭐⭐⭐⭐</td></tr>
<tr><td>JavaScript</td><td>⭐⭐⭐⭐</td></tr>
</table>
</section>
<section id="contact">
<h2>Liên Hệ</h2>
<form>
<label>Email của bạn:</label>
<input type="email" placeholder="example@gmail.com">
<label>Lời nhắn:</label>
<input type="text" placeholder="Xin chào...">
<button>Gửi Tin Nhắn</button>
</form>
</section>
</div>
<footer>
<p>© 2024 Nguyễn Văn A. All rights reserved.</p>
</footer>
</body>
</html>
7. Bài Tập: Vẽ Hình Sao (Logic)
Sử dụng vòng lặp (loop) trong JavaScript để in ra một tam giác sao. Đây là bài tập kinh điển để luyện tư duy logic.
Đề bài: In ra màn hình console hình sau:
* ** *** **** *****
8. Bài Tập: Giao Diện Đánh Giá Sao (UI)
Tạo một component đánh giá 5 sao tương tác được. Khi di chuột hoặc click, các ngôi sao sẽ sáng lên.
Hãy đánh giá khóa học này!
9. Dự Án: Kỷ Yếu Lớp 12A
Xây dựng trang kỷ yếu trực tuyến lưu giữ những khoảnh khắc đáng nhớ của lớp. Sử dụng CSS Grid hoặc Flexbox để tạo bố cục lưới ảnh đẹp mắt.
<!-- HTML Structure -->
<div class="gallery">
<div class="card">
<img src="student1.jpg" alt="Student 1">
<h3>Nguyễn Văn A</h3>
<p>"Học hết sức, chơi hết mình!"</p>
</div>
<!-- More cards... -->
</div>
<!-- CSS -->
<style>
.gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 20px;
}
.card {
border: 1px solid #ddd;
padding: 10px;
text-align: center;
border-radius: 8px;
transition: transform 0.3s;
}
.card:hover {
transform: scale(1.05); /* Phóng to khi di chuột */
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}
.card img {
width: 100%;
border-radius: 4px;
margin-bottom: 10px;
}
</style>
Demo: Kỷ Yếu Lớp 12A
Nam Khánh
"Coder tương lai"
Minh Anh
"Designer tài ba"
Hoàng Long
"Vận động viên"
Ôn Tập Kiến Thức
Hãy thử sức với bài kiểm tra trắc nghiệm để củng cố lại những gì đã học nhé!
Làm bài kiểm tra ngay