2011-10-18 37 views
5

(Đối với các trình duyệt hỗ trợ chuyển tiếp CSS, bao gồm các phiên bản Firefox, Safari và Chrome mới nhất. .)Chuyển đổi CSS nhấp nháy với: được truy cập trong Safari, Chrome và Firefox, nhưng không phải Opera

Có ai khác nhận thấy điều này không? Khi bạn đặt một chuyển đổi màu trên một: liên kết, a: chuyển tiếp truy cập vào màu a: liên kết trước khi hiển thị màu a: hover. Hãy khám phá:

http://jsfiddle.net/Mgzv9/2/

Có thể tránh nhấp nháy màu này không?

+0

Và Chrome mới nhất thậm chí không thực hiện chuyển đổi trên các liên kết đã truy cập ... – Zade

Trả lời

0

Tôi chưa bao giờ thấy điều đó xảy ra khi sử dụng màu. Nhưng nó sẽ xảy ra khi sử dụng hình ảnh trong baground. Đây là bcoz của thời gian tải, và có thể tránh được bằng cách sử dụng tất cả các hình ảnh chuyển tiếp trong một hình ảnh lớn và sử dụng tài sản baground-vị trí để kiểm soát hình ảnh.

+0

Điều này xảy ra ở ba trong số các trình duyệt mới nhất; hãy xem JSFiddle. – Zade

1

Tôi đã đập đầu xung quanh vấn đề này một lúc.

Vấn đề là, vấn đề này thực sự khó tái tạo. OK, vì vậy điều gì sẽ xảy ra, đôi khi trong khi tải/làm mới trang có chuyển đổi màu trên các liên kết, màu đầu tiên được chuyển từ màu liên kết trình duyệt mặc định sang màu được xác định bằng CSS. Nó thực sự không xảy ra với tôi, khi tôi mở HTML từ đĩa, nhưng nếu tôi đặt nó trong một máy chủ (ngay cả máy chủ địa phương), thì vấn đề này xuất hiện.

Để tạo lại vấn đề, tạo một HTML, thêm một stylesheet và xác định một sự chuyển tiếp cho các liên kết, một cái gì đó như thế này:

a { 
    color: red; 
    -webkit-transition: color .5s linear; 
    -moz-transition: color .5s linear; 
    -o-transition: color .5s linear; 
    -ms-transition: color .5s linear; 
    transition: color .5s linear; 
} 

a:hover { 
    color: green; 
} 

... và sau đó bao gồm các stylesheet trong HTML của bạn.

Đặt tệp trên máy chủ và thử mở trang trong Chrome, thử làm mới trang web, đôi khi bạn sẽ thấy chuyển tiếp từ màu xanh mặc định khi tải trang.

Sau khi deconstructing một số trang web, nơi mà dường như không có vấn đề với điều này, tôi đã đưa ra giải pháp đơn giản này.

Nếu bạn cũng bao gồm một số tệp Javascript, thì chỉ cần đặt Javascript bao gồm SAU CSS của bạn bao gồm.

Thậm chí nó còn hoạt động nếu bạn chỉ bao gồm tệp JS trống, sau biểu định kiểu.

Hy vọng điều này sẽ hữu ích!

+2

Thú vị như thế nào. Tôi không tìm thấy bản sửa lỗi Javascript của bạn tạo ra bất kỳ sự khác biệt nào. Kiểm tra soulmastery.net, ví dụ. Tôi cũng không tìm thấy bất kỳ sự khác biệt nào giữa việc xem tệp cục bộ và tệp máy chủ. Vấn đề vẫn còn trong Safari 5.1.2 và Firefox 8.0.1 (chạy OS X Lion). May mắn thay, có vẻ như Chrome đã khắc phục sự cố (trong 15.0.874.121). – Zade

+0

Lỗi/tính năng (khó nói bởi vì nó rõ ràng là kết quả của một số hành vi dự định) vẫn còn hiện diện như của Chrome 25 và FF 24 - nhưng sửa chữa WORKS. Tôi đặt JS * của tôi ra khỏi thẻ đầu *, (và bạn chắc chắn nên đặt nó * sau khi liên kết css *) - và nó hoạt động! quote: "Bất cứ điều gì trong đầu phải được hoàn thành trước khi cơ thể được nạp, vì vậy nó thường là một ý tưởng tồi để đưa javascript trong đó. Nếu bạn cần một cái gì đó trong khi cơ thể đang tải, hoặc muốn tiến hành một số ajax, sau đó nó sẽ được thích hợp để đặt nó vào đầu. " Điều này xảy ra cho ví dụ:wp_head() [WordPress], sẽ xuất hiện ngay trước *. – vaxquis

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