javascript - 使用 jquery 和 HTML5 数据属性为背景颜色设置动画

标签 javascript jquery css html

我正在尝试使用 jQuery 和 HTML5 data 属性的组合为特定 div 的 background-color 设置动画。我对实现这一目标的最佳方式持开放态度,但我相信上述内容对我的情况最有意义。

我想在使用 Wordpress Advanced Custom Fields 插件设置的一组颜色之间淡入淡出,因此使用 data 属性的原因是,我可以在 DOM 中动态设置这些颜色。

下面是 div 的标记,包括颜色,但是我不知道如何实现 jQuery 在所有颜色之间设置动画,最好是随机的。

有人可以帮忙吗?谢谢。

<div id="content" data-colors="<?php if( have_rows('dot_colours', 'option') ): ?><?php while( have_rows('dot_colours', 'option') ): the_row(); ?><?php the_sub_field('colour'); ?>,<?php endwhile; ?><?php endif; ?>
    ">
Content here.
</div>

最佳答案

像这样的东西会起作用:

HTML(假设 PHP 为 data-colors 的值返回一个数组)

<div id="myDiv" data-colors='["#b3e45f", "red", "yellow", "green", "blue"]'></div>

JavaScript

const el = $('#myDiv');
const colors = el.data('colors');
let i = 0;

el.css("background-color", colors[i]);

function changeColor() {
  i++;
  i = i % colors.length;
  el.animate({backgroundColor: colors[i]},1000);
  setTimeout(changeColor,2500);
}

changeColor();

这里有一个 Codepen 来演示:https://codepen.io/MarkRabey/pen/MobeLo

编辑:忘记提及,彩色动画作为 jQuery UI 的一部分可用,而不是 jQuery。如果没有 jQuery UI,您可以改用 CSS 过渡。

添加到您的 CSS:

#myDiv {
  transition: background-color 1s;
}

changeColor() 函数更改为:

function changeColor() {
  i++;
  i = i % colors.length;
  el.css('background-color', colors[i]);
  setTimeout(changeColor,2500);
}

关于javascript - 使用 jquery 和 HTML5 数据属性为背景颜色设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44568929/

相关文章:

jquery - fullcalendar - 动态改变行高

css - 无法修复 Google Map div

javascript - XULRunner 应用程序中的 3d 小部件

javascript - 从 javascript 调用 React 组件函数

javascript - 如何跟踪在网站上花费的时间

javascript - 无法将参数从命令传递到 grunt 文件

javascript - 计算a4纸尺寸的div高度

jquery - Knockout.js、映射插件和 moment.js - 格式化/映射 json 日期

带有 if 条件的 jQuery addClass

html - 如何在 Bootstrap 中为 Table 标签添加填充?