原生js之dom与setInterval/settimeout结合实现动画

news2025/1/19 14:22:35

动画效果如何实现

在这里插入图片描述
在这里插入图片描述
那么好,这次我们要讲解的就是利用dom事件和定时方法来实现一个简单的动画效果.

实现这个效果,一共分为三个步骤:
1.实现效果
2.实现点击切换位置
3.实现动画效果

样式

两个div,一个父div,一个子div,用position+relative+absolute定位实现左上角效果,两个按钮

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			#container {
				width: 300px;
				height: 300px;
				background-color: blue;
				position: relative;
			}

			#content {
				width: 50px;
				height: 50px;
				background-color: red;
				position: absolute;
				left: 0;
				top: 0;
			}
		</style>
	</head>
	<body>
		<div id="container">
			<div id="content"></div>
		</div>
		<button onclick="dianji()">setTimeout</button>
		<button onclick="jidian()">setInterval</button>
	</body>
</html>

dom切换位置

切换位置本质就是切换position的样式,用到的方法就是

document.getElementById("id").style.left='content'
		<style>
			#container {
				width: 300px;
				height: 300px;
				background-color: blue;
				position: relative;
			}

			#content {
				width: 50px;
				height: 50px;
				background-color: red;
				position: absolute;
				left: 0;
				top: 0;
			}
		</style>
<body>
		<div id="container">
			<div id="content"></div>
		</div>
		<button onclick="dianji()">setTimeout</button>
		<button onclick="jidian()">setInterval</button>
		<script>
			function dianji(){
				document.getElementById('content').style.left='250px'
				document.getElementById('content').style.top='250px'
			}
		</script>
</body>

当点击的时候,我们通过dom文档对象的id的style来改变具体的样式,这里我们改的是absolute中的left和top.

定时器实现动态移动位置

setTimeout实现

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			#container {
				width: 300px;
				height: 300px;
				background-color: blue;
				position: relative;
			}

			#content {
				width: 50px;
				height: 50px;
				background-color: red;
				position: absolute;
				left: 0;
				top: 0;
			}
		</style>
	</head>
	<body>
		<div id="container">
			<div id="content"></div>
		</div>
		<button onclick="dianji()">setTimeout</button>
		<button onclick="jidian()">setInterval</button>
		<script>
			let temp=0
			function dianji(){
				temp+=1;
				setTimeout(()=>{
					if(temp==1){
						document.getElementById('content').style.left=0
						document.getElementById('content').style.top=0
					}
					if(temp<=250){
						document.getElementById('content').style.left=temp+'px'
						document.getElementById('content').style.top=temp+'px'
						dianji()
					}else{
						temp=0;
						clearTimeout(temp)
					}
				},5)
			}
		</script>
	</body>
</html>

setInterval定时

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style>
			#container {
				width: 300px;
				height: 300px;
				background-color: blue;
				position: relative;
			}

			#content {
				width: 50px;
				height: 50px;
				background-color: red;
				position: absolute;
				left: 0;
				top: 0;
			}
		</style>
	</head>
	<body>
		<div id="container">
			<div id="content"></div>
		</div>
		<button onclick="dianji()">setTimeout</button>
		<button onclick="jidian()">setInterval</button>
		<script>
			let temp = 0

			function dianji() {
				temp += 1;
				setTimeout(() => {
					if (temp <= 250) {
						document.getElementById('content').style.left = temp + 'px'
						document.getElementById('content').style.top = temp + 'px'
						dianji()
					} else {
						temp = 0;
						clearTimeout(temp)
					}
				}, 5)
			}

			function jidian() {
				let id = setInterval(frame, 5)

				function frame() {
					temp += 1;
					if (temp <= 250) {
						document.getElementById('content').style.left = temp + 'px'
						document.getElementById('content').style.top = temp + 'px'
					} else {
						temp = 0
						clearInterval(id)
					}
				}
			}
		</script>
	</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/982786.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业如何制定实施MES管理系统的预算方案

随着制造业的不断发展&#xff0c;MES生产管理系统逐渐成为制造企业提高生产效率、优化资源利用和提升质量水平的重要工具。制定实施MES管理系统的预算方案是企业在进行MES选型和实施时必须考虑的问题。本文将介绍制定实施MES管理系统预算方案的关键步骤&#xff0c;包括成本构…

数据结构与算法(六)树的入门

树的基本定义 树是我们计算机中非常重要的一种数据结构&#xff0c;同时使用树这种数据结构&#xff0c;可以描述现实生活中的很多事物&#xff0c;例如家谱、单位的组织架构、等等。 树是由n&#xff08;n>1&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做“…

wifi感知技术

前段时间&#xff0c;看到一些短视频&#xff0c;说通过家里的路由器可以远程感知到房间里是否有人。抱着将信将疑的态度&#xff0c;对这门技术进行了探索。 在我的意识里面&#xff0c;传感器一般都是专门的设备&#xff0c;无论是声光电的转换&#xff0c;还是压力&#xf…

LLM - 大模型速递 Baichuan2 快速入门

目录 一.引言 二.模型探索 1.模型下载 2.模型结构 ◆ Baichuan-1-13B 结构 ◆ Baichuan-2-13B 结构 3.模型测试 ◆ Baichuan-2-13B Chat 推理 ◆ Baichuan-2-13B 显存 4.模型量化 ◆ 在线量化 ◆ 离线量化 ◆ 量化效果 5.模型迁移 三.总结 一.引言 昨天百川新…

Vue2面试题100问

Vue2面试题100问 Vue2面试题100问1.简述一下你对Vue的理解2.声明式和命令式编程概念的理解3.Vue 有哪些基本特征4.vue之防止页面加载时看到花括号解决方案有哪几种&#xff1f;5.Vue中v-for与v-if能否一起使用&#xff1f;6.vue中v-if与v-show的区别以及使用场景7.v-on可以监听…

模板多多的BI系统,绝不在可视化大屏制作上多花一秒

如果要花大量时间去调整UI&#xff0c;哪还有时间做分析&#xff1f;别急&#xff0c;奥威BI系统上模板多得是&#xff0c;绝不会让你在可视化大屏UI设置上多花一秒。众所周知&#xff0c;在奥威BI系统上&#xff0c;零基础的人也能一键下载UI模板&#xff0c;自动套用。 奥威…

入门深度学习你不得不关注的小知识:什么是HuggingFace?

入门深度学习你不得不关注的小知识&#xff1a;什么是HuggingFace&#xff1f; 文章目录 入门深度学习你不得不关注的小知识&#xff1a;什么是HuggingFace&#xff1f;来自何方&#xff1f;核心在线平台HuggingFace Spaces社区总结 HuggingFace 是一个专注于自然语言处理&…

基于Python开发的飞机大战小游戏彩色版(源码+可执行程序exe文件+程序配置说明书+程序使用说明书)

一、项目简介 本项目是一套基于Python开发的飞机大战小游戏&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含&#xff1a;项目源码、项目文档等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;…

ESP32下的ble数据notify收发(支持ESP-IDF4.4\ESPIDF5.1)

ESP32下的ble数据notify收发 绪论实现效果ESP32接收ESP32 notify 发送 工程建工程增加属性表特征UUID定义属性声明(枚举)变量值声明数据接收数据发送 实验结果程序demo主程序代码声明 绪论 实现效果 gatt_server_service_table为模板&#xff0c;实现ESP32-S3与手机端蓝牙调试…

Talk | ICCV‘23南洋理工大学博士后李祥泰:面向统一高效的视频分割方法设计

本期为TechBeat人工智能社区第528期线上Talk&#xff01; 北京时间9月6日(周三)20:00&#xff0c;南洋理工大学博士后研究员—李祥泰的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “面向统一高效的视频分割方法设计”&#xff0c;他分享了其在视…

外滩大会今日开幕 近20位“两院”院士、诺贝尔奖和图灵奖得主齐聚

2023 Inclusion外滩大会9月7日在上海黄浦世博园正式开幕。这场以“科技创造可持续未来”为主题的大会为期三天&#xff0c;近20位“两院”院士、诺贝尔奖和图灵奖得主&#xff0c;全球超500位有影响力的科技领军企业和专家学者&#xff0c;将在此带来一场科技、人文和产业的思想…

机器学习笔记:轨迹驻留点 staypoint

1 定义 在轨迹数据分析中&#xff0c;"停留点"&#xff08;Staypoint&#xff09;是一个非常关键的概念&#xff0c;它反映了个体或物体在某一地点的停留行为。通常&#xff0c;在一段时间内&#xff0c;如果一个人或物体在一个较小的地理区域内的移动距离低于某个阈…

成都优优聚专业美团代运营团队!

成都优优聚是一家专业从事美团代运营的公司&#xff0c;为餐饮商家提供全方位的代运营服务。总部位于成都市&#xff0c;拥有一支经验丰富、专业的团队。 作为一家专注于美团代运营的公司&#xff0c;成都优优聚致力于帮助商家提升在美团平台上的曝光率&#xff0c;提高订单量和…

介绍两款生成神经网络架构示意图的工具:NN-SVG和PlotNeuralNet

对于神经网络架构的可视化是很有意义的&#xff0c;可以在很大程度上帮助到我们清晰直观地了解到整个架构&#xff0c;我们在前面的 PyTorch的ONNX结合MNIST手写数字数据集的应用(.pth和.onnx的转换与onnx运行时) 有介绍&#xff0c;可以将模型架构文件(常见的格式都可以)在线上…

LeetCode:二分查找

题目 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 解释: …

小程序引入高德/百度地图坐标系详解

小程序引入高德/百度地图坐标系详解 官网最近更新时间&#xff1a;最后更新时间: 2021年08月17日 高德官网之在原生小程序中使用的常见问题 链接 目前在小程序中使用 高德地图只支持以下功能 &#xff1a;地址描述、POI和实时天气数据 小结&#xff1a;从高德api中获取数…

idea意外退出mac

目录 问题描述 解决过程 问题描述 mac上的idea我很久没用了&#xff0c;之前用的时候还是发布新版的开源项目&#xff0c;这几天再用的时候&#xff0c;就出现了idea意外退出的问题&#xff0c;我上网查找了很久&#xff0c;对于我的问题都没有很好的解决。 解决过程 在寻求…

基于ADS的marx雪崩电路设计-设计实践(射频脉冲源)

基于ADS的marx雪崩电路设计-设计实践&#xff08;射频脉冲源&#xff09; 设计一个ns级别的脉冲源&#xff0c;属于是半路转行的&#xff0c;虽然不了解具体原理但是也可以进行设计。具体的设计理论以及优化方法将在之后进行讨论. 参考文献&#xff1a;基于Marx电路的亚纳秒级…

Acwing算法心得——街灯(差分)

大家好&#xff0c;我是晴天学长&#xff0c;差分广泛用于一段范围的加减运算&#xff0c;可以优化时间复杂度&#xff0c;需要的小伙伴请自取哦&#xff01;如果觉得写的不错的话&#xff0c;可以点个关注哦&#xff0c;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1…

log4j2Scan.jar在log4j漏洞复现中的使用

首先在burp中安装该插件 装完后浏览器打开一个有log4j漏洞的网站 不需要开启拦截&#xff0c;插件就可以自动检测该网站有没有log4j的漏洞 有号说明发现了漏洞