首页 > 其他分享 >JS-碰撞的小球

JS-碰撞的小球

时间:2023-04-10 20:23:41浏览次数:37  
标签:小球 top 碰撞 JS y1 var wsx x1 left

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .wsx{
            width: 200px;
            height: 200px;
            background-color: red;
            border-radius: 50%;
            position: absolute;
            left: 200px;
            top: 200px;
        }
    </style>
</head>
<body>
    <div class="wsx"></div>
  
    <script>
        //让小球向右下运动
        var wsx = document.querySelector('.wsx')
        //小球运动
        function test(){
            var a = 10 //x
            var b = 10 //y
            //视口宽高
            var docux = document.documentElement.clientWidth
            var docuy = document.documentElement.clientHeight
            //盒子自身宽高
            var left = wsx.clientWidth
            var top = wsx.clientHeight
            //视口宽高-盒子宽高
            var left1 = docux - left
            var top1 = docuy - top

            setInterval(function(){
                //获取盒子距离视口的距离
                var XY = wsx.getBoundingClientRect()
                var x = XY.left
                var y = XY.top
                //写入left和top每次移动距离,每次相加
                var x1 = x + a
                var y1 = y + b

                //需要写入if判断,为了解决大于或者小于视口宽度高度;需要获取视图宽高,以及盒子宽高
                if(x1 > left1){
                    x1 = left1
                    a = -a
                    getrandom()
                }
                if(x1 < 0){
                    x1 = 0
                    a = -a
                    getrandom()
                }
                if(y1 > top1){
                    y1 = top1
                    b = -b
                    getrandom()
                }
                if(y1 < 0){
                    y1 = 0
                    b = -b
                    getrandom()
                }
                //在css写入
                wsx.style.left = x1 +'px'
                wsx.style.top = y1 + 'px'
            },20)
        }
            //写入随机数   让max -min +min
            function num(max,min){
                return Math.floor(Math.random() * (max -min) +min)
            }
            //给盒子写入样式,在上面if语句进行使用
            function getrandom(){
                var r = num(0,256)
                var b = num(0,256)
                var a = num(0,256)
                wsx.style.background = 'rgb('+r+','+b+','+a+ ')'
            }

        test()

    </script>
</body>
</html>

  

标签:小球,top,碰撞,JS,y1,var,wsx,x1,left
From: https://www.cnblogs.com/wsx123/p/17304166.html

相关文章

  • JS函数的副作用你了解过吗?
    原文链接:   https://note.noxussj.top/?source=51cto什么是副作用?副作用会让一个函数变的不纯,纯函数是根据相同的输入返回相同的输出,如果函数依赖于外部的状态就无法保证输出相同,就会带来副作用。副作用来源函数依赖外部状态(变量),但是副作用不可能完全禁止,尽可能控制在它们可控范......
  • 【享元设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介享元模式(FlyweightPattern),是一种结构型设计模式。主要用于减少创建对象的数量,以减少内存占用和提高性能。它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。当程序需要生成数量巨大的相似对象时,可能对内存有......
  • js优化(防抖和节流)
    ......
  • d3.js制作蜂巢图表带动画效果
     以上是效果图,本图表使用d3.jsv4制作。图表主要功能是在六边形格子中显示数据,点击底部图标可以切换指定格子高亮显示,图表可以随浏览器任意缩放。 1.图表的主体结构是由正六边形组成,使用d3生成六边形可以使用d3-hexbin.js,生成六边形比较方便,只要给定中心点坐标和半径即可生......
  • 记录-html-docs-js避坑指南
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言我们公司目前在做基于tiptap的在线协同文档,最近需要做导出pdf、word需求。导出word文档使用的是html-docx-js-typescript,是用typescript重写了一下html-docx-js,可以看到最近的提交记录是2016年,貌似已......
  • JSON.parse意外失败的问题(传入内容在校验网站上检查无误)(传入内容来自CryptoJS.AES.dec
    背景:由CryptoJS.AES.decrypt解码来的数据并进行toString(CryptoJS.enc.Utf8)之后,无法使用JSON.parse转换成json数据,但是使用在线校验工具认为格式正确。可能是由于解码后的字符串包含了一些特殊字符或者不可见字符,导致JSON.parse方法无法正确解析字符串。可以尝试使用console.log......
  • js删除cookie失败
    如果js删除cookie失败,请检查以下要点:cookie不为httpOnly删除cookie字段要设置全,字段要保持一致,比如:document.cookie='token=xxxx;path=/;domain=.baidu.com;max-age=-1'如果cookie的domain为当前域名,不需要声明domain字段,比如是news.baidu.com而不是.news.baidu.comd......
  • json-server 笔记
    在vs-code的终端下运行出错:PSE:\newsvn\vue3学习\vite-blog>json-server--watchdb.jsonjson-server:无法加载文件C:\Users\Administrator\AppData\Roaming\npm\json-server.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅https:/go.microsoft.com/fwlink/?LinkID=......
  • rxjs的几点使用心得
    1.对错误的处理日常使用中,点击按钮需要往后台发消息,为了不重复发消息,经常需要把点击事件做成subject,然后把发消息的过程做成switchMap,类似下面的写法  constsubject=newrxjs.Subject();  subject.pipe(   rxjs.operators.switchMap(index=>{   ......
  • js:模板解析实现2 -- 支持子列表
    难度是对于子循环列表的解析,比第一个实现有更好的解析效果和应用-----解析代码---/**调用形式tags.call({sid:'含解析html父级id',endFunc:解析结束执行Func},{listsObj});*能够使用注释的位置可以使用注释格式,不能使用时可以使用@.---photo--@来代替<!---photo-->......