Tôi đã gặp phải sự cố trong phiên bản webkit trên thiết bị di động (cụ thể là Webkit 534.46 trên iOS 5.1.1 dưới dạng Safari trên thiết bị di động và giờ đây là Chrome dành cho iOS). đã từng thấy. (tức là các bản trình diễn bên dưới sẽ được xem trên phiên bản webkit di động.)Mobile Webkit reflow issue
Here is a live example of the issue. Cốt lõi của CSS cực kỳ thẳng về phía trước. Nó định vị một chỉ mục bảng chữ cái dọc theo bên trái của trang:
#index {
left:0; margin:0; padding:0; position:fixed; top:0; width:3em;
}
Sự cố xảy ra khi một phần tử được cố định trên đầu thân. Nó hoàn toàn có thể được tương tác với cho đến khi các thay đổi cuộn và sau đó nó dừng chấp nhận đầu vào. Nếu tôi (theo cách thủ công) hãy xáo trộn cuộn giấy ngay cả một pixel thì nó sẽ hoạt động trở lại. Ví dụ được giữ đơn giản nhất có thể và không sử dụng bất kỳ JavaScript nào. Sau khi thực sự búa vào nó, tôi đã phát hiện ra rằng nó xuất hiện rằng các yếu tố nghĩ rằng nó được cuộn nhưng đã được sửa chữa trực quan. Nói cách khác, nếu bạn nhấp vào 'A', sau đó thử nhấp vào 'A' một lần nữa, đôi khi bạn sẽ nhận được nhấp chuột thứ hai nhưng nó sẽ tiếp tục trong danh sách. Điều này có vẻ giống như một vấn đề CSS reflow với tôi. Tôi biết rằng webkit di động cố gắng giảm số lượng các phản hồi.
Here is a live example of the workaround.
tôi có thể sử dụng JS để buộc các CSS của toàn bộ tài liệu reflow trên cuộn (với van tiết lưu, giúp ngăn chặn nó xảy ra cho đến khi 100ms sau khi di chuyển) mà dường như để workaround vấn đề này trong đơn giản thí dụ. Thật không may, điều này không giúp được phiên bản thế giới thực của vấn đề này.
This is the code for the issue page and the workaround script.
Câu hỏi của tôi là những gì đang xảy ra ở đây và có một workaround CSS mà tôi đang thiếu? Cụ thể, tôi tò mò liệu bất kỳ guru CSS nào có thể tìm ra tình huống bố cục nào ngăn cản các nhấp chuột chạm vào vị trí chính xác trên phần tử cố định? Một sự hiểu biết tốt hơn có thể giúp tìm một sửa chữa thực sự.
Chỉnh sửa: Tôi quên đề cập đến ví dụ rõ ràng buộc khung nhìn đến kích thước của cửa sổ. Vì vậy, người dùng không thể phóng to/thu nhỏ, có nghĩa là vị trí: cố định nên neo phần tử vào bên trái của cửa sổ.
Cập nhật (2012-09-20): Điều này dường như được khắc phục trong Mobile Safari trên iOS 6 (cũng như UIWebView). Bất kỳ workaround đầu tiên nên kiểm tra để chắc chắn rằng nó là trên iOS < 6. Ví dụ, sử dụng CssUserAgent này sẽ như thế nào:
if (parseFloat(cssua.ua.ios) < 6) { /* ... */ }
Tôi vẫn đang giải quyết các cách giải quyết khác nhau trong hai câu trả lời để tìm "tốt nhất". Tôi đã đưa cả hai bạn một +1 cho các liên kết. Tôi sẽ trao tiền thưởng cho bất kỳ điều gì thực sự khắc phục vấn đề của tôi. Cảm ơn! – mckamey
Tôi vẫn đang tìm kiếm giải pháp hoạt động trong trường hợp cụ thể của mình, nhưng cửa sổ tiền thưởng đang cạn dần nên tôi sẽ trao giải thưởng cho @Paul Sweatte kể từ khi anh ấy trả lời đầu tiên và liên kết của anh ấy có nhiều giải pháp khác nhau. Cảm ơn mọi người! – mckamey