Tôi đã gặp vấn đề tương tự vào ngày khác. Kỳ lạ thay, nó có vẻ là ok trong FF, nhưng sẽ nhấp nháy trong IE, Chrome, và đôi khi Safari. Giải pháp là sử dụng một bảng sprite css. Bạn tạo một hình ảnh có cả hai hình nền bên cạnh nhau. Bạn chỉ hiển thị một phần của trang tính nền. bạn chuyển đổi nó bằng cách điều chỉnh lề trên nền. Bạn có thể xử lý các điều chỉnh lề bằng cách sử dụng addClass và removeClass. Dưới đây là mã, xem ở đây để một fiddle: http://jsfiddle.net/fMhMY/
CSS
.navButton span{
width:32px;
height:32px;
display:block;
}
a.leftButton span, a#leftButton span{
background-image:url(Prev.png);
background-position:-64px 0px;
}
/*nav button sprites */
/*sprite order is pushed, hover, natural */
a.leftButton.navOver span, a.rightButton.navOver span{
background-position:-32px 0px;
}
a.leftButton.navPressed span, a.rightButton.navPressed span{
background-position:0px 0px;
}
HTML
<div style='display:inline-block'>
<a href="javascript:void(0);" class="leftButton navButton" id='lefty'>
<span></span>
</a>
</div>
jQuery
$('.leftButton').mousedown(function() {
$('.leftButton').addClass('navPressed');
console.log('mousedown');
});
$('.leftButton').mouseup(function() {
$('.leftButton').removeClass('navPressed');
console.log('mouseup');
});
$('.leftButton').hover(function() {
$('.leftButton').addClass('navOver');
console.log('hover');
});
$('.leftButton').mouseout(function() {
$('.leftButton').removeClass('navPressed').removeClass('navOver');
console.log('mouseout');
});
W hy là bạn thiết lập các thuộc tính hiển thị và z-index mỗi khi bạn muốn cập nhật hình nền? Tốt nhất chuyển các thuộc tính hiển thị và z-index sang CSS của bạn. Ngoài ra z-index: 50px không hợp lệ. z-index lấy giá trị số nguyên. – Lowkase
bạn có ảnh chụp màn hình không? – Grigor
Bạn có đang tải trước hình ảnh của mình không? Nếu không, nhấp nháy có thể trong khi trình duyệt đang tải xuống. –