使用JS实现图片的飘浮运动

2023-10-12 18:30

本文主要是介绍使用JS实现图片的飘浮运动,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先贴上准备飘浮的图片镇楼:PUBG

下面准备让这张图片在屏幕里面进行飘浮运动,先贴上HTML和CSS代码和运行图:

<html><head><meta charset="UTF-8"><title></title><style type="text/css">/*悬浮框  */#float {position: absolute;z-index: 1;}/*图片大小*/#floatImg {width: 250px;height: 150px;}</style></head><body><div id="float"><img id="floatImg" alt="图片未找到" src="img/pubg.jpg"></div></body>
</html>

介绍一下我的思路,设置6个全局变量,分别记录图片在X轴、Y轴上的移动距离、方向以及速度,接着进行图片的位置改变方法,在方法中, 我们首先得到屏幕的大小和照片的大小,设置图片的起始位置,接着进行位置的移动,移动过后再判断图片是否遇到四周墙壁,如果遇到,使其移动方向进行改变,并且移动距离根据其位置的不同设置其为0或者最大移动数(屏幕大小-图片大小),最后设置一个定时器使其相隔50毫秒进行一次方法执行。这样,飘浮的图片效果就做出来了。

下面附上JS代码进行参考学习:

            //定义全局变量var moveX = 0; //X轴方向上移动的距离var moveY = 0; //Y轴方向上移动的距离var stepX = 5; //图片X轴移动的速度var stepY = 6; //图片Y轴移动的速度var directionX = 0; //设置图片在X轴方向上的移动方向   0:向右  1:向左var directionY = 0; //设置图片在Y轴方向上的移动方向   0:向下  1:向上function changePos() {var img = document.getElementById("float"); //获得图片所在层的IDvar height = document.documentElement.clientHeight; //浏览器的高度var width = document.documentElement.clientWidth; //浏览器的宽度var imgHeight = document.getElementById("floatImg").height; //飘浮图片的高度var imgWidth = document.getElementById("floatImg").width; //瓢浮图片的宽度//设置飘浮图片距离浏览器左侧位置img.style.left = parseInt(moveX + document.documentElement.scrollLeft) + "px";//设置飘浮图片距离浏览器右侧位置img.style.top = parseInt(moveY + document.documentElement.scrollTop) + "px";//设置图片在Y轴上的移动规律if(directionY == 0) {//飘浮图片在Y轴方向上向下移动moveY += stepY;} else {//飘浮图片在Y轴方向上向上移动moveY -= stepY;}if(moveY < 0) {//如果飘浮图片飘浮到顶端的时候,设置图片在Y轴方向上向下移动directionY = 0;moveY = 0;}if(moveY > (height - imgHeight)) {//如果飘浮图片飘浮到浏览器底端的时候,设置图片在Y轴方向上向上移动directionY = 1;moveY = (height - imgHeight);}//设置图片在X轴上的移动规律if(directionX == 0) {moveX += stepX;} else {moveX -= stepX;}if(moveX < 0) {//如果飘浮图片飘浮到浏览器左侧的时候,设置图片在X轴方向上向右移动directionX = 0;moveX = 0;}if(moveX > (width - imgWidth)) {//如果飘浮图片飘浮到浏览器右侧的时候,设置图片在X轴方向上向左移动directionX = 1;moveX = (width - imgWidth);}}setInterval("changePos()", 50);

 

这篇关于使用JS实现图片的飘浮运动的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197665

相关文章

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

mybatis执行insert返回id实现详解

《mybatis执行insert返回id实现详解》MyBatis插入操作默认返回受影响行数,需通过useGeneratedKeys+keyProperty或selectKey获取主键ID,确保主键为自... 目录 两种方式获取自增 ID:1. ​​useGeneratedKeys+keyProperty(推

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Python通用唯一标识符模块uuid使用案例详解

《Python通用唯一标识符模块uuid使用案例详解》Pythonuuid模块用于生成128位全局唯一标识符,支持UUID1-5版本,适用于分布式系统、数据库主键等场景,需注意隐私、碰撞概率及存储优... 目录简介核心功能1. UUID版本2. UUID属性3. 命名空间使用场景1. 生成唯一标识符2. 数

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr