Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Dù framework đổi liên tục, HTML và CSS vẫn là nền móng của mọi giao diện web. Rất nhiều ứng viên frontend vấp ở những câu CSS tưởng đơn giản. Hãy ôn lại các chủ đề được hỏi nhiều nhất cùng cách giải thích gọn gàng.
Mỗi phần tử HTML là một hình hộp gồm bốn lớp từ trong ra ngoài: nội dung (content), đệm (padding), viền (border) và lề (margin). Mặc định width chỉ tính phần nội dung, nên thêm padding và border sẽ làm hộp rộng hơn. Dùng box-sizing: border-box để width bao gồm cả padding và border, giúp tính toán bố cục dễ đoán hơn.
*, *::before, *::after { box-sizing: border-box;}Khi nhiều quy tắc cùng áp vào một phần tử, trình duyệt chọn theo độ ưu tiên (specificity), sau đó theo thứ tự xuất hiện. Thứ tự từ thấp đến cao:
p, div..card, :hover.#header.style.!important vượt trên tất cả, nên hạn chế dùng.Lời khuyên thực tế: ưu tiên class, giữ độ cụ thể thấp và đồng đều để dễ ghi đè.
Flexbox bố trí phần tử theo một chiều (hàng hoặc cột). Container khai báo display: flex, trục chính được điều khiển bởi justify-content, trục phụ bởi align-items.
.toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px;}.toolbar .grow { flex: 1;}Câu hỏi bổ sung hay gặp: căn giữa một phần tử theo cả hai chiều. Với flexbox: display: flex; justify-content: center; align-items: center; trên phần tử cha. Với grid: display: grid; place-items: center;.
Flexbox phù hợp bố cục một chiều như thanh điều hướng, hàng nút. CSS Grid xử lý bố cục hai chiều, nên hợp với khung trang tổng thể hay lưới thẻ. Hai cái thường được dùng kết hợp.
Thiết kế đáp ứng nghĩa là giao diện thích nghi với nhiều kích thước màn hình. Các nền tảng gồm thẻ meta viewport, đơn vị tương đối (%, rem, vw), bố cục linh hoạt và media query.
<meta name="viewport" content="width=device-width, initial-scale=1">.container { padding: 16px; }@media (min-width: 768px) { .container { max-width: 720px; margin: 0 auto; }}Cách tiếp cận mobile-first nghĩa là viết CSS cho màn hình nhỏ trước, rồi dùng min-width để bổ sung cho màn hình lớn.
Dùng thẻ đúng mục đích như header, nav, main, article, button thay vì div khắp nơi giúp công cụ tìm kiếm và trình đọc màn hình hiểu cấu trúc trang. Ảnh cần thuộc tính alt mô tả, biểu mẫu cần label gắn với ô nhập, và các thành phần tương tác phải dùng được bằng bàn phím.
Một bài live coding hay gặp là dựng một lưới thẻ sản phẩm: một cột trên điện thoại, hai cột trên máy tính bảng, bốn cột trên màn hình rộng. Với CSS Grid bạn có thể làm rất gọn:
.grid { display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));}.card { border: 1px solid #ddd; border-radius: 8px; padding: 12px;}Dòng repeat(auto-fill, minmax(220px, 1fr)) tự tính số cột phù hợp theo độ rộng màn hình mà không cần media query. Khi trình bày, hãy giải thích bạn chọn Grid vì đây là bố cục hai chiều và nó đơn giản hơn so với việc tính phần trăm thủ công. Nếu có thời gian, bổ sung trạng thái :hover, :focus-visible cho thẻ để cho thấy bạn quan tâm đến người dùng bàn phím.
Thay vì học thuộc, hãy tự dựng một trang nhỏ với thanh điều hướng, lưới thẻ và biểu mẫu rồi thử đổi từng thuộc tính để thấy hiệu ứng. Kinh nghiệm tay làm sẽ giúp bạn trả lời tự nhiên hơn mọi bài học thuộc lòng.
Nếu bạn muốn nắm vững nền tảng web, có thể bắt đầu với các khóa HTML, CSS tại codebem.com.
Nguyễn Đình Cường
0 comment