jQuery 背景图像过渡如何?
jQuery Background Image Transition How To?
我正在尝试创建一个背景不断变化的主页。现在,我已将其设置为 body 本身包含背景图像,我只希望一张图像淡出到下一张,然后循环到开头。
我的第一个问题:它不工作。时期。
我的第二个问题:如果它确实有效,它可能会在延迟间隔之前立即过渡到下一个...我该如何防止这种情况?
以下是我的代码,可在 html 文档的标签底部找到:
$(window).load(function() {
var current_scene = 0;
setInterval(function() {
if (current_scene == 0) {
var current_scene = 1;
$(body).animate({
backgroundImage: 'url(...)'
},400);
} else if (current_scene == 1) {
var current_scene = 2;
$(body).animate({
backgroundImage: 'url(...)'
},400);
} else {
var current_scene = 0;
$(body).animate({
backgroundImage: 'url(...)'
},400);
}
}, 3000);
});
提前致谢!
这是工作代码
为选择器 $("body")
全局声明变量和固定引号
var current_scene = 0;
$(window).load(function() {
setInterval(function() {
if (current_scene == 0) {
current_scene = 1;
$("body").animate({
backgroundImage: 'url("someimagename.png")'
},400);
} else if (current_scene == 1) {
current_scene = 2;
$("body").animate({
backgroundImage: 'url("someimagename2.png")'
},400);
} else {
current_scene = 0;
$("body").animate({
backgroundImage: 'url("someimagename3.png")'
},400);
}
}, 3000);
});
你不能用 js 给 body background-image 做动画,把 body selector 改成 $("body")
$(document).ready(function(){
var current_scene = 0;
setInterval(function() {
startAnimation();
}, 3000);
function startAnimation() {
if (current_scene == 0) {
current_scene = 1;
$("body").css({ 'background-image': 'url(1.png)' });
} else if (current_scene == 1) {
current_scene = 0;
$("body").css({ 'background-image': 'url(2.png)' });
}
}
});
或者试试这个干净的代码
$(document).ready(function () {
var img_array = ['1.png', '2.png'];
var indexOfImage = 0;
var interval = 3000;
setTimeout(function () {
$('body').css('backgroundImage', 'url(' + img_array[indexOfImage++ % img_array.length] + ')');
setTimeout(arguments.callee, interval);
}, interval);
});
为正文添加一些样式
body {
background-image: none;
width: 100%;
height: 100%;
-webkit-transition: background 0.6s ease-in-out;
-moz-transition: background 0.6s ease-in-out;
-o-transition: background 0.6s ease-in-out;
transition: background 0.6s ease-in-out;
background-size: cover;
background-repeat: repeat;
background-position: 0 0;
}
我正在尝试创建一个背景不断变化的主页。现在,我已将其设置为 body 本身包含背景图像,我只希望一张图像淡出到下一张,然后循环到开头。
我的第一个问题:它不工作。时期。 我的第二个问题:如果它确实有效,它可能会在延迟间隔之前立即过渡到下一个...我该如何防止这种情况?
以下是我的代码,可在 html 文档的标签底部找到:
$(window).load(function() {
var current_scene = 0;
setInterval(function() {
if (current_scene == 0) {
var current_scene = 1;
$(body).animate({
backgroundImage: 'url(...)'
},400);
} else if (current_scene == 1) {
var current_scene = 2;
$(body).animate({
backgroundImage: 'url(...)'
},400);
} else {
var current_scene = 0;
$(body).animate({
backgroundImage: 'url(...)'
},400);
}
}, 3000);
});
提前致谢!
这是工作代码
为选择器 $("body")
全局声明变量和固定引号var current_scene = 0;
$(window).load(function() {
setInterval(function() {
if (current_scene == 0) {
current_scene = 1;
$("body").animate({
backgroundImage: 'url("someimagename.png")'
},400);
} else if (current_scene == 1) {
current_scene = 2;
$("body").animate({
backgroundImage: 'url("someimagename2.png")'
},400);
} else {
current_scene = 0;
$("body").animate({
backgroundImage: 'url("someimagename3.png")'
},400);
}
}, 3000);
});
你不能用 js 给 body background-image 做动画,把 body selector 改成 $("body")
$(document).ready(function(){
var current_scene = 0;
setInterval(function() {
startAnimation();
}, 3000);
function startAnimation() {
if (current_scene == 0) {
current_scene = 1;
$("body").css({ 'background-image': 'url(1.png)' });
} else if (current_scene == 1) {
current_scene = 0;
$("body").css({ 'background-image': 'url(2.png)' });
}
}
});
或者试试这个干净的代码
$(document).ready(function () {
var img_array = ['1.png', '2.png'];
var indexOfImage = 0;
var interval = 3000;
setTimeout(function () {
$('body').css('backgroundImage', 'url(' + img_array[indexOfImage++ % img_array.length] + ')');
setTimeout(arguments.callee, interval);
}, interval);
});
为正文添加一些样式
body {
background-image: none;
width: 100%;
height: 100%;
-webkit-transition: background 0.6s ease-in-out;
-moz-transition: background 0.6s ease-in-out;
-o-transition: background 0.6s ease-in-out;
transition: background 0.6s ease-in-out;
background-size: cover;
background-repeat: repeat;
background-position: 0 0;
}