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插件之validation插件
Mar 29 jQuery
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
jQuery实现html table行Tr的复制、删除、计算功能
Jul 10 jQuery
js案例之鼠标跟随jquery版(实例讲解)
Jul 21 jQuery
基于jquery实现五星好评
Nov 18 jQuery
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 jQuery
jQuery插件jsonview展示json数据
May 26 jQuery
jQuery AJAX与jQuery事件的分析讲解
Feb 18 jQuery
JQuery Ajax跨域调用和非跨域调用问题实例分析
Apr 16 jQuery
jQuery层叠选择器用法实例分析
Jun 28 jQuery
JQuery中DOM节点的操作与访问方法实例分析
Dec 23 jQuery
JS+JQuery实现无缝连接轮播图
Dec 30 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
PHP连接access数据库
2008/03/27 PHP
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
php编写批量生成不重复的卡号密码代码
2015/05/14 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
Yii2 GridView实现列表页直接修改数据的方法
2016/05/16 PHP
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
javaScript 页面自动加载事件详解
2014/02/10 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
jQuery对象的selector属性用法实例
2014/12/27 Javascript
通过JS和PHP两种方法判断用户请求时使用的浏览器类型
2016/09/01 Javascript
JavaScript装饰器函数(Decorator)实例详解
2017/03/30 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
2017/11/28 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
基于JS实现web端录音与播放功能
2019/04/17 Javascript
js实现双人五子棋小游戏
2020/05/28 Javascript
Python实现遍历数据库并获取key的值
2015/05/17 Python
Python进程间通信 multiProcessing Queue队列实现详解
2019/09/23 Python
python使用配置文件过程详解
2019/12/28 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
CSS类名支持中文命名的示例
2014/04/04 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
初一生物教学反思
2014/01/18 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
社区法制宣传日活动总结
2015/05/05 职场文书
初中语文教学随笔
2015/08/15 职场文书
导游词之镇江焦山
2019/11/21 职场文书