Javascript 如何避免;眨眼;交换礼物的时候?
我正在创建一个网站,当您滚动到某个区域时,会出现Javascript 如何避免;眨眼;交换礼物的时候?,javascript,jquery,css,if-statement,gif,Javascript,Jquery,Css,If Statement,Gif,我正在创建一个网站,当您滚动到某个区域时,会出现gif。它只循环一次;如果继续滚动,它将变为另一个gif(也只播放一次)。如果向后滚动,它将变为第一个gif,重新启动,以便可以再次播放 然而,当改变发生时,有一个我不想要的眨眼。这是你的电话号码。下面是javascript: $(window).ready(function() { var v = 0; $(window).on("scroll", function() { var scrollTop = $(this).scr
gif
。它只循环一次;如果继续滚动,它将变为另一个gif
(也只播放一次)。如果向后滚动,它将变为第一个gif
,重新启动,以便可以再次播放
然而,当改变发生时,有一个我不想要的眨眼。这是你的电话号码。下面是javascript
:
$(window).ready(function() {
var v = 0;
$(window).on("scroll", function() {
var scrollTop = $(this).scrollTop();
if (scrollTop > 100 && scrollTop < 200) {
if ($('#container').attr('data-img') != 'http://i.imgur.com/Hhmt8.gif') {
++v;
$('#container').attr('data-img', 'http://i.imgur.com/Hhmt8.gif');
$('#container').css('background-image', 'url(http://i.imgur.com/Hhmt8.gif?v=' + v + ')');
}
} else if (scrollTop >= 200) {
if ($('#container').attr('data-img') != 'http://i.imgur.com/TUAwA.gif') {
++v;
$('#container').attr('data-img', 'http://i.imgur.com/TUAwA.gif');
$('#container').css('background-image', 'url(http://i.imgur.com/TUAwA.gif?v=' + v + ')');
}
} else {
$('.imageHolder').css('background', 'blue');
}
});
});
$(窗口).ready(函数(){
var v=0;
$(窗口).on(“滚动”,函数(){
var scrollTop=$(this.scrollTop();
如果(scrollTop>100&&scrollTop<200){
if($('#container').attr('data-img')!='http://i.imgur.com/Hhmt8.gif') {
++五,;
$('#container').attr('data-img','http://i.imgur.com/Hhmt8.gif');
$('#container').css('background-image','url')(http://i.imgur.com/Hhmt8.gif?v="v+"),;
}
}否则如果(滚动顶部>=200){
if($('#container').attr('data-img')!='http://i.imgur.com/TUAwA.gif') {
++五,;
$('#container').attr('data-img','http://i.imgur.com/TUAwA.gif');
$('#container').css('background-image','url')(http://i.imgur.com/TUAwA.gif?v="v+"),;
}
}否则{
$('.imageHolder').css('background','blue');
}
});
});
我试图从
背景图像中删除?v='+v+'
,但它不会在每次更改时加载。。。有没有办法在不闪烁的情况下保持其功能?预加载第二个图像,闪烁来自图像的远程获取时间。如果您以前在此网站上的任何位置预加载过相同的图像,则新图像将直接从浏览器的缓存加载,并将替换以前的图像,而不会出现任何可见的过渡
$(window).ready(function () {
var v = 0;
var image = new Image();
image.src = 'http://i.imgur.com/TUAwA.gif';
$(window).on("scroll", function () {
/* ... */
}
}
预加载第二个图像,闪烁来自图像的远程抓取时间。如果您以前在此网站上的任何位置预加载过相同的图像,则新图像将直接从浏览器的缓存加载,并将替换以前的图像,而不会出现任何可见的过渡
$(window).ready(function () {
var v = 0;
var image = new Image();
image.src = 'http://i.imgur.com/TUAwA.gif';
$(window).on("scroll", function () {
/* ... */
}
}
预加载它们……它不会产生动画。将显示最后一帧。你可以看到这一点,明白我的意思。在这里,你一眨眼也不眨眼,但GIF只会在超过它们后发生……它不会产生动画。将显示最后一帧。你可以看到这一点,明白我的意思。在这里你没有眨眼,但是GIF只发生在眼睛上,但是如果缓存替换了前一个,它将不会动画。图像将是gif的最后一帧。你可以看到这一点,明白我的意思。在这里,你不会眨眼,但是GIF只会发生一次,不使用变量中的图像,只需第二次加载图像,就好像你要从服务器获取图像一样,就像你以前做的那样。浏览器将加载图像并播放动画,但不必先通过网络获取。如您所说尝试过,但无效。。。检查它是否仍然闪烁如果您在URL中添加一个不断变化的“querystring”,这意味着每次都会通过网络加载图像。如果要完全消除闪烁,必须通过一些步骤扩展脚本,包括将两个图像加载到2个容器中并切换它们,例如通过更改z索引。例如,您可以向JavaScript中的“Image()”对象添加一个“onload”处理程序,并处理此类函数中的所有操作。此外,图像都大于1MB,这增加了一些额外的问题。很抱歉,我没有时间创建解决方案。是的,但是如果缓存替换上一个,它将不会设置动画。图像将是gif的最后一帧。你可以看到这一点,明白我的意思。在这里,你不会眨眼,但是GIF只会发生一次,不使用变量中的图像,只需第二次加载图像,就好像你要从服务器获取图像一样,就像你以前做的那样。浏览器将加载图像并播放动画,但不必先通过网络获取。如您所说尝试过,但无效。。。检查它是否仍然闪烁如果您在URL中添加一个不断变化的“querystring”,这意味着每次都会通过网络加载图像。如果要完全消除闪烁,必须通过一些步骤扩展脚本,包括将两个图像加载到2个容器中并切换它们,例如通过更改z索引。例如,您可以向JavaScript中的“Image()”对象添加一个“onload”处理程序,并处理此类函数中的所有操作。此外,图像都大于1MB,这增加了一些额外的问题。很抱歉,我没有时间创建解决方案。