弹弹弹,多彩小球弹跳

纯JS实现小球在页面跳动/弹弹弹(有注释) 小球在页面跳动 实现方法用了transform:translate(x,y); 即在当前位置进行移动,只需动态改变x和y的值就可以实现移动 点我查看页面效果(点击小球开始跳动) JS //获取div节点 let divEle = document.getElementsByTagName("div")[0]; //在js里给小球设置样式 divEle.style.width = 50 + "px"; divEle.style.height = 50 + "px"; divEle.style.backgrou 阅读详情

JavaScript小球掉落弹起

效果图:

在这里插入图片描述

小球对象类:
export default class Ball{
    elem;
    speed=1;
    y=-50;
    constructor(){
        this.elem=this.createElem();
    }
    // 单例模式,确保只有一个元素
    createElem(){
        if(this.elem) return this.elem;
        let div=document.createElement("div");
        Object.assign(div.style,{
            width:"50px",
            height:"50px",
            backgroundColor:Ball.randomColor(),
            borderRadius:"50%",
            position:"absolute",
            top:"-50px"
        });
        return div;
    }
    // 随机颜色
    static randomColor(){
        var col="#";
        for(var i=0;i<6;i++){
            col+=Math.floor(Math.random()*16).toString(16);
        }
        return col;
    }
    appendTo(select){
        // 对象的构造函数就是该对象的类别
        if(select.constructor===String)document.querySelector(select).appendChild(this.elem);
        else if(select instanceof HTMLElement) select.appendChild(this.elem);
    }
    setX(x){
        this.elem.style.left=x+"px";
    }
    // 控制小球的上下跳跃, 当小球遇到边界(上下),就重新设定参数回到最顶上,循环往下落。
    update(){
        if(this.y>400) this.speed=-this.speed;
        this.speed+=0.2;
        this.y+=this.speed;
        this.elem.style.top=this.y+"px";
    }
}
Utils方法库使用的随机数方法:
    static random(min,max){
        return Math.floor(Math.random()*(max-min))+min;
    }
html实例化小球对象代码:
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>Document</title>
  </head>
  <body>
    <script type="module">
      import Ball from "./js/Ball.js";
      import Utils from "./js/Utils.js";
      // 判断某个对象是不是HTML标签元素: console.log(document.body instanceof HTMLElement)
      // fps 帧频  60fps  1000
      var ids,
        arr = [],
        time = 30;
      init();
      function init() {
        createBall();
        animation();
      }

      function createBall() {
        var ball = new Ball();
        ball.appendTo("body");
        //工具类中的随机数控制小球的落点的横坐标
        ball.setX(Utils.random(0, 1440));
        arr.push(ball);
      }

      function animation() {
        requestAnimationFrame(animation);
        // window.requestAnimationFrame()方法告诉浏览器执行动画并请求浏览器在下一次重绘之前调用指定的函数来更新动画,
        // 该方法使用一个回调函数,作为参数,这个回调函数会在浏览器重绘之前调用。
        allUpdate();
        intervalCreate();
      }
      //   随机控制小球数量
      function intervalCreate() {
        time--;
        if (time > 0) return;
        time = Utils.random(20, 40);
        for (var i = 0; i < Utils.random(1, 4); i++) {
          createBall();
        }
      }
      //   遍历所有的小球,开始移动
       
      function allUpdate() {
        for (var i = 0; i < arr.length; i++) {
          arr[i].update();
        }
      }
    </script>
  </body>
</html>

HTML5之canvas彩色动感小球 一:代码 &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;title&gt;小球&lt;/title&gt; &lt;style type="text/css"&gt; canvas{ border: 2px so 阅读详情

相关推荐

PLC与变频器联动控制:从开关量、模拟量到通讯的接线与编程实战

在工业自动化系统中,电机调速控制是核心需求之一,其关键在于实现可编程逻辑控制器(PLC)与变频器之间的可靠联动。其基本原理是通过PLC输出控制信号,由变频器接收并驱动电机按设定速度运行。这项技术的核心价值在于实现电机的软启停、精确调速与节能控制,广泛应用于风机、水泵、传送带及精密张力控制等场景。其中,开关量控制以其接线简单、抗干扰能力强的特点,成为基础且可靠的方案;而模拟量控制则能实现无级平滑调速,满足更高精度的工艺要求。本文以西门子、三菱等主流品牌为例,深入解析了这两种主流控制方式的硬件接线、参数设置与梯

1269

vue实现文件下载功能

对于Vue中实现一般的下载功能很简单,一般为了方便,在项目文件的api.js配置文件中添加一个下载方法即可,这里以以下download方法为例。将download这部分方法添加到api.js文件中即可。 api.js配置 export default { // 下载关键代码 download(url, params) { return new Promise((resolve, reject) => { axios({ // 和后端协商好下载方法po

RequesToGod的博客 1万+

ANSYS CFX 自定义函数数据导入实战指南

本文详细介绍了在ANSYS CFX中实现自定义函数数据导入的完整流程与实战技巧。通过具体案例,指导用户如何将外部实验或计算数据(如材料属性随温度变化)导入CFX,创建可调用的函数,并正确关联到仿真模型中,从而显著提升仿真的真实性与准确性。

v6b7n8m9q0的博客 703

vue利用a标签点击下载保存图片

vue利用a标签点击下载保存图片 想不调用接口直接下载保存图片,翻csdn把手都翻出血了。 亲测一行代码搞定: 把图片地址设在download属性上,而不是放在href中: 关键代码: <a href="" :download="item.src" class="download"></a> <template> <div class="contain"> <el-dialog title="图片预览" :visible.sync="

RequesToGod的博客 2452

Ubuntu 20.04下大陆ARS408毫米波雷达点云数据采集与RVIZ实时可视化全流程解析

本文详细解析了在Ubuntu 20.04系统下,如何实现大陆ARS408毫米波雷达的点云数据采集与RVIZ实时可视化全流程。内容涵盖硬件连接、ROS Noetic环境搭建、CAN接口配置、数据验证及自动化脚本编写,为机器人感知、自动驾驶等领域的开发者提供了一套稳定、实用的实战方案。

bash7scripter的博客 699

反激变压器反射电压详解

我以前做过隔离式的POE模块,其电路实际就是个反激式开关电源。只不过其输入电压范围比较低,为44V-57V。 电路如下图,就是个flyback。 可以看到,电路中有个钳位电路,用来抑制电压尖峰,就在初级线圈那里。 问题 抑制尖峰通常有2种电路,一种叫RCD钳位,另外一种是用TVS管+二极管钳位。 这两种实际中都有用,今天我不想讨论它们的区别,只想说明一个问题: 为什么不能只用一个二极管搞定?像继电器电路那样?不也能抑制尖峰吗? 答案自然是不行的...

weixin_42005993的博客 2万+

推荐好用的可做动画控制的js库Gsapjs

Animatejs Animayejs 许多小伙伴会在项目中使用到Animaye.css动画库,但是终究是css样式库,同一个页面不同的模块进行操作会有一些坑(例:动画发生的时间难于掌控)。 推荐一个好用的库 Gsapjs 在VUE官网中的状态过渡这节中有用到这个库的例子。 gsap.to() 常用的方法gsap.to()即可搞定大部分的动画效果问题 举例:动态数字累加告别冗余的计时器 figureSurge.vue <template> <div class="figureS

RequesToGod的博客 2399

LS-DYNA壳单元冲击仿真中的5个关键设置:以方管碰撞为例(含沙漏控制参数)

本文以方管碰撞为例,深入解析了LS-DYNA壳单元冲击仿真中的五个关键设置。重点探讨了沙漏控制参数(如IHQ=4)的选择逻辑、自接触算法优化、能量监控方法、材料模型(MAT_24)的真实应力-应变曲线与应变率效应设置,以及单元公式的选取。这些核心设置共同决定了仿真的精度与效率,是确保方管冲击仿真结果可靠性的基石。

salt的博客 625

Vue中使用lodash防抖(debounced)&节流(throttle)

Vue中使用lodash防抖(debounced)&节流(throttle) 废话不多说,直接上代码。 <template> <div class="label-container"> <div style="flex: 1 1 auto"> <Form ref="label-form" :model="formItem"> <div v-for="(label, index) in f

RequesToGod的博客 1842

可调电源的电路设计

可调电源在电路调试中经常用到,可调电源分为两种2-5v(非0点可调)和0-5v(低至0点可调)可调两种。 对于第一种非0点电压的可调范围,其主要是由于开关电源或LDO芯片输出的最小电压为一个固定电压值,非0范围。因此通过调节开关电源或LDO端的反馈电阻的设计模型,其电压可调范围都与芯片的参考电压有关。 基于开关电源的可调电压设计电路 因芯片U2的输出参考电压VSENSE管脚为1.22v。因此,通过调节可调电阻R8的数值,其芯片输出的最低电压一定不小于1.22v。当然此种方案是手动可调输出电压的设计,如

weixin_42257266的博客 9731

芯片标称具备8kVESD能力却在8kV测试中失效?

芯片级ESD(HBM模型)与系统级ESD(IEC 61000-4-2)存在本质差异:

硬核科技 644

Axios拦截器-请求拦截和响应拦截

Axios拦截器 (1)在发送之前和接收之前的一些判断 (2)参数为当前网络请求信息 (3)config.method为请求方法 (4)config.data为请求url 添加请求拦截器 Axios.interceptors.request.use(function (config) { 在发送请求之前做些什么 return config; }, function (error) { 对请求错误做些什么 retur...

RequesToGod的博客 1377

Python爬虫实战:如何爬取京东商品评论数据

在本文中,我们介绍了如何使用 Python 爬虫技术爬取京东商品的评论数据。首先,我们分析了京东商品评论的 API 接口和 JSON 数据结构,然后编写了爬虫程序来抓取评论数据,并将数据保存到 CSV 文件中。接着,我们进行了一些基本的数据分析,包括评分分布和简单的情感分析。爬取京东商品评论的数据可以为电商分析、情感分析等提供有价值的信息。你可以在此基础上进行更深入的分析,挖掘更多的商业价值。希望本篇教程能够帮助你了解如何利用 Python 进行电商数据的爬取和分析!

2201_76125261的博客 1647

Vue不同分辨率大小下的屏幕适配

亲测可用 安装 npm i lib-flexible npm i postcss-px2rem-exclude utils文件夹下创建rem.js 复制以下全部代码 (function() { // flexible.css let cssText = '' + '@charset "utf-8";html{color:#000;background:#fff;overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size

RequesToGod的博客 1156

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

js将多维数组格式化展开成树状结构

js将多维数组格式化转换成树状结构 用js实现将二维数组格式化转换成树状结构。 eg:待转数组: var array1 = [ ["a", "aa", "aaa", "aaaa"], ["b", "bb", "bbb"], ["a", "ab", "aba"], ["a", "aa", "aab"] ] 目标数组: [{ "name" : "a", "child" : [ { "name" : "aa",

RequesToGod的博客 811

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

render-props模式的两种写法

render-props模式 第一种写法: 在mousemove案例中,我自己使用的方式是父子传值的方式进行数据的传递。 有没有更简单的方式呢? 首先通过render将子组件中的数据state返回出去 子组件代码块: import React, { Component } from 'react' export default class index extends Component { constructor(){ super() this.state={

RequesToGod的博客 736

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

javascript ES6鼠标划入产生水纹波动效果

ES6写了一个水纹效果。还有点计算的问题。直接上代码Copy一下吧。 export default class Vertex { static BASE_Y = 150; static BASE_R = 10; static FRICTION = 0.1;//波形抖动后回复到正常状态的速率指数 static DECELERATION = 0.95; static SPEED_OF_BASE_WAVE = 3; theta = 0; goalY

RequesToGod的博客 563

react context组件传值

react context组件传值 这种传值方法一般适用于多层传递 父-------->子-------------->孙 思路: ​ 不管后代怎么嵌套,后代都是消费者Consumer ,父组件都是生产者 Provider。后代的值都是从父组件中获取的,个人认为父组件有点类似于Vue中的VueX。表面是嵌套关系 ,但是获取到的值都是父组件的。 后代的组件需要放在标签内部,不然会报错(详情可见:子组件第12行代码)。 关键点(很重要) 父组件导出生产者: export const {Pr

RequesToGod的博客 423

Javascript------Class类的理解

文章目录**基类**(BaseClass)父类子类**超类**(SuperClass)举个例子类中的this又是谁呢? 类是一种抽象的概念。 eg:人类属于哺乳类,即人类拥有哺乳类的相关特征。有着向下继承的关系。 基类(BaseClass) 越往高的类别,我们把这种类别叫做基类。 父类 可以理解为:人类的父类为灵长类。即人类以上的所有类别都可以叫做父类。(没有祖父类,曾祖父类) 子类 向下拓展的所有类别都为子类。 超类(SuperClass) 为了将真正的父类将其他的"父类"进行区分,于是有了超类。 即某类

RequesToGod的博客 420

js对象深复制/深拷贝功能函数封装

js对象深复制封装(深拷贝) 深复制,及源对象的属性如果有对象,该对象属性修改后,不会引起复制后的对象各属性的改变, 源对象的任何属性及子属性与新对象的直接没有任何引用关系。 一下例举几种浅复制常见方法: for(var prop in obj){ // 浅复制 } Object.assign();//浅复制 var obj1={...obj};//浅复制 如果原obj1就存在,还会改变原obj1的引用地址

RequesToGod的博客 379

javascript运算符

**1、**加法运算 如果仅仅是数值运算,那么我们也不至于把加法运算单独提出来说。在这里我们要考虑到各种类型的变化所以加法运算就相对比较复杂了 (1)** 纯数值的加法运算 这个运算就是尊重我们的数学运算来完成就好了,但是仍然有几个地方需要注意。这里我们可以看到运算结果一定是1,但是绝对不是1.0,也就是说如果小数位是0,是不会被保留的。 var a1=0.4; var b1=0.6; console.log(a1+b1);//1 var a2=NaN; var b2=4; console.log(a2+b

RequesToGod的博客 230

Javascript继承

继承 前言 原型是’Javascript’中的继承的基础,JavaScript的继承就是基于原型的继承。 ES6的继承 class Box{ constructor(){ } play(){ } } class Ball extends Box{ constructor(){ super();

RequesToGod的博客 206

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 140

React 性能:memo / useMemo / useCallback

讲清 memo/useMemo/useCallback 的配合与边界,先测量再优化,避开常见过早优化。

JudithHuang的博客 325

副队长BootStrap5探究(2)--按钮与按钮组

本文系统讲解Bootstrap 5按钮组件的使用与底层原理。通过CDN引入框架,掌握btn基础类及primary、success等主题色应用,学习轮廓按钮(btn-outline-*)、尺寸控制(btn-lg/sm)、块级布局(d-block)和禁用状态(disabled)等实用功能。结合源码解析,深入理解其基于CSS的圆角、过渡动画、伪类交互实现机制,实现“快速上手+原理掌握”的双重目标,助力前端技能进阶。

编程副队长 579
上一篇: vscode官网下载速度慢和下载失败攻略
下一篇: 修改elementUI轮播图鼠标划入轮播暂停的原生效果
Boriska1996
博客等级 码龄7年 22粉丝 77原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值