Chà, về mặt kỹ thuật thì không thể có được :before
và :after
các phần tử giả hoạt động trên input
các phần tử
Từ W3C :
12.1 The: trước và: sau các phần tử giả
Các tác giả chỉ định kiểu và vị trí của nội dung được tạo bằng: trước và sau các phần tử giả. Như tên của chúng chỉ ra, các phần tử giả trước: sau và sau xác định vị trí của nội dung trước và sau nội dung của cây tài liệu. Thuộc tính 'nội dung', kết hợp với các phần tử giả này, chỉ định nội dung được chèn.
Vì vậy, tôi đã có một dự án nơi tôi đã gửi các nút ở dạng input
thẻ và vì một số lý do, các nhà phát triển khác đã hạn chế tôi sử dụng <button>
các thẻ thay vì các nút gửi đầu vào thông thường, vì vậy tôi đã đưa ra một giải pháp khác, đó là bọc các nút bên trong một span
bộ đến position: relative;
và sau đó hoàn toàn định vị biểu tượng bằng :after
giả.
Lưu ý: Fiddle demo sử dụng mã nội dung cho FontAwgie 3.2.1, do đó bạn có thể cần thay đổi giá trị của thuộc content
tính cho phù hợp.
HTML
<span><input type="submit" value="Send" class="btn btn-default" /></span>
CSS
input[type="submit"] {
margin: 10px;
padding-right: 30px;
}
span {
position: relative;
}
span:after {
font-family: FontAwesome;
content: "\f004"; /* Value may need to be changed in newer version of font awesome*/
font-size: 13px;
position: absolute;
right: 20px;
top: 1px;
pointer-events: none;
}
Demo
Bây giờ ở đây mọi thứ đều tự giải thích ở đây, về một tài sản tức là pointer-events: none;
, tôi đã sử dụng điều đó bởi vì khi di chuột qua :after
nội dung giả tạo, nút của bạn sẽ không nhấp, do đó, sử dụng giá trị none
sẽ buộc hành động nhấp đi qua nội dung đó .
Từ Mạng lưới nhà phát triển Mozilla :
Ngoài việc chỉ ra rằng phần tử không phải là mục tiêu của các sự kiện chuột, giá trị không hướng dẫn sự kiện chuột đi qua "phần tử" và nhắm mục tiêu bất cứ điều gì là "bên dưới" phần tử đó.
Di chuột vào phông chữ / biểu tượng trái tim Demovà xem điều gì sẽ xảy ra nếu bạn KHÔNG sử dụngpointer-events: none;