javascript - 预加载背景图片

标签 javascript jquery

我像这样在 javascript/jQuery 中循环浏览背景图片...

var duration = 2500;
var delay = 500;
var i = 0;

setInterval(function() {

  if (i == 0) {
    $(".myimage").css("background-image", "url('https://placeimg.com/1640/1480/any')");
  }

  if (i == 1) {
    $(".myimage").css("background-image", "url('https://placeimg.com/1640/1481/any')");
  }

  if (i == 2) {
    $(".myimage").css("background-image", "url('https://placeimg.com/1640/1482/any')");
  }

  if (i == 3) {
    $(".myimage").css("background-image", "url('https://placeimg.com/1640/1483/any')");
  }

  i++;

}, duration + delay)
.myimage {
  height: 500px;
  width: 500px;
  transition: background-image 1s linear;
  background-image: url('https://placeimg.com/1648/1488/any');
  background-size: cover;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="myimage">
</div>

问题是,我偶尔会出现没有图像的情况,我认为这是因为图像没有及时加载。有没有办法预加载它们?

最佳答案

您可以使用 CSS 预加载它们,例如:

body::after{
  position:absolute; width:0; height:0; overflow:hidden; z-index:-1;
  content:url(https://placeimg.com/1640/1480/any) url(https://placeimg.com/1640/1481/any) url(https://placeimg.com/1640/1482/any) url(https://placeimg.com/1640/1483/any);
}

注意:您可以在 JS 代码中使用图像数组,并根据索引 i 更改它们。

var duration = 2500;
var delay = 500;
var i = 0;
var images = ['https://placeimg.com/1640/1480/any', 'https://placeimg.com/1640/1481/any', 'https://placeimg.com/1640/1482/any', 'https://placeimg.com/1640/1483/any'];

setInterval(function() {
  $(".myimage").css("background-image", "url(" + images[i] + ")");
  i++;
}, duration + delay)
.myimage {
  height: 500px;
  width: 500px;
  transition: background-image 1s linear;
  background-image: url('https://placeimg.com/1648/1488/any');
  background-size: cover;
}

body::after {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
  z-index: -1;
  content: url(https://placeimg.com/1640/1480/any) url(https://placeimg.com/1640/1481/any) url(https://placeimg.com/1640/1482/any) url(https://placeimg.com/1640/1483/any);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="myimage">
</div>

关于javascript - 预加载背景图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53431876/

相关文章:

javascript - Superscrollorama - 如何为多个列表项添加动画?

javascript - jQuery - 从 XML 页面获取内容并保存到变量

javascript - 加载asp.net网格后调用Jquery函数

jquery - 所有浏览器中的 TreeView 在 ActiveX 控件中使用 JQuery 而不是 VBScript

javascript - 单击按钮后停止动画

javascript - Img src 不起作用

javascript 检查对象属性开头

javascript - 如何使用 Ajax 和 JSON 获取天气信息并将其放入 HTML 段落中?

jquery - 我应该如何在开源应用程序中打包或声明 Javascript 依赖项?

javascript - 页面重新加载时恢复表状态