hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
      • NodeJS
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
      • Spring Boot
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Lập trình Python
    • Git và Github
    • Machine Learning
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
    • Mạng và truyền thông
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • HTML cơ bản – Lộ trình 16 bài
HTML cơ bản – Bài 14: Thành phần sẵn có: details, summary và dialog

HTML cơ bản – Bài 14: Thành phần sẵn có: details, summary và dialog

  • 19-10-2026
  • Toanngo92
  • 0 Comments

Bạn sẽ tạo mục hỏi đáp đóng/mở bằng HTML và nhận biết khi nào một hộp thoại cần thêm hành vi JavaScript. Mục tiêu là tận dụng hành vi trình duyệt đã cung cấp, không tự dựng lại mọi tương tác bằng div.

Lộ trình này học qua website “Góc học web”: trang chủ, trang bài viết và trang liên hệ. Mỗi bài giải quyết một việc cụ thể. Các bài về từng thẻ là tài liệu tra cứu, không phải danh sách bắt buộc học thuộc.

Trong bài này

  1. Câu hỏi thường gặp là tình huống thật
  2. Hành vi sẵn có không cần một thư viện
  3. Dialog giải quyết một loại tương tác khác
  4. Tên, cách đóng và focus
  5. Chọn đúng thành phần cho đúng mục đích

Mục lục

  • Câu hỏi thường gặp là tình huống thật
  • Hành vi sẵn có không cần một thư viện
  • Dialog giải quyết một loại tương tác khác
  • Tên, cách đóng và focus
  • Chọn đúng thành phần cho đúng mục đích
  • Ví dụ để tự chạy
  • Kết quả hiển thị
  • Lỗi thường gặp và cách sửa
  • Tự kiểm tra
  • Tra cứu khi cần

Câu hỏi thường gặp là tình huống thật

Trang Góc học web có câu hỏi “Có cần học CSS trước HTML không?”. Người đọc có thể mở câu trả lời khi quan tâm. details nhóm nội dung có thể mở rộng và summary đặt nhãn nhìn thấy được để thao tác.

summary nên có tên cụ thể, không chỉ là “Xem thêm” lặp đi lặp lại. Bên trong details có thể chứa nhiều đoạn và danh sách. Thuộc tính open làm nó mở sẵn; khi không có open, trạng thái ban đầu thường là đóng.

Hành vi sẵn có không cần một thư viện

Bạn có thể dùng chuột hoặc bàn phím để mở và đóng details. Không cần gắn sự kiện click lên một div rồi tự nhớ cập nhật trạng thái mở. Tuy vậy bạn vẫn phải viết nội dung rõ, giữ dấu focus và kiểm tra trong trình duyệt người học sử dụng.

Không nên đặt thông tin thiết yếu mà người dùng bắt buộc thấy vào một vị trí khó phát hiện. Nếu có nhiều câu hỏi, tổ chức nhãn và thứ tự hợp lý trước khi tạo hiệu ứng. Những cơ chế nâng cao để quản lý nhóm mở/đóng nên học khi có nhu cầu tương thích cụ thể.

Dialog giải quyết một loại tương tác khác

dialog là phần tử cho hộp thoại. Thêm open có thể hiển thị nó theo cách không modal; để mở modal với các hành vi nền tảng liên quan, ví dụ dùng showModal(). Hai cách này không hoàn toàn tương đương.

Mẫu trong bài dùng một ít JavaScript chỉ để gọi showModal khi bấm nút. Đoạn này được chú thích để bạn hiểu ranh giới giữa cấu trúc HTML và hành vi. Bạn không cần học thuộc cú pháp JavaScript ở môn HTML; đó sẽ là phần học tiếp.

Tên, cách đóng và focus

Dialog có heading được nối bằng aria-labelledby để người dùng hiểu mục đích. Form method=”dialog” với nút đóng giúp kết thúc hộp thoại trong ví dụ mà không gửi dữ liệu lên máy chủ. Cần có cách đóng rõ ràng; đừng làm một lớp phủ không thể thoát bằng bàn phím.

Khi thử modal, quan sát focus và phím Escape trên trình duyệt hỗ trợ. Một ứng dụng thật cần kiểm tra điều khiển nhận focus ban đầu, nội dung dài và khả năng quay lại nơi gọi hộp thoại. Native HTML giúp nhiều việc, nhưng không thay thế kiểm tra trải nghiệm.

Chọn đúng thành phần cho đúng mục đích

Câu hỏi bổ sung phù hợp với details; một bước xác nhận cần người dùng chú ý có thể phù hợp với dialog; liên kết tới bài khác vẫn là a. Không cần dùng dialog cho mọi thông tin nhỏ, càng không nên chuyển thông tin vốn có thể nằm ngay trong trang thành chuỗi popup.

Nếu ví dụ dialog không mở trong khung nhúng do giới hạn của môi trường, mở tab riêng rồi thử. Kiểm tra khả năng hỗ trợ trình duyệt trước khi dùng một tính năng mới trong sản phẩm thật; không giả định mọi thiết bị có cùng phiên bản.

Ví dụ để tự chạy

Tạo một tệp HTML để thử đoạn mã sau. Nếu đây là đoạn trích trong body, hãy đặt nó vào bộ khung tài liệu đã học ở bài 3. Bộ mã tải về có sẵn ví dụ đầy đủ của bài này.

<details>
  <summary>Tôi có cần học CSS trước HTML không?</summary>
  <p>Bạn có thể học cấu trúc HTML trước, rồi thêm CSS để trình bày.</p>
</details>
<button type="button" id="mo">Xem lưu ý về ví dụ</button>
<dialog id="luu-y" aria-labelledby="tieu-de-hop">
  <h2 id="tieu-de-hop">Lưu ý</h2>
  <p>Dialog trong ví dụ cần một chút JavaScript để mở dạng modal.</p>
  <form method="dialog"><button>Đóng</button></form>
</dialog><script>
const nutMo = document.querySelector("#mo");
const hop = document.querySelector("#luu-y");
nutMo.addEventListener("click", () => hop.showModal());
</script>

Kết quả hiển thị

Details mở được mà không cần JavaScript. Nút mở dialog dùng phần script nhỏ trong ví dụ, còn nút Đóng dùng form method=”dialog”; đây là hai cơ chế khác nhau.

Mở ví dụ bài 14 trong tab riêng · Tải bộ ví dụ 16 bài và website hoàn chỉnh

Lỗi thường gặp và cách sửa

  • Cho rằng dialog open giống showModal: phân biệt không modal và modal.
  • Tạo nút mở bằng a href=”#”: dùng button type=”button” cho hành động.
  • Xóa focus hoặc không có nút đóng: giữ điều hướng và cách thoát rõ ràng.

Tự kiểm tra

  • Mở details chỉ bằng bàn phím.
  • Giải thích phần nào của ví dụ dùng HTML sẵn có và phần nào cần JavaScript.

Tra cứu khi cần

  • Thẻ details trong HTML
  • Thẻ summary trong HTML
  • Thẻ dialog trong HTML

Tài liệu gốc về chủ đề này trên MDN / HTML Standard

Mục lục lộ trình HTML 16 bài · Thư viện bài HTML tra cứu

← Bài trước Bài tiếp theo →

Bài viết liên quan:

HTML cơ bản – Bài 01: HTML là gì? Tạo trang web đầu tiên
HTML cơ bản – Bài 02: Phần tử, thuộc tính và cách lồng HTML
HTML cơ bản – Bài 03: Bộ khung HTML: head, body, UTF-8 và viewport
HTML cơ bản – Bài 04: Tổ chức văn bản: heading, đoạn văn và danh sách
HTML cơ bản – Bài 05: Liên kết và đường dẫn giữa các trang
HTML cơ bản – Bài 06: Hình ảnh, văn bản thay thế và chú thích
HTML cơ bản – Bài 07: Tổ chức trang bằng HTML có ngữ nghĩa
HTML cơ bản – Bài 08: Ghép trang chủ và trang bài viết hoàn chỉnh
HTML cơ bản – Bài 09: Trình bày bảng dữ liệu đúng mục đích
HTML cơ bản – Bài 10: Tạo biểu mẫu liên hệ đầu tiên
HTML cơ bản – Bài 11: Chọn đúng input, checkbox, radio và select
HTML cơ bản – Bài 12: Kiểm tra form, name/value và GET/POST

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

CSS cơ bản – 20 bài từ HTML đến website responsive với Flexbox, Grid và mobile-first

CSS cơ bản – Bài 05: Đơn vị và kích thước: px, rem, %, min và max

CSS cơ bản – 20 bài từ HTML đến website responsive với Flexbox, Grid và mobile-first

CSS cơ bản – Bài 02: Selector và class: chọn đúng phần tử cần sửa

CSS cơ bản – 20 bài từ HTML đến website responsive với Flexbox, Grid và mobile-first

CSS cơ bản – Bài 01: Kết nối CSS với HTML và sửa quy tắc đầu tiên

CSS cơ bản – 20 bài từ HTML đến website responsive với Flexbox, Grid và mobile-first

CSS cơ bản – Bài 20: Hoàn thiện website và sửa lỗi bằng DevTools

CSS cơ bản – 20 bài từ HTML đến website responsive với Flexbox, Grid và mobile-first

CSS cơ bản – Bài 03: Vì sao CSS không có tác dụng? Cascade và specificity

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×