Thuộc tính inert

Thuộc tính inert là một thuộc tính HTML chung giúp đơn giản hoá cách xoá và khôi phục các sự kiện nhập của người dùng cho một phần tử, bao gồm cả sự kiện lấy tiêu điểm và sự kiện từ các công nghệ hỗ trợ.

Hỗ trợ trình duyệt

  • Chrome: 102.
  • Edge: 102.
  • Firefox: 112.
  • Safari: 15.5.

Nguồn

Trạng thái không hoạt động là hành vi mặc định trong các phần tử hộp thoại, chẳng hạn như khi bạn sử dụng showModal để mở một hộp thoại cho phép người dùng chọn rồi đóng hộp thoại đó khỏi màn hình. Sau khi mở <dialog>, phần còn lại của trang sẽ trở nên không hoạt động, ví dụ: bạn không thể nhấp hoặc nhấn phím tab vào các đường liên kết nữa.

Bạn có thể sử dụng thuộc tính inert để đạt được hành vi tương tự trên các phần tử khác.

Trơ nghĩa là thiếu khả năng di chuyển, vì vậy, khi đánh dấu thứ gì đó là trơ, bạn sẽ loại bỏ chuyển động hoặc tương tác khỏi các phần tử DOM đó.

<div>
  <label for="button1">Button 1</label>
  <button id="button1">I am not inert</button>
</div>
<div inert>
  <label for="button2">Button 2</label>
  <button id="button2">I am inert</button>
</div>

Tại đây, inert đã được khai báo trên phần tử <div> thứ hai chứa button2, vì vậy, tất cả nội dung có trong <div> này, bao gồm cả nút và nhãn, đều không thể nhận tiêu điểm hoặc được nhấp vào.

Thuộc tính inert đặc biệt hữu ích cho khả năng hỗ trợ tiếp cận, đặc biệt là để ngăn chặn việc giữ tiêu điểm.

Hỗ trợ tiếp cận tốt hơn

Nguyên tắc về khả năng tiếp cận đối với nội dung web yêu cầu việc quản lý tiêu điểm và thứ tự tiêu điểm hợp lý, hữu dụng. Chỉ số này bao gồm cả khả năng được phát hiện và khả năng tương tác. Trước đây, bạn có thể ngăn khả năng khám phá bằng aria-hidden="true", nhưng tương tác thì khó hơn.

inert cho phép nhà phát triển xoá một phần tử khỏi thứ tự thẻ và khỏi cây hỗ trợ tiếp cận. Điều này cho phép bạn kiểm soát cả khả năng phát hiện lẫn khả năng tương tác, đồng thời giúp xây dựng các mẫu dễ sử dụng và dễ tiếp cận hơn.

Có hai trường hợp sử dụng chính để áp dụng inert cho một phần tử nhằm hỗ trợ tiếp cận tốt hơn:

  • Khi một phần tử là một phần của cây DOM, nhưng nằm ngoài màn hình hoặc bị ẩn.
  • Khi một phần tử là một phần của cây DOM, nhưng không được tương tác.

Các phần tử DOM ẩn hoặc ngoài màn hình

Một vấn đề thường gặp về hỗ trợ tiếp cận là với các phần tử như ngăn, thêm các phần tử vào DOM mà người dùng không phải lúc nào cũng nhìn thấy. Với inert, bạn có thể đảm bảo rằng khi các phần tử phụ của ngăn nằm ngoài màn hình, người dùng bàn phím không thể vô tình tương tác với phần tử đó.

Phần tử DOM không tương tác

Một vấn đề phổ biến khác về khả năng hỗ trợ tiếp cận là khi thiết kế giao diện người dùng hiển thị hoặc hiển thị một phần nhưng rõ ràng là không tương tác. Ví dụ: trong quá trình tải trang, trong khi gửi biểu mẫu hoặc nếu một lớp phủ hộp thoại đang mở.

Để mang lại trải nghiệm tốt nhất cho người dùng, hãy cho biết trạng thái của giao diện người dùng và "bẫy" tiêu điểm vào phần tương tác của trang.

Lấy nét

Lỗi giữ tiêu điểm là một khái niệm trung tâm của khả năng hỗ trợ tiếp cận tốt trên giao diện người dùng. Bạn nên đảm bảo tiêu điểm của trình đọc màn hình nằm trên các thành phần giao diện người dùng có thể tương tác và nhận biết được khi một thành phần đang chặn khả năng tương tác. Điều này cũng giúp hạn chế trình đọc màn hình độc hại truy cập vào lớp phủ trang hoặc vô tình gửi biểu mẫu trong khi lần gửi đầu tiên vẫn đang xử lý.

Khi sử dụng inert, bạn có thể đảm bảo rằng chỉ có thể truy cập vào nội dung có thể được tìm thấy. Thông tin này hữu ích cho:

  • Các phần tử chặn như hộp thoại phương thức, trình đơn thu hút tiêu điểm hoặc điều hướng bên.
  • Băng chuyền có các mục không hoạt động.
  • Nội dung biểu mẫu không áp dụng (ví dụ: làm mờ và vô hiệu hoá các trường "Địa chỉ giao hàng" khi hộp đánh dấu "Giống với địa chỉ thanh toán" được đánh dấu).
  • Tắt toàn bộ giao diện người dùng khi ở trạng thái không nhất quán.

Chỉ báo trực quan các phần tử inert

Theo mặc định, không có chỉ báo trực quan nào cho biết một cây con đang ở trạng thái rảnh. Bạn nên đánh dấu rõ ràng những phần của DOM đang hoạt động và những phần không hoạt động.

[inert], [inert] * {
  opacity: 0.5;
  pointer-events: none;
  cursor: default;
  user-select: none;
}

Không phải người dùng nào cũng có thể xem tất cả các phần của một trang cùng một lúc. Ví dụ: người dùng trình đọc màn hình, thiết bị nhỏ hoặc có kính lúp, và thậm chí cả người dùng chỉ sử dụng cửa sổ đặc biệt nhỏ có thể không nhìn thấy phần đang hoạt động của trang và có thể cảm thấy khó chịu nếu các phần không hoạt động không rõ ràng là không hoạt động. Đối với các chế độ điều khiển riêng lẻ, thuộc tính disabled (tắt) có thể phù hợp hơn.

Những hoạt động tương tác và chuyển động nào bị chặn?

Theo mặc định, inert chặn sự kiện nhấp và sự kiện lấy tiêu điểm. Đối với các công nghệ hỗ trợ, việc này cũng chặn tính năng nhấn phím và khả năng phát hiện. Trình duyệt cũng có thể bỏ qua tính năng tìm kiếm trang và lựa chọn văn bản trong phần tử.

Giá trị mặc định của inertfalse.