在您的 for 循环中,您正在设置src
属性 of#frame
但它div
不是img
.
所以,而不是这个:
$("#frame").attr('src', ''+i+'.jpg');
尝试这个:
$("#frame").css('background-image', 'url(' + i + '.jpg)');
element
使用 jQuery将滚动事件绑定到目标:
$('#target').scroll(function() {
//do stuff here
});
window
使用 jQuery将滚动事件绑定到:
$(window).scroll(function () {
//do stuff here
});
这是jQuery的文档.scroll()
。
更新:
如果我理解正确,这里有一个关于 jsFiddle的工作演示,说明您想要实现的目标。
CSS:
html, body {
min-height: 1200px; /* for testing the scroll bar */
}
div#frame {
display: block;
position: fixed; /* Set this to fixed to lock that element on the position */
width: 300px;
height: 300px;
z-index: -1; /* Keep the bg frame at the bottom of other elements. */
}
Javascript:
$(document).ready(function() {
switchImage();
});
$(window).scroll(function () {
switchImage();
});
//using images from dummyimages.com for demonstration (300px by 300px)
var images = ["http://dummyimage.com/300x300/000000/fff",
"http://dummyimage.com/300x300/ffcc00/000",
"http://dummyimage.com/300x300/ff0000/000",
"http://dummyimage.com/300x300/ff00cc/000",
"http://dummyimage.com/300x300/ccff00/000"
];
//Gets a valid index from the image array using the scroll-y value as a factor.
function switchImage()
{
var sTop = $(window).scrollTop();
var index = sTop > 0 ? $(document).height() / sTop : 0;
index = Math.round(index) % images.length;
//console.log(index);
$("#frame").css('background-image', 'url(' + images[index] + ')');
}
HTML:
<div id="frame"></div>
进一步的建议:
我建议你改变background-image
body ,而不是 div 。但是,如果您必须为此使用 a div
;那么你最好添加一个调整大小事件监听器,window
并在每次调整大小时设置/更新该 div 的高度。原因是; height:100%
在任何浏览器中都无法按预期工作。