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 相关文章推荐
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
jQuery 实现双击编辑表格功能
Jun 19 jQuery
详解jQuery同步Ajax带来的UI线程阻塞问题及解决办法
Aug 09 jQuery
jquery tmpl模板(实例讲解)
Sep 02 jQuery
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
jquery 一键复制到剪切板的实例
Sep 20 jQuery
基于jQuery实现定位导航位置效果
Nov 15 jQuery
vue-cli webpack 引入jquery的方法
Jan 10 jQuery
Angular5中调用第三方库及jQuery的添加的方法
Jun 07 jQuery
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
jQuery实现弹出层效果
Dec 10 jQuery
jQuery+PHP+Ajax实现动态数字统计展示功能
Dec 25 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中break及continue两个流程控制指令区别分析
2011/04/18 PHP
PHP实现的博客欢迎提示功能(很特别哦)
2014/06/05 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
javascript 获取页面的高度及滚动条的位置的代码
2010/05/06 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
JS+Canvas 实现下雨下雪效果
2016/05/18 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
详解用node编写自己的cli工具
2017/05/23 Javascript
基于$.ajax()方法从服务器获取json数据的几种方式总结
2018/01/31 Javascript
vue采用EventBus实现跨组件通信及注意事项小结
2018/06/14 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
Python中unittest模块做UT(单元测试)使用实例
2015/06/12 Python
Python多进程分块读取超大文件的方法
2016/04/13 Python
Python 内置函数complex详解
2016/10/23 Python
解决每次打开pycharm直接进入项目的问题
2018/10/28 Python
Python中Subprocess的不同函数解析
2019/12/10 Python
python高阶函数map()和reduce()实例解析
2020/03/16 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
艺术爱好者的自我评价分享
2013/10/08 职场文书
行政助理岗位职责
2013/11/10 职场文书
银行类自荐信
2014/02/04 职场文书
优秀校长事迹材料
2014/12/24 职场文书
专家推荐信怎么写
2015/03/25 职场文书
《文化苦旅》读后感:阅读,让人诗意地栖居在大地上
2019/12/24 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
详解Python小数据池和代码块缓存机制
2021/04/07 Python