Menu

Thẻ div trong HTML: div là gì, div class, bố cục và CSS

Thẻ <div> là một khối chứa chung, không mang ý nghĩa riêng. Tìm hiểu cách nhóm nội dung bằng div, định dạng div bằng class, dựng bố cục với div và flexbox, và khi nào nên dùng thẻ ngữ nghĩa hoặc nút bấm thay cho div.

Trang này có trình soạn thảo chạy trực tiếp. Sửa, chạy và xem đầu ra ngay lập tức.

Thẻ div dùng để làm gì

<div> (viết tắt của division) là một khối chứa chung. Div nhóm các phần tử lại để bạn định dạng, đặt vị trí hoặc điều khiển chúng bằng script như một khối duy nhất. Tự bản thân div trông như không có gì: không margin, không viền, không font đặc biệt. Div là phần tử khối (block), nên nó bắt đầu ở dòng mới và trải hết chiều rộng còn trống.

Xóa dòng border trong phần style là các div biến mất: đó là giao diện mặc định của div. Mọi thứ div thể hiện ra mắt người xem đều đến từ CSS.

div class và id

Div thường được gắn một class, là cái tên mà CSS nhắm tới. Các div dùng chung class thì dùng chung kiểu định dạng:

.card định dạng cả hai khối, còn .card.highlight thêm viền xanh cho div có cả hai class. Dùng id khi bạn cần trỏ tới đúng một div cụ thể, ví dụ làm đích của liên kết (href="#pro"). Trang thuộc tính so sánh class và id chi tiết hơn.

Xếp các div cạnh nhau

Vì div là phần tử khối nên chúng xếp chồng theo chiều dọc. Để đặt chúng thành một hàng, hãy biến phần tử cha thành flex container:

display: flex trên .row xếp các phần tử con thành hàng, gap tạo khoảng cách giữa chúng, còn các giá trị flex chia chiều rộng (ở đây là 1 : 2 : 1). Mẫu cha và con này là cách dùng div phổ biến nhất trên các trang web thực tế. Để căn giữa một div, xem cách căn giữa div.

Div lồng nhau

Div có thể chứa div khác ở bất kỳ độ sâu nào. Mỗi cấp là một khối nằm trong một khối, và bạn sẽ thấy rõ điều đó khi cho mỗi div một đường viền và chút padding:

Hãy giữ số tầng lồng nhau ít nhất mà bố cục cho phép. Mỗi lớp bọc thêm là thêm một khối phải tính đến khi margin hay chiều rộng không chạy như bạn mong đợi.

Dùng div hay thẻ ngữ nghĩa?

Div không nói gì về nội dung bên trong. HTML có những thẻ làm cùng việc nhóm nội dung nhưng còn cho biết nhóm đó là gì:

Thay vìDùngCho
<div class="header"><header>Phần mở đầu hoặc thanh trên cùng của trang hay một phần
<div class="nav"><nav>Một nhóm liên kết điều hướng
<div class="main"><main>Nội dung chính, một lần mỗi trang
<div class="post"><article>Một mục độc lập: bài viết, bình luận, thẻ sản phẩm
<div class="footer"><footer>Chân trang của trang hoặc của một phần

Các thẻ này trông y hệt div cho đến khi bạn định dạng chúng, nhưng trình đọc màn hình sẽ đọc tên chúng và cho người dùng nhảy qua lại giữa chúng, còn công cụ tìm kiếm thì đọc được cấu trúc trang. Dùng div cho những khối chỉ có mục đích dàn bố cục hoặc định dạng, như lớp bọc .row ở trên. Trang HTML ngữ nghĩa giới thiệu đầy đủ các thẻ này.

Div không phải là nút bấm

Một div có trình xử lý sự kiện click trông như bấm được với người dùng chuột, nhưng người dùng bàn phím không thể tới được nó bằng Tab hay bấm nó bằng Enter, và trình đọc màn hình cũng không đọc nó là một nút:

Dùng <button> cho hành động và <a href> cho điều hướng. Cả hai đều nhận focus và dùng được với bàn phím mà bạn không phải làm thêm gì.

Lỗi thường gặp

  • Đặt div bên trong <p>. Đoạn văn bị đóng trước div. Hãy để div làm phần tử bên ngoài, hoặc dùng <span> bên trong đoạn văn.
  • Trang toàn div. Một trang chỉ gồm div thì không có cấu trúc nào cho trình đọc màn hình. Thay div bằng <header>, <nav>, <main> và <footer> ở những chỗ phù hợp.
  • Div bấm được. Hãy dùng <button> hoặc liên kết thay thế.
  • Nghĩ rằng div chỉ rộng bằng chữ bên trong. Div chiếm toàn bộ chiều rộng. Dùng display: inline-block, width: fit-content hoặc <span> nếu bạn muốn nó co lại.
  • Dùng lại một id cho nhiều div. Dùng class cho những gì lặp lại.

Câu hỏi thường gặp

Thẻ div trong HTML là gì?

<div> là một khối chứa chung. Div nhóm các phần tử khác lại để bạn định dạng hoặc đặt vị trí cho chúng cùng lúc, và bản thân div không mang ý nghĩa gì: trình duyệt hiển thị div như một khối bắt đầu ở dòng mới và chiếm toàn bộ chiều rộng còn trống.

div class nghĩa là gì?

<div class="card"> là một div có thuộc tính class. Class là cái tên mà CSS dùng để định dạng div (.card { ... }) và JavaScript dùng để tìm ra nó. Nhiều div có thể dùng chung một class, và một div có thể có nhiều class: class="card featured".

Làm sao để đặt hai div nằm cạnh nhau?

Bọc chúng trong một div cha và cho div cha display: flex. Khi đó các div con xếp thành một hàng. Thêm gap để tạo khoảng cách giữa chúng và flex: 1 cho các div con để chia đều chiều rộng.

Nên dùng div hay section?

Dùng <section>, <header>, <nav>, <main>, <article> hoặc <footer> khi nội dung có đúng vai trò đó, vì trình đọc màn hình và công cụ tìm kiếm hiểu được các thẻ này. Dùng <div> khi bạn chỉ cần một khối để định dạng hoặc dàn bố cục.

Có thể đặt div bên trong thẻ p không?

Không. Đoạn văn chỉ được chứa nội dung inline. Trình duyệt đóng thẻ <p> ngay khi gặp <div>, làm hỏng phần định dạng. Hãy dùng div làm phần tử bên ngoài, hoặc dùng <span> bên trong đoạn văn.

Hình minh họa các ngôn ngữ lập trình của Coddy

Học lập trình cùng Coddy

Bắt đầu