- Thuộc tính autofocus cho phép tự động tập trung vào một phần tử cụ thể trong biểu mẫu khi trang được tải hoặc khi hộp thoại được mở.
- Nó tương thích với nhiều phần tử khác nhau bao gồm các thẻ input, textarea, select và button.
- Chỉ một phần tử duy nhất trong mỗi tài liệu hoặc vùng chứa mới nên mang thuộc tính này để đảm bảo hành vi trình duyệt ổn định.
- Mặc dù hữu ích cho việc tăng tốc độ, việc sử dụng nó cần được cân bằng với các yếu tố về khả năng truy cập và trải nghiệm người dùng trên thiết bị di động.

Bạn đã bao giờ truy cập vào trang kết quả tìm kiếm và nhận thấy mình có thể bắt đầu gõ truy vấn ngay lập tức mà không cần nhấp vào ô tìm kiếm chưa? Đó chính là điều kỳ diệu của thuộc tính autofocus. Đây là một công cụ nhỏ tiện dụng giúp trình duyệt nhận biết: “Này, hãy đặt con trỏ vào đúng vị trí này ngay khi trang sẵn sàng”, giúp toàn bộ quá trình tương tác trở nên mượt mà hơn đối với người dùng.
Tuy có vẻ đơn giản, nhưng thực tế không chỉ là thêm một từ vào mã của bạn. Từ việc xử lý nhiều phần tử đến việc hiểu cách các trình duyệt khác nhau phản ứng, việc nắm vững thuộc tính Boolean này đảm bảo bạn không vô tình gây khó chịu cho người dùng hoặc vi phạm các tiêu chuẩn về khả năng truy cập.
Thuộc tính lấy nét tự động chính xác là gì?

Về bản chất, thuộc tính autofocus là một thuộc tính Boolean toàn cục. Điều này có nghĩa là nó không cần giá trị; chỉ cần thêm nó vào một phần tử là sẽ kích hoạt nó. Nhiệm vụ chính của nó là thiết lập tiêu điểm ban đầu vào một phần tử cụ thể khi trang tải xong. Nếu bạn đang làm việc với các thành phần giao diện người dùng phức tạp hơn, chẳng hạn như cửa sổ bật lên (popover) hoặc phần tử <dialog> , tiêu điểm sẽ chuyển sang phần tử autofocus ngay khi cửa sổ hoặc lớp phủ cụ thể đó được hiển thị cho người dùng.
Bạn có thể sử dụng nó với những nguyên tố nào?

Bạn không chỉ giới hạn ở các hộp văn bản. Thuộc tính này khá linh hoạt và hoạt động trên nhiều thẻ tương tác khác nhau:
- : Rất phù hợp cho thanh tìm kiếm hoặc trường đăng nhập, nơi mục tiêu chính của người dùng là nhập văn bản.
- : Rất phù hợp cho các trang "Liên hệ" nơi nội dung tin nhắn được ưu tiên.
- : Cho phép người dùng trực tiếp chọn một tùy chọn từ menu thả xuống.
- : Hữu ích trong các cửa sổ modal cụ thể, nơi nút hành động chính cần sẵn sàng để nhấn phím "Enter" trên bàn phím.
Các quy tắc quan trọng và hành vi của trình duyệt

Một điều bạn cần ghi nhớ là chỉ một phần tử duy nhất trong mỗi tài liệu (hoặc mỗi hộp thoại/cửa sổ bật lên) nên có thuộc tính autofocus. Nếu bạn thêm thuộc tính này vào năm trường khác nhau, trình duyệt sẽ không báo lỗi, nhưng nó sẽ chỉ tập trung vào phần tử có thể lấy tiêu điểm đầu tiên mà nó gặp theo thứ tự nguồn. Tuy nhiên, cần lưu ý rằng một số phiên bản Safari cũ hơn lại làm ngược lại, tập trung vào lần xuất hiện cuối cùng, mặc dù các trình duyệt hiện đại như Chrome, Firefox và Opera đã chuẩn hóa việc tập trung vào lần xuất hiện đầu tiên.
Ngoài ra còn có một tác dụng phụ về mặt vật lý: trình duyệt sẽ tự động cuộn trang để đưa phần tử lấy nét tự động vào tầm nhìn. Nếu ô nhập liệu của bạn nằm ở cuối một trang dài, điều này có thể dẫn đến hiện tượng giật trang đột ngột, gây khó hiểu cho người dùng. Hơn nữa, việc sử dụng JavaScript làm cơ chế dự phòng để xử lý việc lấy nét là phổ biến, nhưng bạn nên kích hoạt nó khi DOM sẵn sàng thay vì khi window.load được tải để tránh trải nghiệm không mượt mà khi trang bị giật sau khi người dùng đã bắt đầu cuộn trang.
Ví dụ thực tế cho mã của bạn

Việc triển khai điều này rất dễ dàng. Đối với ô nhập văn bản thông thường, bạn chỉ cần viết `<input autofocus type=”text”>` . Nếu bạn muốn một menu thả xuống trở thành điểm nhấn, hãy sử dụng `<select autofocus>` . Trong trường hợp là nút bấm, chỉ cần ` <button autofocus>` là đủ. Những đoạn mã này đảm bảo rằng con trỏ văn bản nhấp nháy hoặc vùng chọn được tô sáng sẽ chờ người dùng ngay khi trang web hiển thị trên màn hình của họ.
Mặt trái: Khi nào nên tránh điều đó
Nghe có vẻ tuyệt vời đối với người dùng máy tính để bàn, nhưng bạn nên cân nhắc kỹ trước khi sử dụng tính năng này trên thiết bị di động . Nhiều trình duyệt di động, đặc biệt là các trình duyệt dựa trên WebKit, thường bỏ qua thuộc tính này. Lý do rất đơn giản: việc tự động kích hoạt bàn phím trượt lên và phóng to trang ngay khi tải xong có thể gây khó chịu và làm hỏng trải nghiệm duyệt web. Nói chung, nên hiểu rõ đối tượng người dùng và ngữ cảnh cụ thể của biểu mẫu trước khi quyết định ép buộc tập trung vào ô nhập liệu.
Tóm lại, thuộc tính tự động lấy nét là một cách mạnh mẽ để tối ưu hóa hành trình người dùng bằng cách loại bỏ các thao tác nhấp chuột không cần thiết, miễn là được sử dụng một cách tiết kiệm. Bằng cách nhắm mục tiêu vào một yếu tố duy nhất, hợp lý và lưu ý đến hành vi trên thiết bị di động cũng như việc chuyển trang, bạn có thể tạo ra một giao diện chuyên nghiệp, trực quan và nhanh chóng cho mọi người truy cập.