Như OP hỏi vì một lý do, đây là bước đột phá của tôi:
Nó dễ dàng hơn để giải thích trực quan, vì vậy trước hết chúng ta hãy thêm một handler nhấp chuột vào img
s:
$('img').click(function() {
$('.pageX').text('img clicked!');
});
Fiddle
Đủ công bằng. Bạn nhấp vào hình ảnh trong trình duyệt Chrome/Firefox/không phải IE và sẽ không có gì xảy ra khi hoàn toàn được định vị div
bao gồm nó.
Bây giờ hãy thử trên IE. Trình xử lý nhấp chuột của img
được kích hoạt! Do đó, nó cho thấy rằng IE đẩy các phần tử thông qua các phần tử "trong suốt" được định vị hoàn toàn (không có nội dung hoặc nền). Thú vị hơn, các yếu tố tương đối vị trí bị cùng một vấn đề và thiết lập z-index
trên một trong hai/cả hai yếu tố sẽ không giải quyết được một trong hai. Tất nhiên, vì hình ảnh ở trên lớp phủ, hình ảnh sẽ không kích hoạt sự kiện mousemove
của lớp phủ.
Giải pháp thay thế là cung cấp một số "điền" cho lớp phủ, giả sử background:rgba(0,0,0,0)
sẽ buộc IE giữ nguyên tố vị trí tuyệt đối ở trên cùng. Fiddle. Nếu bạn cần hỗ trợ các trình duyệt không có hỗ trợ rgba, hãy sử dụng gif trong suốt 1x1px làm nền.
Tôi chưa bao giờ thấy điều này được xác định trong bất kỳ thông số kỹ thuật nào cũng như không chính thức được báo cáo là lỗi. Không có logic hoặc lý do cho các yếu tố hoàn toàn vị trí mà không có nội dung hoặc nền tảng để chịu vấn đề z-index này, do đó tôi sẽ gọi nó là một lỗi IE khác. Có thể báo cáo nó trên Microsoft forums sẽ được sử dụng.
Ngoài ra, câu hỏi có liên quan: IE bug: absolutely-positioned element with a non-transparent background colour
Nguồn
2013-01-14 00:45:50
+1 câu hỏi thú vị. Tôi biết đây không phải là những gì bạn yêu cầu, nhưng cho lớp phủ một nền tảng như 'nền: rgba (0,0,0,0);' dường như sửa chữa nó trong bản xem trước IE10. [fiddle] (http://jsfiddle.net/xSpqE/16/) –
Bạn có thể thấy rằng trong một phần của hộp không có trong hình ảnh, văn bản sẽ cập nhật. – kenstone
^Nó thực sự là một cách khác. Lớp phủ bao gồm hình ảnh. Lớp phủ có nền sẽ kích hoạt 'mousemove'. Thú vị hơn, nếu bạn thêm một số nội dung văn bản vào lớp phủ mà không áp dụng bất kỳ kiểu nền nào cho nó, sự kiện mousemove chỉ được kích hoạt khi bạn di chuyển chuột phía trên văn bản. Tuy nhiên, một lỗi IE khác mà tôi chưa bao giờ gặp trước đó. Tôi đoán tôi chỉ không sử dụng 'mousemove' rất thường xuyên. –