滚动改变背景像一个电影

jQuery .scroll to change background like a movie

本文关键字:一个 电影 改变 背景 滚动      更新时间:2023-09-26

我想用200张图片改变网页的背景图像,并像电影一样播放它们。我的代码是工作的,但是过渡是闪烁时,图片上的滚动变化。似乎在滚动期间,CSS更新,我得到一个闪烁。这在Chrome和Safari中非常明显,但在FF中也是如此。在FF中看起来更流畅。奇怪。需要帮忙解决问题。我使用下面的代码。请,任何帮助平滑过渡,使它更像电影将是伟大的。我是jquery新手,但有编程背景。任何和所有的建议是非常感谢!

我研究了将近三天。有些人提到,更新。htaccess文件有助于将文件的头设置为不过期,并且浏览器正在发送304。我不知道如何测试,但下面是我的代码。

var pics = []; // CREATE PICS ARRAY
    //PRELOAD FUNCTION TO SET UP PICS ARRAY IN MEMORY USING IMAGE OBJECT
function preload(){
    for(i = 0; i < arguments.length; i++) {
        pics[i] = new Image();
        pics[i].src = arguments[i]; 
    }
};
preload(
'bgImage/1.jpg'
,'bgImage/2.jpg'
,'bgImage/3.jpg'
,'bgImage/4.jpg'
,'bgImage/5.jpg'
); // THERE ARE 200 TOTAL IMAGES THAT WE ARE LOADING...
function switchImage() {
var s = $(window).scrollTop();
var index = 0;
if(s>   10  ){index =   1   ;}
if(s>   20  ){index =   2   ;}
if(s>   30  ){index =   3   ;}
if(s>   40  ){index =   4   ;}
if(s>   50  ){index =   5   ;}
// THERE IS 200 IF STATEMENTS IN TOTAL
// THE ODER OF THE IMAGES STARTS IN THE MIDDLE AND WE HAVE TO ADJUST DEPENDING ON POSITION
// USING THE IF STATEMENTS WAS THE EASIEST SOLUTION
$("body").css('background-image', 'url(' + pics[index].src + ')');
};
$(document).ready(function () {
switchImage();
//alert("images and dom loaded");
});
$(window).scroll(function () {
switchImage();
});

如果您的图像命名为#.jpg,将预加载函数包装到适配器中,该适配器接收图像数量并迭代预加载字符串,如'bgImage/' + i + '.jpg'。

这种方式,你可以立即得到可重用的数组使用滚动与开关语句的所有200段,这是真正的痛苦在A…或者直接调用:

index = $(window).scrollTop()/10;

这一行应该取代你所有的索引,每次你滚动,你将把正确的图像作为背景。

至于在javascript/jQuery事件上更改css,我建议使用jQuery animate,它具有几毫秒的快速过渡,但仍然是一个过渡。