jquery - 使用 setInterval 和 jquery 切换 div 的背景图像
问题描述
我有这段代码应该旋转 div 的一些背景图像。
<style>
.slider{
height: 600px;
padding: 0;
background-image: url('img/placeholder.png');
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
}
</style>
<script>
$(document).ready(function(){
var images = ['url("img/placeholder.png")',
'url("img/img1.jpg")',
'url("img/img2.jpg")',
'url("img/img3.jpg")',
'url("img/img4.jpg")'];
$.each(images, function(i, val){
setInterval(function(){
$('.slider').css({backgroundImage: val});
}, 5000);
});
});
</script>
<div class="container-fluid">
<div class="row slider"></div>
</div>
问题是它只会显示数组中的最后一个图像。是否有可能解决这个问题,我对使用 javascript/jquery 循环不是太有经验,所以我想问题出在$.each()
循环代码上?
解决方案
你可以这样做。
$(document).ready(function() {
var images = [
'url("https://d2pu2bk1b66iw6.cloudfront.net/photos/2017/04/24/6-165890-cat-1493062781.jpg")',
'url("https://thumbs-prod.si-cdn.com/3asSf7LmvyrY5m0-ggxJjrnd_DI=/800x600/filters:no_upscale()/https://public-media.smithsonianmag.com/filer/58/04/5804c840-3073-4ecf-a1d2-37808419fe93/gdahh5-wr.jpg")',
'url("https://static.toiimg.com/img/60828043/Master.jpg")',
'url("https://3c1703fe8d.site.internapcdn.net/newman/gfx/news/hires/2015/cat.jpg")'
];
var i = images.length;
setInterval(function() {
if (i == images.length) {
i = 0;
}
$('#slider').css("background-image", images[i]);
i++;
}, 1000);
});
#slider {
width: 600px;
height: 600px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<div id="slider"></div>
第一秒没有图像,因为没有默认背景图像。您可以通过在以下行之前添加此行来简单地添加默认背景setInterval
:
$('#slider').css("background-image", images[images.length-1])
这样,您将始终从数组中的最后一个元素开始,然后返回第一个元素并正常继续。你可以改变逻辑,这只是一个奖励:-)
推荐阅读
- microsoft-graph-api - 具有 Graph API 的团队机器人
- python - 如何使用 SpaCy 从 Pandas DataFrame 中提取命名实体
- node.js - 未调用 Mocked Jest 回调方法
- html - 调整浏览器宽度时,数据网格标题会移位
- java - 计算 3 个目标之和的方法数
- arrays - 将 cosine() 应用于数组中的数字
- python - 找不到 msguniq。确保您安装了 GNU gettext 工具 0.15 或更新版本
- javascript - ImageData 数组中的索引逻辑是什么?
- vue.js - 在 Vue js 中我应该在哪里使用计算和方法?(需要适当的指导)
- java - 哪个更快,为每个游戏对象的属性创建一个数组或创建一个具有所有属性的构造函数