Cách tiếp cận chung là sử dụng giá trị mặc định làm nhãn, sau đó xóa nó khi trường lấy tiêu điểm.
Tôi thực sự không thích phương pháp này vì nó có khả năng tiếp cận và khả năng sử dụng.
Thay vào đó, tôi sẽ bắt đầu bằng cách sử dụng phần tử chuẩn bên cạnh trường.
Sau đó, nếu JavaScript được kích hoạt, thiết lập một lớp trên một phần tử tổ tiên gây ra một số phong cách mới để áp dụng rằng:
- tương đối vị trí một div chứa đầu vào và nhãn
- Tuyệt đối vị trí nhãn
- Hoàn toàn vị trí đầu vào trên đầu trang của các nhãn
- Tháo biên giới của đầu vào và thiết lập background-color của mình để minh bạch
Sau đó, và bất cứ khi nào đầu vào mất tiêu điểm, tôi kiểm tra xem đầu vào có giá trị hay không. Nếu có, hãy đảm bảo rằng phần tử tổ tiên có một lớp (ví dụ: "ẩn nhãn"), nếu không, đảm bảo rằng nó không có lớp đó.
Bất cứ khi nào đầu vào tăng tiêu điểm, hãy đặt lớp đó.
Biểu định kiểu sẽ sử dụng tên lớp đó trong bộ chọn để ẩn nhãn (sử dụng thụt lề văn bản: -9999px; thường).
Cách tiếp cận này mang đến trải nghiệm phong phú cho tất cả người dùng, bao gồm cả những người dùng bị tắt JS và những người sử dụng trình đọc màn hình.
Để ghi lại, giải pháp http://attardi.org/labels/ được đề xuất bởi Tex thực sự tốt hơn so với một từ Cory Walker. – nailitdown
UX khủng khiếp, đã chứng minh thời gian và thời gian một lần nữa. – Rudie
Hình ảnh không hoạt động. Đã xóa nó khỏi bài đăng. Vẫn có sẵn trong [sửa đổi 3] (http://stackoverflow.com/revisions/781473/3). – Shimmy