HTML là viết tắt của HyperText Markup Language, là ngôn ngữ đánh dấu siêu văn bản.
HTML không phải ngôn ngữ lập trình mà là ngôn ngữ đánh dấu
Mỗi file HTML có đuôi mở rộng là `html`, ví dụ: `index.html`.
Cấu trúc gồm 4 phần: `DOCTYPE`, `<html>`, `<head>` và `<body>`
Thẻ meta
meta charset
Thẻ meta với `charset="UTF-8"` có tác dụng hỗ trợ hiển thị các ký tự nằm ngoài khoảng từ `A - Z`. Ví dụ: tiếng Việt có dấu, tiếng Trung, tiếng Nhật, tiếng Ả Rập, v.v.
meta title
Tuy không có tên thẻ meta nhưng title vẫn thuộc nhóm thẻ meta
Là những đoạn code tiêu chuẩn được tái sử dụng ở nhiều nơi
Sử dụng boilerplate HTML với "!" hoặc "html:5"
Nhóm thẻ tiêu đề
Các thẻ heading h1-h6
Ý nghĩa
Thể hiện các tiêu đề chính của trang web theo từng đề mục
Hỗ trợ công cụ tìm kiếm nhận diện những nội dung chính của trang web
Hỗ trợ hiển thị
Lưu ý
Không sử dụng vượt cấp
Luôn nên bắt đầu từ h1
Không lồng các thẻ heading vào nhau
Trong 1 trang luôn chỉ có duy nhất 1 thẻ h1
Nhóm thẻ văn bản
p
paragraph: định nghĩa một đoạn văn
Lưu ý: với những đoạn text ngắn có thể không phải đoạn văn mà là thẻ li, span, hoặc thẻ heading, label, td, .v.v. Không phải lúc nào cũng sử dụng thẻ p cho text
u
underline (inline): nhấn mạnh bằng cách gạch chân một đoạn văn
i
italic (inline): nhấn mạnh bằng cách in nghiêng đoạn văn
b
bold (inline): nhấn mạnh bằng cách tô đậm đoạn văn
strong
nhấn mạnh bằng cách tô đậm đoạn văn, tuy nhiên đoạn text trong thẻ strong sẽ được công cụ tìm kiếm chú ý hơn và thể hiện tính nghiêm trọng, khẩn cấp hơn.
Nhóm thẻ danh sách
Thẻ ol
ordered list: danh sách có đánh thứ tự
Thẻ ul
unordered list: danh sách không đánh thứ tự
Thẻ li
list item: phần tử con trong danh sách
Lưu ý
Thẻ li phải là con trực tiếp của thẻ ol hoặc ul
Thay đổi style cho li bằng "list-style-type" cho thẻ ol hoặc ul
Nhóm thẻ bảng
Các thẻ bảng
table
Khai báo 1 bảng
thead
Khai báo phần đầu bảng
tr
table-row: khai báo 1 dòng trong bảng
th
table-heading: khai báo tiêu đề 1 cột
tbody
Khai bảo thân bảng
td
table-data: khai báo 1 ô trong dòng
mặc định thẻ td phải là con trực tiếp của thẻ tr
tfoot
Khai báo phần chân bảng
colspan
Thuộc tính colspan để gộp các cột liền kề
Mặc định: 1 - tức là không gộp
Nhận giá trị nguyên dương
border-collapse
Khi xứ lý border của bảng, mỗi thẻ trong bảng sẽ có border riêng không đè gộp với các thẻ khác của bảng.
Giá trị mặc định: separate
Chia ra thành các border riêng
border-collapse: collapse
Gộp các đường border của các thẻ bảng thành 1 đường duy nhất
Nhóm thẻ link, a, iframe, script
Thẻ link
Dùng để đưa tài nguyên khác vào trang web, phục vụ gián tiếp cho việc hiển thị nội dung.
Ví dụ: font chữ, tài nguyên css, tài nguyên icons...
Thẻ a (anchor)
Tạo một siêu liên kết
Thuộc tính: href - hypertext reference: chỉ định đường dẫn được tham chiếu
Đưa người dùng từ trang web này sang trang web khác.
Đưa đến 1 vị trí cụ thể trong chính trang web thông qua id
Thẻ form đóng vai trò quan trọng trong tương tác web hiện đại vì giúp nhận dữ liệu từ người dùng như đăng ký, đăng nhập, nhập thông tin người dùng, thêm, sửa thông tin dữ liệu, v.v.
Các thẻ chính
form
Định nghĩa 1 form
Thuộc tính action: Hành vi khi thẻ form được submit
Thuộc tính method: Phương thức truyền dữ liệu khi form được submit (thường là POST)
Subtopic 3
input
Nhận giá trị 1 dòng
Thẻ input có nhiều type quy định kiểu giá trị nhận vào như text, email, password, datetime, color, button, .v.v
textarea
Tạo một vùng nhập liệu
cols: quy định số ký tự trên 1 dòng
rows: quy định số dòng trong textarea
label
Tạo nhãn dán cho input
Thuộc tính for để focus vào input có id chỉ định
button
nút bấm
select-option
Lựa chọn chỉ 1 dạng thả xuống
radio
Lựa chọn chỉ 1
checkbox
Lựa chọn 1 hoặc nhiều
Lưu ý
Hầu hết các thẻ trong form đều là thẻ inline
Trong một số trường hợp xử lý dữ liệu không phức tạp hoặc ngữ nghĩa không quan trọng, có thể không cần sử dụng thẻ form
Nhóm thẻ media
img
Dùng để hiển thị ảnh
Đây là self-closing tag: Không có nội dung
Nội dung hiển thị là do tài nguyên tải được từ thuộc tính src
Thuộc tính
src
chỉ định tài nguyên tải được và đặt tài nguyên này vào khung mà thẻ img đã chiếm chỗ từ trước
width
độ rộng của image
height
chiều cao của image
alt (alternative)
Văn bản thay thế khi ảnh bị lỗi
Hộ trợ công cụ tìm kiếm hiểu được ý nghĩa của ảnh
title
Thẻ ảnh cùng thường có title để khi hover lên ảnh, người dùng biết được tên và nội dung ảnh
Các định dạng ảnh
Ảnh bitmap
Là một thuật ngữ chỉ nhóm các định dạng ảnh sử dụng dạng cấu trúc nhiều điểm ảnh sắp xếp liên tiếp để tạo thành ảnh hoàn chỉnh
Có thể tải từng phần của ảnh
JPG/JPEG
Joint Photographic Experts Group
Là 1 trong số định dạng ảnh bitmap
Thông dụng và chiếm đa số
Không hỗ trợ nền trong suốt
Bị vỡ ảnh khi phóng to
PNG
Portable Network Graphics
Hỗ trợ nền trong suốt
Thường sẽ chiếm dung lượng cao hơn JPG nếu cùng kích thước và màu sắc
SVG
Scalable Vector Graphics: định dạng vector đồ hoạ
Dung lượng cực nhỏ
Dễ dàng chỉnh sửa bởi CSS
Phóng to không lo vỡ
Hỗ trợ ảnh trong suốt
Không thể tải từng phần của ảnh mà phải đợi tải xong hoàn toàn
Dung lượng nhanh chóng tăng cao khi màu sắc và đồ hoạ phức tạp
Dùng với các thiết kế đơn giản như icon, logo, thiết kế hình học, biển báo...
GIF
Graphic Interchange Format
Hỗ trợ ảnh động
Màu sắc bị hạn chế
Ảnh động sẽ không chuyển động hoặc chuyển động giật cục khi chưa tải xong
Nguồn ảnh GIF: https://giphy.com
Webp
Do google tạo ra để tối ưu dung lượng của những ảnh PNG, JPEG
Hỗ trợ ảnh trong suốt
Hỗ trợ ảnh động
Tối ưu ảnh
Không sử dụng ảnh to cho chi tiết nhỏ làm giảm hiệu suất.
Không sử dụng ảnh nhỏ cho chi tiết lớn gây vỡ ảnh
Sử dụng công cụ nén ảnh để giảm dung lượng ảnh: https://tinypng.com
Không nên dùng ảnh ngoài trang, khi ảnh bị xoá hoặc thay đổi đường dẫn, ảnh sẽ bị lỗi.
Thẻ img với loading="lazy"
Ảnh sẽ được tải khi người dùng gần cuộn xuống đến phần ảnh
Chỉ những ảnh trong viewport mới được tải ngay lập tức
Không nên sử dụng loading="lazy" cho những ảnh quan trọng
video và audio
Định nghĩa 1 video hoặc audio
Thuộc tính
source
Quy định nguồn lấy tài nguyên
width
Chiều rộng media
height
Chiều cao media
controls
Cho phép người dùng điều khiển media
title
Tiêu đề media
Thẻ source
Khi sử dụng nhiều nguồn tài nguyên khác nhau, định nghĩa từng nguồn tài nguyên bằng thẻ source (viết trong thẻ media chính)
figure
Thẻ figure xuất hiện từ phiên bản HTML 5 dùng để bổ sung ngữ nghĩa cho ảnh và các media khác
figure thường được sử dụng chung img và figcaption để chú thích cho ảnh
Quy ước đặt tên
Những lỗi phổ biến
Tên có dấu cách
Tên Tiếng Việt hoặc tiếng địa phương
Tên có ký tự đặc biệt:!,/,|, {, }, @, #...
Tên không mô tả được nội dung, không rõ nghĩa
Tên không theo quy ước đặt tên
Những quy ước đặt tên phổ biến
camelCase
Đặt tên hàm, tên biến
PascalCase
Đặt tên class, hàm khởi tạo, component trong lập trình, .v.v
kebab-case
Đặt tên class css, attribute trong html, css
snake_case
Đa số tên file, thư mục, class, id trong quá trình làm việc với HTML, CSS sẽ sử dụng kebab-case
Thẻ đủ và thẻ tự đóng
Thẻ đủ
Là thẻ bao gồm một cặp thẻ mở và đóng
Nội dung nằm ở giữa thẻ mở và thẻ đóng
Thẻ tự đóng
Thẻ không cần thẻ đóng hoặc được coi là tự đóng
Thẻ không có nội dung hoặc nội dung được tải từ tài nguyên ngoài thẻ
Thẻ inline và thẻ block
Thẻ inline
Coi mỗi phần tử như 1 ký tự trên dòng
Chỉ chiếm chỗ đúng phần nội dung hiển thị
Có thể có 1 khoảng trắng nếu html viết 2 thẻ inline xuống dòng hoặc không viết liền sát nhau trên cùng dòng
Thẻ block
Mỗi thẻ block chiếm toàn bộ chiều rộng của thẻ cha
Những hạn chế của thẻ inline
Không thể thiết lập trực tiếp padding-top, padding-bottom, margin-top, margin-bottom, width, height, min-width, min-height cho thẻ inline (trừ một số thẻ như img, video, audio, ifame, v.v.)
Display: inline-block
Khi vẫn muốn sử dụng các thẻ trên cùng một dòng nhưng khắc phục các hạn chế của thẻ inline
Lưu ý
Không dùng thẻ inline bọc thẻ block
HTML Semantics
HTML Semantics là những thẻ HTML có ngữ nghĩa cụ thể, dùng cho văn cảnh cụ thể, bổ sung nghĩa cho nội dung của phần tử
Hỗ trợ công cụ tìm kiếm phân tích đúng nội dung của website
Trong HTML có những thẻ không có ngữ nghĩa như thẻ div, span dùng để bao bọc nội dung chứ không mang ý nghĩa đặc biệt gọi là HTML non-semantics
Tính hợp lệ của một tài liệu HTML
Một tài liệu HTML được coi là hợp lệ khi tuân thủ những quy đinh do tổ chức W3C (World Wide Web Consortium) đặt ra cho tài liệu
Ưu điểm của một HTML hợp lệ
Tính nhất quán
Hiển thị tốt
Hỗ trợ SEO
Dễ bảo trì
Tương thích với các công cụ tích hợp
Kiểm tra tính hợp lệ tại: https://validator.w3.org/
Các loại đường dẫn
Đường dẫn tuyệt đối
Là đường dẫn hoàn chỉnh bắt đầu từ thư mục gốc của hệ thống tập tin hoặc tên miền website trên không gian mạng.
Không phụ thuộc vào vị trí sử dụng của file
Đường dẫn thiết bị window
C:\Users\Username\Documents\File.txt
Đường dẫn thiết bị macOS
/home/hoangnm/Documents/File.txt
Đường dẫn trên internet
https://fullstack.edu.vn/
Đường dẫn tương đối
Là đường dẫn chỉ đến tập tin, thư mục khác dựa trên vị trí tập tin, thư mục hiện tại mà không quan tâm đến thư mục gốc trong hệ thống tập tin
Phụ thuộc vào vị trí sử dụng đường dẫn
Trên thiết bị
Pictures\Image.png
../imgs/img1.png
Trên internet
//imgs/img1.png
Đường dẫn bắt đầu bằng `/`, `./`, `../`, `//`
/
Trong các hệ điều hành Unix, MacOS... thì đây được đại diện là thư mục gốc
Đây được coi là đường dẫn tuyệt đối, tuy nhiên trong tài liệu HTML mà sử dụng đương dẫn "/" thì tài nguyên sẽ được tìm bắt đầu từ thư mục gốc (root) mà website được khởi chạy.
./
Trỏ đến file và thư mục cùng cấp vị trí sử dụng
Đây được coi là đường dẫn tương đối
../
Đi ra ngoài 1 thuộc cấp folder so với vị trí sử dụng
Đây cũng được coi là đường dẫn tương đối
//
Đây là đường dẫn tương đối được sử dụng trong không gian mạng
Khi một tài nguyên bắt đầu bằng // - nó sẽ được tự thêm phương thức trùng với phương thức http hoặc https của trình duyệt