2011-11-10 25 views
8

http://jsfiddle.net/danielcgold/SYgzJ/Input lĩnh vực rời khỏi hiện vật từ chuyển tiếp CSS3 (trong Chrome 15)

Khi bạn bấm vào các đầu vào sau đó đi vào mờ, hiện vật còn lại trên màn hình trong Chrome 15. đầu tiên tôi nhận thấy vấn đề này trên một trang web tôi đã được phát triển vì vậy tôi loại bỏ tất cả mọi thứ nhưng chỉ là lĩnh vực đầu vào và một nút. Khi tôi xóa nút, quá trình chuyển đổi diễn ra tốt. Ý tưởng nào?

+1

Có thể là lỗi hiển thị chrome. – Kyle

+0

Tôi cũng có nút đó, lạ –

+1

Chắc chắn là lỗi Redraw/Repaint. – c69

Trả lời

11

Thêm CSS này đến lĩnh vực đầu vào của bạn:

input { 
    -webkit-transform: translate3d(0,0,0) 
} 

Điều này sẽ buộc Chrome để sử dụng GPU của bạn để làm tất cả những vẽ mà sẽ giải quyết vấn đề hiện vật và làm cho hình động của bạn mượt mà hơn.

+0

Điều này đã hiệu quả. Khi tôi áp dụng thuộc tính này vào khối phong cách của tôi, nơi tôi đặt tất cả các chuyển tiếp của mình, nó đã phá vỡ một thứ gì đó trong bố cục của tôi. Tôi chỉ cần thiết lập tài sản này thông qua một lớp học và nó đã làm việc! – Dan

+1

Điều này có thể gây ra một vấn đề khác: z-index có thể bị sai lệch. [Xem tại đây để xử lý nó] (http://stackoverflow.com/questions/6953497/webkit-transform-overwrites-z-index-ordering-in-chrome-13). –

+0

tuyệt vời !! Cảm ơn! – thinklinux

3

Đây là lỗi trong việc hiển thị chuyển tiếp CSS của Chrome. Nhưng bạn có thể giải quyết nó bằng cách buộc hoạt động "làm mới" phần tử. Xin lưu ý rằng bạn cần phải làm mới không phải là yếu tố input, nhưng đó là cha mẹ, vì vậy đoạn mã sau sẽ giúp bạn:

$(document).ready(function(){ 
    $('#test').blur(function(){ 
     $(this).parent().addClass('repaint'); 
    }); 
    $('#test').focus(function(){ 
     $(this).parent().removeClass('repaint'); 
    }); 
}); 

repaint lớp nên có một cái gì đó liên quan đến quan điểm của cha mẹ, ví dụ màu sắc khác nhau:

.repaint { 
color: red; 
} 

Nhưng bạn có thể thay thế color bằng visibility hoặc thuộc tính có liên quan đến chế độ xem khác (nhưng không quan trọng/hiển thị cho cha mẹ).

Đây là jsfiddle để chứng minh workaround

+0

ý tưởng tuyệt vời +1 – Jashwant

+0

Điều này đã không làm việc, tôi đã thử áp dụng lớp cho phần tử hoạt hình cũng như nội dung bằng cách sử dụng gọi lại 'jQuery' cũng như' promise(). Done() 'Giải pháp' translate3d' đã hoạt động ... –

0

Tôi đã gặp phải sự cố tương tự với các tạo phẩm bóng của hộp trong Safari và tìm thêm -webkit-transform:scale(1); vào quy tắc tập trung đã khắc phục sự cố.

Xem http://jsfiddle.net/SYgzJ/48/ - nó sẽ hoạt động tốt ngay bây giờ.

Như Cesar đã nói, -webkit-transform: translate3d(0,0,0); sẽ sửa lỗi, nhưng nó cũng có thể ảnh hưởng đến hiển thị văn bản.

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