javascript - 在图像开关上使用 javascript 淡化背景图像

标签 javascript

我有三个图像,我的两个 div 在它们之间切换。然而,动画显得过于粗糙。如何在切换前应用淡入淡出?

<div class="my-images">
   <div id="image-1"></div>
   <div id="image-2"></div>
</div>


<script>
  function displayNextImage() {
     x = (x === images.length - 1) ? 0 : x + 1;
     document.getElementById("image-1").style.backgroundImage = images[x];
     document.getElementById("image-2").style.backgroundImage = images[x];
  }

  function startTimer() {
     setInterval(displayNextImage, 10000);
  }

  var images = [],
  x = 0;
  images[0] = "url('images/snow.jpeg')";
  images[1] = "url('images/nike.jpeg')";
  images[2] = "url('images/motor.jpeg')";
</script>

这会不断循环,所以我不希望它在第一次加载时就淡出。

最佳答案

如果没有 JQuery,您将遇到跨浏览器兼容性问题。 所以我建议你使用 JQuery 来实现这一点。

<div class="my-images">
   <div class="my-image" id="image-1"></div>
   <div class="my-image" id="image-2"></div>
</div>


<script>
  function displayNextImage() {
    $("#image-" + x).css('backgroundImage',  images[x]).show('slow');
    x++;
  }

  var images = [],
  x = 0;
  images[0] = "url('images/snow.jpeg')";
  images[1] = "url('images/nike.jpeg')";
  images[2] = "url('images/motor.jpeg')";
</script>

你必须将它添加到 css:

.my-image{
  display:none;
}

如果您不对元素使用 display: block: 您的 CSS 将是:

.my-image{
  display:whatYouWant;
}

然后需要添加文档ready()函数,将show()改为fadeIn():

$(document).ready(function(){
    $(".my-image").hide();
  });

  function displayNextImage() {
    $("#image-" + x).css('backgroundImage',  images[x]).fadeIn('slow');
    x++;
  }

这会起作用,因为 fadeIn() 设置为显示之前的值。

如果您希望在添加图像之前显示 div,请删除 $(document).ready() 调用并编辑 displayNextImage():

function displayNextImage() {
  $("#image-" + x).hide().css('backgroundImage',  images[x]).fadeIn('slow');
  x++;
}

关于javascript - 在图像开关上使用 javascript 淡化背景图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51603948/

相关文章:

javascript - 克隆元素发现者

javascript - Dropdownlist 的动态 Jquery 验证

javascript - 如何在 Vue 3 中为 axios 调用使用去抖功能

JavaScript Math.min 返回错误值

javascript - 是否可以在尚未附加到 DOM 的元素中创建迷你图(使用 jquery.sparkline 插件)?

javascript - HTTPS 网站上的 Dailymotion iframe

javascript - 使用javascript将文档标题更改为从数据库记录

javascript - angular2 - 响应未在 html 中呈现

javascript - 如何在使用knockoutjs加载页面时激活或调用组件注册方法

javascript - 无法单击带有另一个 div 后面的链接的 div 绝对位置不起作用