javascript - 使用 jQuery 在类之间交换时触发淡入淡出

标签 javascript jquery html css fade

到目前为止,我有以下代码正在运行:JSFIDDLE DEMO

相关的JS在这里:

// Define classes & background element.
var classes = ['bg1','bg2','bg3','bg4'],
    $bg = document.getElementById('blah');
// On first run:
$bg.className = sessionStorage.getItem('currentClass') || classes[0];
// On button click:
$('.swapper').mousedown(function () {
  // (1) Get current class of background element,
  // find its index in "classes" Array.
  var currentClassIndex = classes.indexOf($bg.className);
  // (2) Get new class from list.
  var nextClass = classes[(currentClassIndex + 1)%classes.length];
  // (3) Assign new class to background element.
  $bg.className = nextClass;
  // (4) Save new class in sessionStorage.
  sessionStorage.setItem('currentClass', nextClass);
});

就我的目的而言,这在功能上非常有效——我可以单击一个按钮来不断地在这四个类之间进行交换,同时还将当前类存储到 sessionStorage 中,这样当我单击网站上的链接时,currentClass 立即加载。 (注意:在我的网站上,设置是相同的,但是类 bg1bg2bg3bg4 包含背景图像。)

我想要它做什么: 当从一个类切换到另一个类时,我希望它能够进行快速/短的交叉淡入淡出。现在它只是从一个类别/背景切换到另一个类别/背景。

我的想法是:有没有办法可以触发包含淡入淡出的 CSS 类转换或动画,也许作为父类?我知道有一个 jQuery fade 函数,但我无法让它与我的设置一起工作,以便它在 mouseClick 上触发。

最佳答案

这是更新的 jsfiddle根据您的评论,您说您已经成功了。

我添加了超时功能

setTimeout(function(){$bg.className = nextClass}, 500);
setTimeout(function(){$($bg).fadeIn(500)}, 500)

第一个超时使得图像在第一个图像淡出之后立即交换。第二次超时给了它一些加载时间,所以它不那么紧张。

您可以使用 }, 500); 数字来按照您想要的方式计时,500 是半秒,1000 > 是第二个等等。

关于javascript - 使用 jQuery 在类之间交换时触发淡入淡出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38387428/

相关文章:

javascript - 在 promise resolve 方法中状态总是过时的

javascript - 可实例化的 Angular 服务 - 我还能用什么其他方式重写它?

javascript - 是否可以在 TypeScript 中创建 "weak export"

jQuery - 在 HTML 下拉菜单中获取特定范围的项目

javascript - 在 CKEditor 中添加单行换行符的按钮

java - 在 Selenium 中获取图像 src

OAuth 的 Javascript 范围问题

javascript - JQuery,新的 JS 函数语法

javascript - 了解 Skrollr 数据值

html - 文本换行到屏幕调整大小的下一行