2015-02-02 14 views
5

Tôi đang tạo một menu trang trình bày.Không thể di chuyển bên trong div sau khi áp dụng -webkit-transform trong Safari

Trình đơn dài và tôi cần để có thể cuộn bên trong nó, vì vậy tôi đã đặt tràn-y: cuộn trên đó.

Tôi đang sử dụng -webkit-transform (và các biến thể trên các trình duyệt khác) làm thuộc tính chuyển đổi.

Bây giờ tôi không thể cuộn bên trong div, bằng cách sử dụng con lăn khi ở trên cùng của div sẽ làm cho toàn bộ trang cuộn.

Nếu tôi thay đổi hành vi của menu và chuyển đổi thuộc tính phù hợp (thiết lập menu sang phải: -320px và làm động nó trở lại phải: 0), cuộn hoạt động.

Lỗi này chỉ xảy ra trong Safari, nó hoạt động tốt trong Chrome và các trình duyệt khác. Cũng hoạt động trên iOS.

Mọi người đều biết cách giải quyết? Có ai gặp phải vấn đề này trước đây không? Tôi dường như không thể tìm thấy bất kỳ thông tin nào về nó. Cảm ơn bạn.

+2

Sau khi thực hiện một chút nghiên cứu, tôi thấy rằng Safari coi khung giới hạn của div (để đăng ký hành vi cuộn) là vị trí của div trước khi chuyển đổi được áp dụng. Nói cách khác, nếu bạn đặt chuột vào vị trí div trước khi dịch và sử dụng bánh cuộn, bạn sẽ có thể cuộn bên trong div, ngay cả khi nó không còn ở đó nữa. Tôi chưa tìm được giải pháp thay thế ... –

+0

Tôi gặp vấn đề tương tự. Bạn đã tìm thấy một giải pháp? –

Trả lời

12

Tôi gặp vấn đề tương tự với sự khác biệt mà tôi sử dụng một số animation thay vì transitionoverflow: auto thay vì overflow: scroll.

này khắc phục sự cố cho tôi (el là phần tử DOM mà hoạt hình được áp dụng):

function fixSafariScrolling(event) { 
    event.target.style.overflowY = 'hidden'; 
    setTimeout(function() { event.target.style.overflowY = 'auto'; }); 
} 

el.addEventListener('webkitAnimationEnd', fixSafariScrolling); 
+0

Đẹp nhất, cảm ơn bạn! Tôi đã nhận thấy rằng "làm mới" phần tử div (ví dụ: sửa đổi nội dung bên trong nó) sẽ khắc phục vấn đề. Cách giải quyết của bạn tốt hơn. –

+0

Đó cũng là khách hàng tiềm năng của tôi. Người đàn ông, làm cho một trang web hoạt động trên mọi trình duyệt là một rắc rối như vậy ...;)) –

+0

Cảm ơn, điều đó có vẻ phù hợp với tôi. quá. (Tôi đang sử dụng 'webkitTransitionEnd', btw.) – Pascal

Các vấn đề liên quan