我相信您的愿望比发布的其他答案要复杂一些-您希望图像平滑淡化。此代码在 div 中创建一个 div,然后在鼠标悬停时显示内部(因此也是最顶层)div,将较低(最外层)div 的背景更改为循环中的下一个,然后淡出上面的图像. 它还具有选择性锁定机制,因此如果用户疯狂使用鼠标,它不会使图像以难看的方式闪烁。我希望这会有所帮助,如果您想更深入地解释代码的功能(您应该能够阅读它,主要是),请在评论中发布。
这段代码有你的部分。
Javascript:
var pos = 0, lockOut = 0;
var fade = 600; // change this if you like (in MS)
// fix these div names
var top = '#my-transitional-div', bottom = '#my-permanent-div';
var images = [ // fix these paths
'http://example.com/1.png',
'http://example.com/2.png',
'http://example.com/3.png',
'http://example.com/4.png',
'http://example.com/5.png'
];
$(document).ready(function() {
$(top).hide();
$(bottom).css("background-image",'url(' + images[pos] + ')');
$(bottom).live("mouseover",changeOut);
pos = images.length;
changeOut();
});
function changeOut() {
if (++lockOut > 1) {
lockOut--;
return;
}
$(top).css("background-image",'url('+images[pos-1]+')').show().fadeOut(fade);
if (pos >= images.length) pos = 0;
$(bottom).css("background-image",'url('+images[pos++]+')');
setTimeout(function(){lockOut--;},fade-10);
}
CSS:
/* fix these div names (also height, width) */
#my-transitional-div {
width: 500px;
height: 250px;
margin: 0;
padding: 0;
position: absolute;
left: 0;
top: 0;
}
#my-permanent-div {
position: relative;
width: 500px;
height: 250px;
margin: 0;
padding: 0;
}
HTML:
<div id="my-permanent-div">
<!-- notice that the "transitional" div (var=top) is INSIDE the other -->
<div id="my-transitional-div"></div>
</div>