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 相关文章推荐
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
Jquery EasyUI $.Parser
Jun 02 jQuery
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
基于jQuery Easyui实现登陆框界面
Jul 10 jQuery
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
jQuery中常用动画效果函数知识点整理
Aug 19 jQuery
使用jquery Ajax实现上传附件功能
Oct 23 jQuery
jQuery实现的3D版图片轮播示例【滑动轮播】
Jan 18 jQuery
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
Jun 10 jQuery
jQuery实现消息弹出框效果
Dec 10 jQuery
jQuery实现可编辑的表格
Dec 11 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你的验证码安全码?
2007/01/02 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
PHP中使用数组指针函数操作数组示例
2014/11/19 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
让JavaScript和其它资源并发下载的方法
2014/10/16 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
angular2使用简单介绍
2016/03/01 Javascript
JavaScript绑定事件监听函数的通用方法
2016/05/14 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
jquery 实现复选框的全选操作实例代码
2017/01/24 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
webpack3+React 的配置全解
2017/08/21 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
Python学习入门之区块链详解
2017/07/25 Python
Tensorflow环境搭建的方法步骤
2018/02/07 Python
python钉钉机器人运维脚本监控实例
2019/02/20 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
Python实现仿射密码的思路详解
2020/04/23 Python
pandas 像SQL一样使用WHERE IN查询条件说明
2020/06/05 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
广州地球村科技数据库题目
2016/04/25 面试题
垃圾回收的优点和原理
2014/05/16 面试题
纠纷协议书
2014/04/16 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
工程承包协议书
2014/10/20 职场文书
四风问题自查自纠工作情况报告
2014/10/28 职场文书
机修车间主任岗位职责
2015/04/08 职场文书
2015年招生工作总结
2015/05/04 职场文书
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
vue使用localStorage持久性存储实现评论列表
2022/04/14 Vue.js