Jquery如何使用animation动画效果改变背景色的代码


Posted in jQuery onJuly 20, 2020

 一、问题引入

jquery的animate动画虽然强大,但是无法使用其进行背景色(background-color)的动画效果变化,因为animate动画效果只能动态改变数值型的参数,例如:top,left,width,height...等等

好像网上也有说要装一个 "jquery.ui" 的插件之类的。但是博主我实在不想引入过多的插件, 且恰好本人掌握的CSS比较好一点点, 所以就想了下面这么个法子。

但好在 CSS 它自带的animation动画效果更加强大,它可以为我们提供背景色的动态变化。所以我们可以利用 Js+CSS 的方法达成我们预期效果。

二、demo展示

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Jquery无法通过animate动画改变背景色</title>
		<style type="text/css">
			#btn{
				display: block;
				width:100px;
				margin:50px auto 0px;
				font:bold 30px/50px 'Microsoft Yahei';
				background-color: lightblue;
			}

			.box{
				margin:100px auto 0px;
				background-color: green;
				width:400px;
				height:400px;
			}

			@keyframes color_turn{
				from{
					background-color: green;
				}
				to{
					background-color: blue;
				}
			}

			.change_color{
				animation: color_turn 500ms ease 2 alternate;
			}

		</style>
		<script type="text/javascript" src="js/jquery-1.12.4.min.js"></script>
		<script type="text/javascript">
			
			$(function(){
				var obtn = $('#btn');
				var obox = $('.box');

				obtn.click(function(){
					/*	
						由于需要动画能够重复播放,所以我们需要反复删除和添加 change_color 这个类,
						按照正常逻辑,先删除该类,再添加应当会正常播放动画,但经多次试验由于两句执行的时间间隔太小,
						导致出现bug,无法达到预期效果,所以我们要想办法让这两句执行的时间间隔长一点
						obox.removeClass('change_color');
						obox.addClass('change_color');
					*/
					obox.addClass('change_color');
					/*----通过定时器延迟 1100ms 后执行移除类的指令,这样就能解决问题了-----*/
					var timer = setTimeout(function(){
						obox.removeClass('change_color');
					},1100);

				})

			})

		</script>

	</head>
	<body>
		<input type="button" id="btn" value="变色">
		<div class="box"></div>
	</body>
</html>

2.1 程序设计思想

  • 首先设计好一个由绿色变为蓝色的动画效果,使用一个类名为 "change_color" 的选择器来存放。
  • 通过 js 实现点击按钮一次,为 div 标签 增加类名为 "change_color" 的类,增加完后,动画便开始播放。 当定时器,经过 1100ms 后会执行移除该类的命令, 使得点击按钮可以重复播放背景色变化的动画效果。

2.2 重点与难点(坑)

之所以,要使用定时器来移除 "change_color" 这个类,是因为如果增加类与移除类两句代码 挨得太近 ,会导致bug,即无法实现重复点击按钮,实现反复播放动画。所以为了能够重复播放,且两句执行时间间隔不能太小,所以设置了一个定时器,使得 1100ms 后执行 (定时器的时间还得根据你的动画持续时间而定,保证动画播放完以后,再进行类的移除)

其实还有一种方式,但前提是 中间的代码足够长 (即机器周期足够长)

obtn.click(function(){
			
			obox.removeClass('change_color');
			...
			...
			...
			obox.addClass('change_color');
})

每次点击,播放动画前先移除类,经过若干个机器周期( 究竟多少个,代码要多长,我也不清楚 ),再增加该类,便能达到预期效果。

2.3 效果展示

Jquery如何使用animation动画效果改变背景色的代码

到此这篇关于Jquery如何使用animation动画效果改变背景色的文章就介绍到这了,更多相关Jquery如何使用animation动画效果改变背景色内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

jQuery 相关文章推荐
使用jQuery卸载全部事件的思路详解
Apr 03 jQuery
jQuery EasyUI tree增加搜索功能的实现方法
Apr 27 jQuery
jQuery表单设置值的方法
Jun 30 jQuery
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
jquery 键盘事件的使用方法详解
Sep 13 jQuery
jQuery Datatables表头不对齐的解决办法
Nov 27 jQuery
jquery获取transform里的值实现方法
Dec 12 jQuery
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
Oct 26 jQuery
jQuery实现高度灵活的表单验证功能示例【无UI】
Apr 30 jQuery
jQuery HTML设置内容和属性操作实例分析
May 20 jQuery
基于ajax及jQuery实现局部刷新过程解析
Sep 12 jQuery
jQuery实现全选按钮
Jan 01 jQuery
jquery实现有过渡效果的tab切换
Jul 17 #jQuery
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 #jQuery
jQuery 添加元素和删除元素的方法
Jul 15 #jQuery
Jquery使用each函数实现遍历及数组处理
Jul 14 #jQuery
jQuery 实现DOM元素拖拽交换位置的实例代码
Jul 14 #jQuery
jQuery开发仿QQ版音乐播放器
Jul 10 #jQuery
jQuery实现B2B网站后台管理系统侧导航
Jul 08 #jQuery
You might like
透析PHP的配置文件php.ini
2006/10/09 PHP
PHP递归统计系统中代码行数
2019/09/19 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
jQuery 选择器理解
2010/03/16 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
2010/09/12 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
jquery插件jquery倒计时插件分享
2013/12/27 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
js中用cssText设置css样式的简单方法
2016/09/19 Javascript
基于JavaScript实现滑动门效果
2017/03/16 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
vue中组件的过渡动画及实现代码
2018/11/21 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
微信小程序后端(java)开发流程的详细步骤
2019/11/13 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
解决vue中el-tab-pane切换的问题
2020/07/19 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
python多线程同步实例教程
2019/08/11 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
python实现局域网内实时通信代码
2019/12/22 Python
详解Python实现进度条的4种方式
2020/01/15 Python
如何使用Cython对python代码进行加密
2020/07/08 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
HTML5+CSS3绘制锯齿状的矩形
2016/03/01 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
Solaris操作系统的线程机制
2012/12/23 面试题
七一讲话心得体会
2014/09/05 职场文书
民事和解协议书格式
2014/11/29 职场文书
2015年社区中秋节活动总结
2015/03/23 职场文书
python通过opencv调用摄像头操作实例分析
2021/06/07 Python
详解非极大值抑制算法之Python实现
2021/06/28 Python
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL