Bài 4. CSS cơ bản và bộ chọn

CSS quyết định giao diện. Bài này đi từ cú pháp, bộ chọn đến hộp mô hình, màu, chữ — nền tảng cho mọi bố cục.

40 phútCơ bản
Bạn sẽ học được
  • Gắn CSS vào trang
  • Dùng bộ chọn theo thẻ, lớp, id, thuộc tính, giả lớp
  • Hiểu độ ưu tiên (specificity) và thừa kế
  • Làm chủ hộp mô hình, màu sắc và chữ
Thuật ngữ cần biết
Bộ chọn (selector)
Phần chọn phần tử cần tạo kiểu.
Khai báo
Cặp thuộc tính: giá trị;.
Hộp mô hình
Mỗi phần tử là một hộp gồm content, padding, border, margin.
Specificity
Quy tắc tính độ ưu tiên khi nhiều luật xung đột.

Cách gắn CSS

<link rel="stylesheet" href="/style.css">   <!-- nên dùng -->
<style> p { color: red; } </style>           <!-- nhúng trong trang -->
<p style="color:red">...</p>                 <!-- tránh dùng -->

Các loại bộ chọn

p { }                    /* theo thẻ */
.card { }                /* theo lớp (class) */
#logo { }                /* theo id, duy nhất */
nav a { }                /* con cháu */
ul > li { }              /* con trực tiếp */
a:hover { }              /* giả lớp: khi rê chuột */
li:nth-child(2n) { }     /* hàng chẵn */
input[type="email"] { }  /* theo thuộc tính */

Hộp mô hình

*, *::before, *::after { box-sizing: border-box; }
.card {
  width: 300px;
  padding: 16px;          /* khoảng đệm trong */
  border: 1px solid #ccc;
  margin: 0 auto 24px;    /* khoảng cách ngoài, auto để căn giữa */
  border-radius: 12px;
}

Với box-sizing: border-box, chiều rộng đã gồm padding và border, tính toán dễ hơn nhiều.

Màu, chữ, nền

body {
  font-family: "Be Vietnam Pro", system-ui, sans-serif;
  font-size: 1rem;
  line-height: 1.6;
  color: #263238;
  background: #f5f7fa;
}
h1 { font-size: 2.2rem; letter-spacing: -.5px; }
.btn { background: linear-gradient(135deg, #43a047, #1b5e20); color: #fff; }

Đơn vị nên dùng: rem cho chữ và khoảng cách, %/fr cho chiều rộng, px cho đường viền nhỏ.

Tình huống: Nút bấm đẹp, có hiệu ứng

Biến thẻ <a> thường thành nút:

.btn {
  display: inline-block;
  padding: 10px 22px;
  background: #2e7d32;
  color: #fff;
  border-radius: 999px;
  text-decoration: none;
  transition: transform .2s, box-shadow .2s;
}
.btn:hover { transform: translateY(-2px); box-shadow: 0 6px 14px rgba(0,0,0,.2); }
Mẹo hay

Mở DevTools (F12) → thẻ Elements để thử CSS trực tiếp và xem hộp mô hình của phần tử.

Lưu ý

Hạn chế !important và id trong CSS; chúng làm mã khó ghi đè và khó bảo trì. Ưu tiên class.

Thực hành
  1. Tạo style.css và định dạng trang giới thiệu bản thân.
  2. Làm thẻ (card) có viền, bo góc, bóng đổ.
  3. Dùng DevTools thử đổi 5 thuộc tính của một trang web bất kỳ.
Tóm tắt bài học
  • Tách CSS ra tệp riêng.
  • Class là bộ chọn nên dùng nhất.
  • Hộp mô hình với box-sizing: border-box.
  • Dùng rem, phông chữ dễ đọc, line-height 1.5–1.7.