- Từ Chrome 135, bắt đầu hỗ trợ tính năng mới cho phép tùy biến bằng CSS đối với phần tử
<select> mà vẫn duy trì tiêu chuẩn trợ năng
- Sau nhiều năm điều chỉnh đặc tả và phát triển, tính năng này được cung cấp như một thành phần mạnh mẽ không bị hỏng trên cả các trình duyệt cũ
- Cũng có thể chứa nội dung HTML, và với việc bổ sung
appearance: base-select, nay có thể thực hiện nhiều kiểu tùy biến như animation, style, v.v.
Giới thiệu appearance: base-select
Có thể đưa nội dung HTML vào <select>
- Trước đây, khi chèn hình ảnh hoặc SVG vào trong
<option>, trình duyệt sẽ bỏ qua
- Khi áp dụng
appearance: base-select, HTML sẽ được render nguyên trạng
- Trong Chrome, các tùy chọn có chứa SVG sẽ hiển thị, nhưng Safari, Firefox và các trình duyệt khác chưa hỗ trợ
- Demo CodePen: Liên kết thực hành
- Tính năng này được đưa vào dưới dạng thử nghiệm Finch và có thể bị dừng nếu cần
Có thể tùy biến hoàn toàn
- Mọi thành phần của
base-select đều có thể được thay thế, gắn animation và áp dụng style
- Có thể xây dựng giao diện chọn mang nhiều ý nghĩa thông qua các thiết kế đa dạng
- Ví dụ gồm có: hiển thị trạng thái, tùy chọn kèm avatar, bộ chọn màu, chọn trạng thái bài đăng, v.v.
- Demo CodePen: Liên kết thực hành
Giao diện JavaScript không thay đổi
- Hành vi JavaScript hiện có đối với
<select> vẫn được giữ nguyên
- Tuy nhiên, nếu đưa HTML vào
<option>, cách phân tích giá trị đã chọn đã thay đổi nên cần kiểm thử
- Nếu dùng thuộc tính
value thì không cần chỉnh sửa thêm
Tài liệu bổ sung
Tiêu chuẩn web
Tài liệu liên quan đến Chrome
Tài liệu cộng đồng
Demo sử dụng <select> đã được tùy biến
4 bình luận
Ý kiến Hacker News
Việc tôi hào hứng quá mức với tính năng này có lẽ cho thấy con người tôi từng là một lập trình viên web đầu những năm 2000. Đây là một tính năng rất hữu ích vì phần tử chọn cung cấp khả năng mà không thể tái tạo bằng HTML
Trước khi tính năng này được hỗ trợ rộng rãi, nên dùng theo hướng cải tiến dần. Hiện tại theo caniuse.com thì mức hỗ trợ toàn cầu là 46%
Tôi rất vui khi thấy tính năng này được triển khai. Nó sẽ là một cải tiến lớn hơn nhiều so với các giải pháp thay thế hộp chọn tùy biến
Tôi lo là nó không kích hoạt các thành phần gốc của hệ điều hành di động. Các thành phần gốc thì đáng tin cậy, dễ tiếp cận và phản hồi tốt
Một số điều khiển tốt hơn là không nên tạo kiểu. Với thanh cuộn, chúng thường quá mỏng hoặc độ tương phản màu quá kém nên khó sử dụng
Có vẻ như đây là điều mà các lập trình viên web đã chờ đợi suốt hàng chục năm. Nó có thể thay thế nhiều thư viện JS
Giờ đã có thể tùy biến phần tử chọn bằng CSS trong các trình duyệt Chromium
Có cung cấp liên kết tới lỗi trên Firefox
Cứ tiếp tục thế này thì sớm muộn gì cũng sẽ đạt mức tương đương tính năng với VB6
Vẫn tốt hơn các thư viện JS bị lỗi. Nhưng mối quan tâm chính là bố cục sẽ ra sao khi có nhiều tùy chọn
Vậy là sẽ không còn cần đến
<selectlist>nữa sao?Nói chuyện khác một chút, có vẻ trong Slackbot tiêu đề
<select>không hiển thị nhỉ hahaÔi T_T cái này tôi sẽ sửa sau.