for ループ内で、 のsrc
属性を設定していますが#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>
その他の提案:
div の代わりにbackground-image
body のを変更することをお勧めします。ただし、これにa を使用する必要がdiv
ある場合; 次に、サイズ変更イベント-istener を に追加し、サイズ変更window
ごとにその div の高さを設定/更新することをお勧めします。その理由は; height:100%
どのブラウザでも期待どおりに動作しません。