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插件FusionCharts实现的Marimekko图效果示例【附demo源码】
Mar 24 jQuery
jQuery实现简单的手风琴效果
Apr 17 jQuery
jquery实现一个全局计时器(商城可用)
Jun 30 jQuery
jquery.uploadView 实现图片预览上传功能
Aug 10 jQuery
bootstrap+jquery项目引入文件报错的解决方法
Jan 22 jQuery
jQuery实现鼠标响应式淘宝动画效果示例
Feb 13 jQuery
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 jQuery
Jquery让form表单异步提交代码实现
Nov 14 jQuery
jQuery实现王者荣耀手风琴效果
Jan 17 jQuery
jQuery 淡入/淡出效果函数用法分析
May 19 jQuery
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
May 29 jQuery
jquery插件实现图片悬浮
Apr 16 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
通过文字传递创建的图形按钮
2006/10/09 PHP
php自动获取目录下的模板的代码
2010/08/08 PHP
php获取汉字首字母的函数
2013/11/07 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
jQuery 获取URL参数的插件
2010/03/04 Javascript
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
一句jQuery代码实现返回顶部效果(简单实用)
2016/12/28 Javascript
JavaScript自定义分页样式
2017/01/17 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
2017/06/14 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
利用Vue实现移动端图片轮播组件的方法实例
2017/08/23 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
TensorFlow安装及jupyter notebook配置方法
2017/09/08 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
python中使用 xlwt 操作excel的常见方法与问题
2019/01/13 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
Python破解BiliBili滑块验证码的思路详解(完美避开人机识别)
2020/02/17 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
西班牙第一的网上药房:PromoFarma.com
2017/04/17 全球购物
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
《狮子和兔子》教学反思
2014/03/02 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
python识别围棋定位棋盘位置
2021/07/26 Python
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL