Thực hiện
Có ba cách triển khai khác nhau: các phần tử giả, các lớp giả và không có gì.
- WebKit, Blink (Safari, Google Chrome, Opera 15+) và Microsoft Edge đang sử dụng phần tử giả :
::-webkit-input-placeholder
. [ Tham khảo ]
- Mozilla Firefox 4 đến 18 đang sử dụng lớp giả:
:-moz-placeholder
( một dấu hai chấm). [ Tham khảo ]
- Mozilla Firefox 19+ đang sử dụng phần tử giả:
::-moz-placeholder
nhưng bộ chọn cũ vẫn sẽ hoạt động trong một thời gian. [ Tham khảo ]
- Internet Explorer 10 và 11 đang sử dụng lớp giả :
:-ms-input-placeholder
. [ Tham khảo ]
- Tháng 4 năm 2017: Hầu hết các trình duyệt hiện đại đều hỗ trợ phần tử giả đơn giản
::placeholder
[ Ref ]
Internet Explorer 9 trở xuống hoàn toàn không hỗ trợ placeholder
thuộc tính, trong khi Opera 12 trở xuống không hỗ trợ bất kỳ bộ chọn CSS nào cho trình giữ chỗ.
Các cuộc thảo luận về việc thực hiện tốt nhất vẫn đang diễn ra. Lưu ý các phần tử giả hoạt động như các phần tử thực trong Shadow DOM . A padding
trên input
sẽ không có màu nền giống như phần tử giả.
Bộ chọn CSS
Tác nhân người dùng được yêu cầu bỏ qua một quy tắc với bộ chọn không xác định. Xem Bộ chọn Cấp 3 :
một nhóm các bộ chọn chứa bộ chọn không hợp lệ là không hợp lệ.
Vì vậy, chúng tôi cần các quy tắc riêng cho từng trình duyệt. Nếu không, toàn bộ nhóm sẽ bị bỏ qua bởi tất cả các trình duyệt.
::-webkit-input-placeholder { /* WebKit, Blink, Edge */
color: #909;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #909;
opacity: 1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #909;
opacity: 1;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
color: #909;
}
::-ms-input-placeholder { /* Microsoft Edge */
color: #909;
}
::placeholder { /* Most modern browsers support this now. */
color: #909;
}
<input placeholder="Stack Snippets are awesome!">
Ghi chú sử dụng
- Hãy cẩn thận để tránh sự tương phản xấu. Trình giữ chỗ của Firefox dường như được mặc định với độ mờ giảm, do đó cần sử dụng
opacity: 1
ở đây.
- Lưu ý rằng văn bản giữ chỗ sẽ bị cắt nếu nó không phù hợp - kích thước các yếu tố đầu vào của bạn
em
và kiểm tra chúng với các cài đặt kích thước phông chữ tối thiểu lớn. Đừng quên bản dịch: một số ngôn ngữ cần nhiều chỗ hơn cho cùng một từ.
- Các trình duyệt có hỗ trợ HTML cho
placeholder
nhưng không có hỗ trợ CSS cho điều đó (như Opera) cũng nên được kiểm tra.
- Một số trình duyệt sử dụng CSS mặc định bổ sung cho một số
input
loại ( email
, search
). Chúng có thể ảnh hưởng đến kết xuất theo những cách không mong muốn. Sử dụng các thuộc tính -webkit-appearance
và -moz-appearance
để thay đổi điều đó. Thí dụ:
[type="search"] {
-moz-appearance: textfield;
-webkit-appearance: textfield;
appearance: textfield;
}