js案例:小球碰壁反弹

news2025/5/13 5:40:22

目录

一.效果预览图​编辑

 解析

二.完整代码 

代码讲解

html部分

js部分


一.效果预览图

 解析

   这个效果是为了以后(过段时间会发的一个小游戏)做js小游戏做准备的,基本结构是,定义两个div盒子,小盒子设置成圆球形状,使其在大盒子中运动且不会跑到盒子外面去。

二.完整代码 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>小球碰撞</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #wp{
            width: 600px;
            height: 400px;
            background: pink;
            margin: 50px auto;
            position: relative;
        }
        #xq{
            width: 40px;
            height: 40px;
            background-color: rgb(35, 202, 214);
            border-radius: 50%;
            position: absolute;
            top: 0;
            left: 0;
        }
    </style>
</head>
<body>
    <div id="wp">
        <div id="xq"></div>
    </div>
</body>
</html>
<script>
  let xq = document.getElementById('xq')
  //设置水平方向的初始值
  let l = 0;
  //设置水平方向的增量
  let lz = 1
  //设置垂直方向的初始值
  let t = 0;
  //设置垂直方向的增量
  let tz = 1;
  //设置计时器名称
  let timmer;

  //设置计时器
  timmer = setInterval(function(){
    //水平方向移动
    l+=lz
    //垂直方向移动
    t+=tz
    //把运动值赋给xq盒子
    xq.style.left = `${l}px`
    xq.style.top = `${t}px`
    //if判断盒子位置,当xp移动到外面大盒子边缘时,使其想想法方向移动
    if (l>=560) {
        //当小盒子的移动距离大于等于大盒子的宽度时,使其转换方向
        lz = -1;
    }
    if (l<=0) {
        lz = 1
    }
    if (t>=360) {
        tz = -1
    }
    if (t<=0) {
        tz = 1
    }
  },10)

</script>

代码讲解

html部分

<!DOCTYPE html>
<html>
<head>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        #wp {
            width: 600px;
            height: 400px;
            background: pink;
            margin: 50px auto;
            position: relative;
        }
        #xq {
            width: 40px;
            height: 40px;
            background-color: rgb(35, 202, 214);
            border-radius: 50%;
            position: absolute;
            top: 0;
            left: 0;
        }
    </style>
</head>
<body>
    <div id="wp">
        <div id="xq"></div>
    </div>
</body>
</html>

这部分是HTML和CSS代码,用于定义页面结构和样式。以下是逐行解释:

  1. <!DOCTYPE html>: 这是HTML文档类型的声明,指定了文档类型为HTML。
  2. <html>: HTML文档的根元素。
  3. <head>: 包含了文档的元数据和引用的外部资源。
  4. <style>: 定义了内部样式表,用于设置页面元素的样式。
  5. *: 通配符选择器,表示匹配所有元素。
  6. margin: 0; padding: 0;: 将所有元素的外边距和内边距设置为0,去除默认样式的边距和内边距。
  7. #wp: ID选择器,选中ID为"wp"的元素。
  8. width: 600px; height: 400px;: 设置宽度为600像素,高度为400像素。
  9. background: pink;: 设置背景颜色为粉色。
  10. margin: 50px auto;: 设置元素的外边距为50像素,并水平居中对齐。
  11. position: relative;: 设置元素的定位方式为相对定位。
  12. #xq: ID选择器,选中ID为"xq"的元素。
  13. width: 40px; height: 40px;: 设置宽度为40像素,高度为40像素。
  14. background-color: rgb(35, 202, 214);: 设置背景颜色为RGB值(35, 202, 214),即青色。
  15. border-radius: 50%;: 设置圆角边框半径为50%,使元素呈现圆形。
  16. position: absolute;: 设置元素的定位方式为绝对定位。
  17. top: 0; left: 0;: 将元素定位在父元素的左上角。
  18. 以上代码定义了一个矩形框(ID为"wp")和一个圆形小球(ID为"xq"),并设置了它们的样式。

js部分

<script>
  let xq = document.getElementById('xq')
  //设置水平方向的初始值
  let l = 0;
  //设置水平方向的增量
  let lz = 1
  //设置垂直方向的初始值
  let t = 0;
  //设置垂直方向的增量
  let tz = 1;
  //设置计时器名称
  let timmer;

  //设置计时器
  timmer = setInterval(function(){
    //水平方向移动
    l+=lz
    //垂直方向移动
    t+=tz
    //把运动值赋给xq盒子
    xq.style.left = `${l}px`
    xq.style.top = `${t}px`
    //if判断盒子位置,当xp移动到外面大盒子边缘时,使其想想法方向移动
    if (l>=560) {
        //当小盒子的移动距离大于等于大盒子的宽度时,使其转换方向
        lz = -1;
    }
    if (l<=0) {
        lz = 1
    }
    if (t>=360) {
        tz = -1
    }
    if (t<=0) {
        tz = 1
    }
  },10)

</script>

这部分是JavaScript代码,实现了小球在矩形框内自动来回移动的效果。以下是逐行解释:

  1. let xq = document.getElementById('xq'): 使用 document.getElementById 方法获取ID为"xq"的元素,并将其赋值给变量xq
  2. let l = 0;: 设置水平方向的初始位置为0。
  3. let lz = 1;: 设置水平方向的增量为1,表示初始方向向右移动。
  4. let t = 0;: 设置垂直方向的初始位置为0。
  5. let tz = 1;: 设置垂直方向的增量为1,表示初始方向向下移动。
  6. let timmer;: 声明一个变量timmer,用于存储计时器的标识。
  7. timmer = setInterval(function(){...}, 10): 使用 setInterval 函数创建一个计时器,每隔10毫秒执行一次回调函数。
  8. 回调函数内部逻辑:
    • l += lz;: 更新水平方向的位置,根据增量调整位置。
    • t += tz;: 更新垂直方向的位置,根据增量调整位置。
    • xq.style.left = ${l}px;: 将水平方向的位置应用到小球元素的left样式属性上。
    • xq.style.top = ${t}px;: 将垂直方向的位置应用到小球元素的top样式属性上。
    • if语句块:
      • 当小球移动到大盒子的右边缘时(位置大于等于560),将水平方向的增量设置为-1,使小球向左移动。
      • 当小球移动到大盒子的左边缘时(位置小于等于0),将水平方向的增量设置为1,使小球向右移动。
      • 当小球移动到大盒子的底部边缘时(位置大于等于360),将垂直方向的增量设置为-1,使小球向上移动。
      • 当小球移动到大盒子的顶部边缘时(位置小于等于0),将垂直方向的增量设置为1,使小球向下移动。

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

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

相关文章

单片机(二)使用位移 让灯亮

一&#xff1a;硬件电路 P2 口&#xff1a; P2.0~ P2.7 是这些 I0 口 LED 阳极接 电源 &#xff0c; P20 口 为低电平 可以让 LED灯 亮 二&#xff1a;软件实现部分 两种 ① 通过循环 来展示从左 到右 #include "reg52.h"#define LED_PORT P2 // 定义单片机的P2端…

利用语义属性来进行时序知识图谱的补全

目录 摘要部分 张量分解 超平面投影 超平面 投影 超平面投影的应用 数学表示 正则化 引言部分 TKG嵌入方法 举例 相关工作 SKG嵌入方法 评判事实合理性的评分函数模型 平移模型 TransE TransE例子 张量分解模型 RESCAL 神经网络模型 TKG嵌入方法 外推 插…

queue ide is not exists in YARN

报错内容: 2023-08-17 17:30:31.342 [ERROR] [BaseTaskScheduler-Thread-7 ] o.a.l.o.s.a.AsyncExecTaskRunnerImpl (79) [run] - Failed to execute task astJob_1_codeExec_1 org.apache.linkis.orchestrator.ecm.exception.ECMPluginErrorException: errCode:…

【实训项目】“优教”APP设计

1.设计摘要 随着科技的发展和信息技术的日益普及,很多家长抱着望子成龙的心态,不遗余力的为孩子找合适的家教&#xff0c;而很多在校大学生也希望通过当家教增加一点经济收入,基于这一点家教服务平台将提供更好的管理系统,使家长更加了解学生,也通过这个平台使家教管理者对于大…

Spring Cloud Alibaba-Nacos Discovery--服务治理

1 服务治理介绍 先来思考一个问题 通过上一章的操作&#xff0c;我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址 &#xff08;ip&#xff0c;端口&#xff09;等硬编码到了代码中&#xff0c;这种做法存在许多问题&#xff1a; 一旦服务提供者地址变化&am…

如何将PC电脑变成web服务器:将内网主机映射到外网实现远程访问

如何将PC电脑变成web服务器&#xff1a;将内网主机映射到外网实现远程访问 我是艾西&#xff0c;今天跟大家分享内容还是比较多人问的一个问题&#xff1a;如何将PC电脑变成web服务器。内网主机作为web服务器&#xff0c;内容包括本地内网映射、多层内网映射解决方案、绕过电信…

[Linux]进程概念

[Linux]进程概念 文章目录 [Linux]进程概念进程的定义进程和程序的关系Linux下查看进程Linux下通过系统调用获取进程标示符Linux下通过系统调用创建进程-fork函数使用 进程的定义 进程是程序的一个执行实例&#xff0c;是担当分配系统资源&#xff08;CPU时间&#xff0c;内存…

android 重新签名bat

1.新建txt&#xff0c;修改后缀改为bat文件 sign.bat echo off:apk未签名文件名称 set apk_unsign"":apk签名文件名称 set apk_sign"":设置文件 set settingFileE:\apk\bat\sign\setting_sign.txt:读取settingFile第0行的 apk_unsign 值 for /f "to…

DETR-《End-to-End Object Detection with Transformers》论文精读笔记

DETR&#xff08;基于Transformer架构的目标检测方法开山之作&#xff09; End-to-End Object Detection with Transformers 参考&#xff1a;跟着李沐学AI-DETR 论文精读【论文精读】 摘要 在摘要部分作者&#xff0c;主要说明了如下几点&#xff1a; DETR是一个端到端&am…

Python入门之最基础1.0

记录学渣的学习过程 python入门学习1.0 前言一、 python学习之初需要注意的三个问题二、python所有内置函数的查看方式dir(__builtins__) 总结 前言 一、 python学习之初需要注意的三个问题 二、python所有内置函数的查看方式 dir(builtins) 总结 做自己的时候是发光的

【OpenMp】openmp库的基本语法

目录 OpenMP并行运行结构图句式parallel制导命令隐式同步 parallel的for命令parallel的for命令静态调度dynamic参数guided参数 sections制导指令single制导指令解决多线程竞争临界区矩阵所有元素1任务池同步点shared和private单语句原子操作#pragma omp atomic复杂样例程序 Ope…

【day8】驱动

作业&#xff1a;通过GPIO子系统编写LED灯的驱动&#xff0c;应用程序测试 在led驱动中设置一个定时器&#xff0c;实现底板三盏灯一秒亮一秒灭 1.找引脚 led1---->gpioz组5号引脚 led2---->gpioz组6号引脚 led3---->gpioz组7号引脚 2.加设备树节点 //led的设备树节点…

Nginx中location语法有哪些?【杭州多测师_王sir】

1、location 介绍location是Nginx中的块级指令(block directive)&#xff0c;location指令的功能是用来匹配不同的url请求&#xff0c;进而对请求做不同的处理和响应&#xff0c;这其中较难理解的是多个location的匹配顺序&#xff0c;本文会作为重点来解释和说明。开始之前先明…

【Linux】GNOME图形化界面安装

Linux下具有多种图形化界面&#xff0c;每种图形化界面具有不同的功能&#xff0c;在这里我们安装的是GNOME。 1、 挂载yum源 挂载之前首先确保使用ISO映像文件 2.挂载之前先在/mnt下面创建一个cdrom目录用来作为挂载点目录 挂载完成之后那么就要去修改yum源了 Vi /etc/yum.r…

IntelliJ IDEA maven配置,设置pom.xml的配置文件

IntelliJ IDEA项目&#xff0c;选择 文件 设置&#xff0c;弹窗 构建、执行、部署 构建工具 Maven就可以 maven配置好以后&#xff0c;在pom.xml的配置文件中就可以设置对应的jar包了&#xff0c;这样构建的时候自动需要的jar&#xff0c;在项目中导入即 需要的jar包设置在po…

数据驱动工作效率提升的5个层次—以PreMaint设备数字化平台为例

在现代工业领域&#xff0c;数据分析已成为提升工作效率和优化生产的不可或缺的工具。从描述性分析到规范性分析&#xff0c;数据分析逐步揭示了设备运行和维护的深层信息&#xff0c;帮助企业更明智地做出决策。本文将以PreMaint设备数字化平台为例&#xff0c;探讨工业数据驱…

平面设计除了PS还有哪些工具推荐

平面设计在我们的日常生活中无处不在。无论是传统媒体还是网络媒体&#xff0c;我们每天都会沉浸在大量的平面设计作品中。因此&#xff0c;我们或多或少会对设计有自己的看法。其实&#xff0c;即使是非专业人士&#xff0c;市场上也有很多平面设计软件&#xff0c;本文盘点了…

docker 搭建私有仓库和制作镜像

目录 1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。 1.1 启动mysql镜像 1.2 启动owncloud镜像 1.3 浏览器访问 1.4 总结 2、安装搭建私有仓库 Harbor 2.1 下载docker-compose并赋予执行权限 2.2 磁盘挂载&#xff0c;保存harbor 2.3 修改配置文件…

最新的单机Lustre文件系统的安装

1.单机Lustre的搭建&#xff1a; 主机名IP地址内存添加的共享磁盘大小Centos7.9-test机192.168.10.30/241G20G 1.安装E2fsprogs包 下载OSS服务器所需要的包&#xff1a;E2fsprogs包只是在Ext4的原版RPM包基础上增加了对Lustre⽀持 mkdir ~/e2fsprogs && cd ~/e2fspro…