Series 2 — Frontend Fundamentals

 

HTML → Sematic HTML → Forms & Validation → CSS

 Flexbox & Grid → Responsive Web Design → Bootstrap

 

Bài 1 – HTML Fundamentals – HTML là gì và hoạt động như thế nào?

 

Series 1 đã giúp chúng ta hiểu cách Internet, DNS, HTTP/HTTPS và Browser phối hợp để một Website xuất hiện trên màn hình. Sang Series 2, chúng ta bắt đầu tìm hiểu nền tảng trực tiếp để xây dựng giao diện Website: HTML và CSS.

Mục tiêu của Series 2 là giúp bạn hiểu cách xây dựng cấu trúc trang Web, viết HTML có ngữ nghĩa, tạo biểu mẫu và sử dụng CSS để kiểm soát giao diện trên nhiều kích thước màn hình.

HTML Fundamentals – HTML là gì và hoạt động như thế nào?

 

Khi truy cập một Website, chúng ta nhìn thấy tiêu đề, đoạn văn, hình ảnh, nút bấm, menu điều hướng và nhiều thành phần khác. Nhưng những thành phần đó được tạo ra như thế nào?

Trước khi học CSS để thiết kế giao diện hay JavaScript để xử lý tương tác, chúng ta cần hiểu nền tảng đầu tiên của Web: HTML.

1. HTML là gì?

HTML là viết tắt của HyperText Markup Language, hay ngôn ngữ đánh dấu siêu văn bản.

HTML được sử dụng để mô tả cấu trúc và ý nghĩa của nội dung trên một trang Web. Thông qua HTML, chúng ta có thể xác định đâu là tiêu đề, đoạn văn, hình ảnh, liên kết, danh sách hoặc biểu mẫu.

Ví dụ:

<h1>Welcome to my website</h1>
<p>This is my first website.</p>
<a href="https://example.com">Visit website</a>

Đoạn code trên mô tả ba thành phần:

  • h1: Tiêu đề chính.
  • p: Một đoạn văn.
  • a: Một liên kết đến Website khác.

Khi Browser đọc HTML, nó phân tích các thành phần này và xây dựng DOM để xử lý nội dung trang Web.

2. HTML, CSS và JavaScript khác nhau như thế nào?

Trong Frontend Development, HTML, CSS và JavaScript thường được sử dụng cùng nhau, nhưng mỗi công nghệ có một vai trò riêng.

Công nghệ Vai trò chính
HTML Xây dựng cấu trúc và mô tả nội dung
CSS Quy định cách trình bày và bố cục
JavaScript Xử lý logic và tương tác

Hãy tưởng tượng chúng ta xây dựng một nút bấm:

HTML – Tạo nút

<button>Click me</button>

CSS – Thay đổi giao diện

button {
    background-color: blue;
    color: white;
    padding: 12px 20px;
}

JavaScript – Xử lý hành động

document.querySelector("button").addEventListener("click", () => {
    alert("Button clicked!");
});

HTML tạo ra nút bấm, CSS làm nút có giao diện phù hợp, còn JavaScript xử lý hành động khi người dùng nhấn vào nút.

Đây là cách ba công nghệ phối hợp để tạo nên giao diện Web có thể tương tác.

3. HTML Tag, Element và Attribute

Để đọc và viết HTML tốt, trước tiên cần phân biệt ba khái niệm cơ bản: Tag, Element và Attribute.

3.1. Tag – Thẻ HTML

Tag là phần cú pháp được viết trong dấu ngoặc nhọn <>.

Ví dụ:

<p>

Đây là thẻ mở của phần tử đoạn văn.

Một số thẻ có thẻ mở và thẻ đóng:

<p>Hello World</p>

Trong đó:

  • <p> là thẻ mở.
  • </p> là thẻ đóng.
  • Hello World là nội dung.

Không phải tất cả các thẻ đều cần thẻ đóng theo cùng cách. Ví dụ, img và br là các phần tử HTML không có thẻ đóng.

3.2. Element – Phần tử HTML

Element là phần tử được tạo thành từ thẻ, nội dung và cấu trúc liên quan của nó.

Ví dụ:

<h1>Hello World</h1>

Toàn bộ cấu trúc trên là một phần tử HTML.

Trong thực tế, khi đọc tài liệu hoặc làm việc với DOM, bạn sẽ thường xuyên gặp thuật ngữ element.

3.3. Attribute – Thuộc tính

Attribute cung cấp thông tin bổ sung cho một phần tử HTML và thường được đặt trong thẻ mở.

Ví dụ:

<a href="https://example.com" target="_blank">
    Visit website
</a>

Trong ví dụ này:

  • href xác định địa chỉ liên kết.
  • target="_blank" yêu cầu mở liên kết trong ngữ cảnh duyệt mới, thường là tab mới.

Một ví dụ khác:

<img src="avatar.jpg" alt="User avatar">

Trong đó:

  • src chỉ đường dẫn đến hình ảnh.
  • alt cung cấp nội dung thay thế cho hình ảnh.

Cần lưu ý rằng alt không chỉ là phần mô tả hình ảnh khi ảnh không tải được. Nó còn hỗ trợ người sử dụng trình đọc màn hình tiếp cận nội dung hình ảnh.

4. Cấu trúc cơ bản của một tài liệu HTML

Một tài liệu HTML thường có cấu trúc như sau:

<!DOCTYPE html>
<html lang="vi">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Website</title>
</head>
<body>
    <h1>Xin chào!</h1>
    <p>Đây là Website đầu tiên của tôi.</p>
</body>
</html>

Hãy cùng tìm hiểu từng phần.

<!DOCTYPE html>

Khai báo tài liệu sử dụng chuẩn HTML hiện đại, giúp Browser xử lý trang theo chế độ tiêu chuẩn.

<html>

Là phần tử gốc của tài liệu HTML.

Thuộc tính lang="vi" cho biết ngôn ngữ chính của nội dung là tiếng Việt. Điều này có ích cho công cụ tìm kiếm và các công nghệ hỗ trợ.

<head>

Chứa các thông tin và tài nguyên phục vụ cho tài liệu, chẳng hạn như tiêu đề trang, metadata, CSS và một số script.

Nội dung trong head nhìn chung không được hiển thị như nội dung chính trong trang Web.

<meta charset="UTF-8">

Khai báo bảng mã ký tự để trình duyệt diễn giải văn bản đúng cách, bao gồm các ký tự tiếng Việt.

<meta name="viewport">

Giúp thiết lập cách trang Web hiển thị trên thiết bị có màn hình khác nhau, đặc biệt là điện thoại.

<title>

Xác định tiêu đề tài liệu, thường xuất hiện trên tab trình duyệt.

<body>

Chứa nội dung chính của trang Web, chẳng hạn như tiêu đề, đoạn văn, hình ảnh, liên kết và biểu mẫu.

5. Nesting – Lồng các phần tử HTML

HTML cho phép lồng một phần tử bên trong phần tử khác.

Ví dụ:

<div>
    <h1>My Blog</h1>
    <p>Welcome to my blog.</p>
</div>

Ở đây, h1 và p là các phần tử con của div.

Có thể hình dung cấu trúc như một cây:

div
├── h1
└── p

Tuy nhiên, không phải phần tử nào cũng có thể lồng tùy ý. HTML có những quy tắc về cấu trúc và ngữ nghĩa cần tuân thủ.

Ví dụ, không nên đặt một phần tử p bên trong một phần tử p khác.

<!-- Không nên viết -->
<p>
    Paragraph one
    <p>Paragraph two</p>
</p>

Thay vào đó, hãy tách thành hai đoạn văn độc lập:

<p>Paragraph one</p>
<p>Paragraph two</p>

Viết HTML đúng cấu trúc giúp Browser xử lý tài liệu dễ dự đoán hơn và giúp code dễ đọc, bảo trì hơn.

6. Một số nhóm thẻ HTML thường gặp

HTML có rất nhiều phần tử. Khi mới bắt đầu, bạn nên tập trung vào những nhóm được sử dụng thường xuyên nhất.

Nhóm Thẻ tiêu biểu Công dụng
Tiêu đề h1–h6 Phân cấp tiêu đề
Đoạn văn p Tổ chức văn bản
Liên kết a Điều hướng đến tài nguyên khác
Hình ảnh img Hiển thị hình ảnh
Danh sách ul, ol, li Trình bày danh sách
Chia nhóm div, span Nhóm nội dung khi cần
Biểu mẫu form, input, button Thu thập dữ liệu
Ngữ nghĩa header, nav, main, footer Mô tả vai trò các vùng nội dung

Không cần cố ghi nhớ tất cả các thẻ ngay từ đầu. Quan trọng hơn là hiểu công dụng và biết lựa chọn phần tử phù hợp với nội dung đang xây dựng.

7. HTML không phải ngôn ngữ lập trình

HTML thường được học cùng CSS và JavaScript, nhưng HTML không phải ngôn ngữ lập trình theo nghĩa thông thường.

HTML là ngôn ngữ đánh dấu, dùng để mô tả cấu trúc và ý nghĩa nội dung.

Bản thân HTML không cung cấp các cơ chế lập trình tổng quát như vòng lặp, điều kiện hay hàm theo cách JavaScript thực hiện.

Ví dụ:

<h1>Hello World</h1>

Đoạn code này mô tả một tiêu đề.

Trong khi đó:

if (isLoggedIn) {
    console.log("Welcome back!");
}

JavaScript có thể kiểm tra điều kiện và thực hiện logic tương ứng.

Phân biệt được vai trò của từng công nghệ sẽ giúp bạn hiểu rõ hơn kiến trúc của một ứng dụng Frontend.

8. Những lưu ý khi viết HTML

Khi xây dựng Website, hãy hình thành một số thói quen tốt ngay từ đầu:

  • Sử dụng thẻ phù hợp với ý nghĩa nội dung.
  • Viết cấu trúc lồng nhau đúng quy tắc.
  • Đặt giá trị alt phù hợp cho hình ảnh có ý nghĩa; dùng alt="" cho hình ảnh trang trí khi phù hợp.
  • Sử dụng label để liên kết nhãn với trường nhập liệu.
  • Không sử dụng div cho mọi thành phần nếu đã có thẻ HTML mang ngữ nghĩa phù hợp.
  • Giữ code được thụt lề rõ ràng để dễ đọc.
  • Kiểm tra giao diện trên Browser và sử dụng DevTools khi cần debug.

Những thói quen này giúp HTML dễ bảo trì hơn, đồng thời hỗ trợ khả năng truy cập và khả năng hiểu nội dung của các công cụ khác.

9. Kết luận

HTML là nền tảng cấu trúc của một trang Web. Trước khi làm giao diện bằng CSS hoặc xử lý tương tác bằng JavaScript, bạn cần hiểu cách HTML mô tả nội dung và cách Browser chuyển HTML thành DOM.

Trong bài này, chúng ta đã tìm hiểu:

  • HTML là gì và vai trò của HTML trong Frontend.
  • Sự khác nhau giữa HTML, CSS và JavaScript.
  • Tag, Element và Attribute.
  • Cấu trúc cơ bản của tài liệu HTML.
  • Cách lồng các phần tử.
  • Những nhóm thẻ HTML phổ biến.

Sau khi nắm vững các kiến thức này, bước tiếp theo không chỉ là học thêm nhiều thẻ HTML, mà còn phải biết chọn đúng thẻ cho đúng mục đích.

Đó chính là nội dung của bài tiếp theo: Semantic HTML – Viết HTML có ngữ nghĩa, dễ hiểu và dễ bảo trì.

 

 

Bài 2. Semantic HTML – Viết HTML có ngữ nghĩa

 

 

  • HTML Semantic là gì?
  • HTML có thẻ không mang ngữ nghĩa?
  • Sử dụng HTML đúng ngữ nghĩa có quan trọng?
  • Ưu tiên chọn Styles hay Semantics?
  • 1. Trong mẫu thiết kế có một thành phần không phải tiêu đề nhưng lại có cỡ chữ lớn và in đậm. Trường hợp này bạn có dùng thẻ h (h1 – h6) không?
  • 2. Trong thiết kế có một đoạn văn có cỡ chữ lớn sau thẻ h2, không phải là tiêu đề. Sử dụng thẻ h3 có phù hợp không? Nếu không thì dùng thẻ nào?
  • 3. Trong một tiêu đề h1 có 2 từ khóa được đánh giá là rất quan trọng. Bạn có sử dụng thêm thẻ nào để bao bọc nó không? Nếu có thì dùng thẻ nào?

HTML Semantic là gì?

HTML Semantic (ngữ nghĩa) là một khái niệm rất quan trọng trong HTML. Nắm được ngữ nghĩa giúp bạn sử dụng HTML đúng hơn về ý nghĩa, giúp bạn phân biệt được trường hợp nào dùng thẻ HTML nào.

HTML cung cấp các thẻ HTML có ngữ nghĩa để chúng ta sử dụng đúng mục đích, giúp nội dung trong HTML trở nên có ý nghĩa. Chỉ cần nhìn vào tên thẻ HTML có ngữ nghĩa là có thể cho chúng ta biết được loại nội dung mà nó thể hiện.

Ví dụ, một đoạn văn bản không ngữ nghĩa:

Nhãn không chỉ ngon mà có mang lại nhiều giá trị sức khỏe.

và cách làm nó trở nên có ngữ nghĩa trong HTML:

<p>Nhãn không chỉ ngon mà có mang lại nhiều giá trị sức khỏe.</p>

hoặc:

<h1>Nhãn không chỉ ngon mà có mang lại nhiều giá trị sức khỏe.</h1>

Một số ví dụ về ngữ nghĩa của HTML:

  • Các thẻ h (headings), có ngữ nghĩa thể hiện các tiêu đề
  • Thẻ p (paragraph), có ngữ nghĩa thể hiện đoạn văn bản
  • Thẻ img (image), có ngữ nghĩa thể hiện hình ảnh
  • Thẻ strong, có ngữ nghĩa thể hiện sự quan trọng
  • Thẻ em, có ngữ nghĩa thể hiện sự nhấn mạnh
  • …
  • Và nhiều thẻ có ngữ nghĩa khác mà chúng ta sẽ được tìm hiểu trong khóa học này

HTML có thẻ không mang ngữ nghĩa?

Có. Trong HTML có thẻ <div> và <span> không mang ngữ nghĩa. Nhìn vào 2 thẻ này chúng ta không biết nội dung bên trong cụ thể là loại nội dung nào.

Sử dụng HTML đúng ngữ nghĩa có quan trọng?

Có một vài lý do chính để chúng ta nên viết HTML đúng ngữ nghĩa như sau:

  • Giúp bạn và đồng nghiệp của bạn dễ dàng đọc hiểu code, dễ bảo trì và nâng cấp về sau.
  • Tối ưu hơn cho SEO, hỗ trợ các công cụ tìm hiểu dễ dàng hiểu được ý nghĩa nội dung trang web.
  • Tối ưu hơn cho khả năng truy cập (Web accessibility).

Ưu tiên chọn Styles hay Semantics?

Mình sẽ đưa ra một số câu hỏi cho các bạn nhé.

#1. Trong mẫu thiết kế có một thành phần không phải tiêu đề nhưng lại có cỡ chữ lớn và in đậm. Trường hợp này bạn có dùng thẻ h (h1 – h6) không?

Nếu bạn dùng thẻ h trong tình huống này là sai ngữ nghĩa. Vì thẻ h được thiết kế để sử dụng cho các đầu mục, tiêu đề, v.v.

#2. Trong thiết kế có một đoạn văn có cỡ chữ lớn sau thẻ h2, không phải là tiêu đề. Sử dụng thẻ h3 có phù hợp không? Nếu không thì dùng thẻ nào?

Vì không phải tiêu đề nên chúng không sử dụng bất cứ thẻ h nào cả. Trường hợp này phù hợp nhất là sử dụng thẻ <p>.

#3. Trong một tiêu đề h1 có 2 từ khóa được đánh giá là rất quan trọng. Bạn có sử dụng thêm thẻ nào để bao bọc nó không? Nếu có thì dùng thẻ nào?

Nếu có từ khóa được đánh giá là rất quan trọng nằm trong một tiêu đề. Bạn nên sử dụng thêm thẻ <strong> để tăng tầm quan trọng của từ khóa này.

Tóm tắt

  • Semantic (ngữ nghĩa) là một khái niệm rất quan trọng trong HTML. Nắm được ngữ nghĩa giúp bạn sử dụng HTML đúng hơn về ý nghĩa, giúp bạn phân biệt được trường hợp nào dùng thẻ HTML nào.
  • HTML cung cấp các thẻ HTML có ngữ nghĩa để chúng ta sử dụng đúng mục đích, giúp nội dung trong HTML trở nên có ý nghĩa.
  • Lý do chúng ta nên nắm chắc ngữ nghĩa trong HTML là: giúp các nhà phát triển dễ đọc hiểu code hơn, tối ưu cho SEO và khả năng truy cập.

 

Bài viết khác

Go Channels & Go Context

1. Go Channels & Go Context là gì? Trong Go, goroutine cho phép chương trình chạy nhiều công việc đồng thời. Tuy nhiên, khi có nhiều goroutine cùng hoạt động, chúng cần một cách để trao đổi kết quả, phối hợp thời điểm thực thi và dừng công việc khi không còn cần thiết.  Đây […]

Goroutine & Concurrency

1. Concurrency là gì? Concurrency là khả năng tổ chức nhiều công việc để chúng có thể tiến triển xen kẽ hoặc đồng thời trong cùng một khoảng thời gian. Thay vì phải thực hiện tất cả công việc theo một trình tự duy nhất, chương trình có thể chuyển đổi giữa nhiều công việc […]

Go Fundamentals

1. Go là gì? Go (Golang) là ngôn ngữ lập trình go thường được sử dụng trong backend, REST API, hệ thống mạng, công cụ dòng lệnh, cloud infrastructure và các dịch vụ chạy đồng thời. Go là ngôn ngữ biên dịch và có hệ thống kiểu dữ liệu tĩnh (statically typed). Điều này có […]

Laravel Routing & Controllers

1. Laravel Routing & Controllers là gì? Khi xây dựng backend bằng Laravel, client gửi HTTP request đến server để thực hiện một thao tác như lấy danh sách user, xem chi tiết sản phẩm hoặc tạo đơn hàng. Laravel cần xác định request đó sẽ được xử lý ở đâu và logic xử lý […]

Series 2 — Frontend Fundamentals: Responsive Web Design – Bootstrap

Series 2 — Frontend Fundamentals   HTML → Sematic HTML → Forms & Validation → CSS  Flexbox & Grid → Responsive Web Design → Bootstrap   Bài 6. Responsive Web Design – Giao diện đa thiết bị 1. Responsive Web Design là gì? Khi xây dựng một website, chúng ta không thể giả định rằng […]

HTTP & HTTPS

Giao thức HTTP và HTTPS là gì? 1. HTTP là gì? HTTP (Hypertext Transfer Protocol) là giao thức truyền tải siêu văn bản, được sử dụng để trao đổi dữ liệu giữa client (máy khách) và server (máy chủ). Ban đầu, HTTP được phát triển để trao đổi các tài liệu trên Web. Ngày nay, […]

Leave a Reply

Your email address will not be published. Required fields are marked *