JavaScript 动画_jquery 动画

JavaScript 动画_jquery 动画JavaScript—动画一、动画原理通过定时器setInterval不断移动盒子位置。步骤:获得盒子当前位置;让盒子在当前位置加上1个移动距离;利用定时器不断重复这个操作;结束定时器。注意:元素需要加定位。例:HTML代码:<!DOCTYPEhtml><html> <head> <metacharset=”utf-8″/> <title></title> </head>

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

JavaScript动画

一、动画原理

通过定时器setInterval不断移动盒子位置。

步骤:

  1. 获得盒子当前位置;
  2. 让盒子在当前位置加上1个移动距离;
  3. 利用定时器不断重复这个操作;
  4. 结束定时器。

注意:元素需要加定位。

例:

HTML代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		
	</head>
		<div class="move">
			
		</div>
		<script src="js/js.js"></script>
	</body>
</html>

CSS代码:

.move{ 
   
	width: 100px;
	height: 100px;
	background-color: pink;
	position: absolute;
	left: 0;
}

JS代码:

var div = document.querySelector('.move');		//获取需要移动的元素
var timer = setInterval(function() { 
   			//新建一个定时器
	if (div.offsetLeft >= 400) { 
   				//停止定时器的条件:移动距离大于等于400px时停止
		clearInterval(timer);					//停止定时器
	}
	div.style.left = div.offsetLeft + 1 + 'px';	//定时器执行的操作:每1毫秒移动一个像素
}, 1)

二、简单动画函数封装

注意函数需要传递的2个参数:动画对象移动的距离

function animate(obj,target) { 
   
	var timer = setInterval(function() { 
   
		if (obj.offsetLeft >= target) { 
   
			clearInterval(timer);
		}
		obj.style.left = obj.offsetLeft + 1 + 'px';
	}, 1)
}
var div = document.querySelector('.move');	//获取元素
animate(div,300);							//调用函数

三、给不同元素记录不同定时器

function animate(obj,target) { 
   
	clearInterval(obj.timer);				//一个元素同时只能存在一个定时器
	obj.timer = setInterval(function() { 
   	//给不同元素添加定时器
		if (obj.offsetLeft >= target) { 
   
			clearInterval(obj.timer);
		}
		obj.style.left = obj.offsetLeft + 1 + 'px';
	}, 1)
}

四、缓动效果原理

缓动动画就是让元素运动速度有所变化,如常见的“慢慢停下来”。

思路:

  1. 让盒子每次移动的距离变小,速度就会慢下来;
  2. 核心算法:(目标值 – 现在的位置)/ 10 作为每次移动的距离步长;
function animate(obj,target) { 
   
	clearInterval(obj.timer);
	obj.timer = setInterval(function() { 
   
		var step = (target - obj.offsetLeft) / 10;
		step = step > 0 ? Math.ceil(step) : Math.floor(step);
		if (obj.offsetLeft == target) { 
   
			clearInterval(obj.timer);
		}
		obj.style.left = obj.offsetLeft + step + 'px';
	}, 15)
}

五、动画函数添加回调函数

回调函数原理:函数可以作为一个参数。将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数,这个过程叫做回调

回调函数写的位置:定时器结束位置。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181692.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 第二课:基于树莓派的10个经典项目(树莓派能做什么)[通俗易懂]

    第二课:基于树莓派的10个经典项目(树莓派能做什么)[通俗易懂]第一课,我们解决了以下几个问题,即:1)树莓派长什么样2)为什么叫树莓派3)树莓派来自哪个国家4)树莓派的创始人是谁5)树莓派的使命6)树莓派的销量7)树莓派基金组织第二课:我们来了解树莓派能做什么树莓派能做什么,莫过于来看一遍树莓派的10个经典项目的视频了,…

    2022年6月10日
    50
  • mysql的innodb与myisam(oracle主键和唯一索引的区别)

    InnoDB和MyISAM是很多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,5.7之后就不一样了1、事务和外键InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能MyISAM管理非事务表。它提供高速存储和检索,以及全文搜索…

    2022年4月14日
    73
  • 一文彻底搞懂webpack devtool

    一文彻底搞懂webpack devtool为什么需要SourceMap首先根据谷歌开发者文档的介绍,SourceMap一般与下列类型的预处理器搭配使用:转译器(Babel) 编译器(TypeScript) Minifiers(UglifyJS)为什么呢?因为通常我们运行在浏览器中的代码是经过处理的,处理后的代码可能与开发时代码相差很远,这就导致开发调试和线上排错变得困难。这时SourceMap就登场了,有了它浏览器就可以从转换后的代码直接定位到转换前的代码。在webpack中,可以通过devtool选项来配置SourceMap

    2022年9月27日
    3
  • MyEclipse10安装SVN插件的几种方法

    MyEclipse10安装SVN插件的几种方法方法一:直接解压下载SVN插件:site-1.6.18.ziphttps://github.com/subclipse/subclipse解压后将features文件和plugins文件拷贝至:D:\MyEclipse\MyEclipse10\dropins(MyEclipse的安装目录)重启MyEclipse即可出现SVN!方法二:在线安装打开HELP->MyEclipseConfi

    2022年7月21日
    11
  • 水晶易表 Xcelsius 2008 安装指南 完美支持office2010(亲手体验)

    水晶易表 Xcelsius 2008 安装指南 完美支持office2010(亲手体验)

    2021年12月15日
    61
  • linux nginx启动停止命令_重启后没有nginx

    linux nginx启动停止命令_重启后没有nginx目录一、启动/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf二、停止1、从容停止(1)查看进程号:ps-ef|grepnginx(2)杀死进程:kill-quitxxxx2、快速停止(1)查看进程号:ps-ef|grepnginx(2)杀死进程:kill-termxxxx/kill-intxxxx3、强制停止:pkill-9nginx三、重启1…

    2022年10月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号