Tôi có một số menu css trên trang web của mình mở rộng với :hover
(không có js)
Điều này hoạt động theo cách bán đứt quãng trên iDevices, ví dụ: một lần nhấn sẽ kích hoạt :hover
quy tắc và mở rộng menu, nhưng sau đó nhấn vào nơi khác không xóa :hover
. Ngoài ra, nếu có một liên kết bên trong phần tử bị :hover
'ed, bạn phải nhấn hai lần để kích hoạt liên kết (lần nhấn đầu tiên kích hoạt :hover
, lần nhấn thứ hai liên kết kích hoạt).
Tôi đã có thể làm cho mọi thứ hoạt động tốt trên iPhone bằng cách ràng buộc touchstart
sự kiện.
Vấn đề là đôi khi safari di động vẫn chọn kích hoạt :hover
quy tắc từ css thay vì các touchstart
sự kiện của tôi !
Tôi biết đây là vấn đề vì khi tôi tắt tất cả các :hover
quy tắc theo cách thủ công trong css, safari di động hoạt động tốt (nhưng các trình duyệt thông thường rõ ràng là không còn nữa).
Có cách nào để tự động "hủy bỏ" :hover
các quy tắc cho các phần tử nhất định khi người dùng đang sử dụng safari trên thiết bị di động không?
Xem và so sánh hành vi iOS tại đây: http://jsfiddle.net/74s35/3/ Lưu ý: chỉ một số thuộc tính css mới kích hoạt hành vi hai lần nhấp, ví dụ: display: none; nhưng không phải nền: đỏ; hoặc văn bản-trang trí: gạch chân;