首页 > 其他分享 >js简单动画--页面元素碰撞浏览器边框

js简单动画--页面元素碰撞浏览器边框

时间:2023-10-25 20:15:58浏览次数:37  
标签:style px2num -- js 浏览器 边框 dir 页面

如题,js的简单使用。很多页面特效可以由此展开想象。

html:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="utf-8" />
 5         <title></title>
 6         <script src="js/j1.js"></script>
 7     </head>
 8     <body onl oad="myinit()">
 9         <div style="width: 100px;height: 100px;border: 2px solid red;top:0;left: 0;position: relative;" id="d1">123</div>
10     </body>
11 </html>

j1.js:

 1 //全局变量,各个函数都要用
 2 var x;
 3 var dir_heng;
 4 var dir_shu;
 5 //初始化
 6 function myinit()
 7 {    
 8     x=document.querySelector("#d1");
 9     dir_heng=1;
10     dir_shu=1;
11     setInterval(myfloat,100);
12 }
13 function myfloat()
14 {    
15     //取左、上边距和漂浮物宽、高的数字
16     oldleft=px2num(x.style.left);
17     oldtop=px2num(x.style.top);
18     Width=px2num(x.style.width);
19     Height=px2num(x.style.height);
20     
21     //如果左边距大于窗口宽度减控件宽度 或 左边距小于0
22     //(即漂浮物向右超越边框 或 向左超越边框)
23     //则换向
24     if(oldleft>innerWidth-Width || oldleft<0)
25     {
26         dir_heng=-dir_heng;
27     }
28     //与上类似
29     if(oldtop>innerHeight-Height ||oldtop<0)
30     {
31         dir_shu=-dir_shu;
32     }
33     //获得新的左、上边距,即移动
34     newleft=oldleft+20*dir_heng+"px";
35     newtop=oldtop+20*dir_shu+"px";
36     x.style.left=newleft
37     x.style.top=newtop;
38 }
39 
40 //eg. px2num("20px"),return 20
41 function px2num(x)
42 {
43     t=parseInt(x.substring(0,x.length-2));
44     return t;
45 }

浏览器页面上,一个红边div四处碰撞。效果自行查看。

标签:style,px2num,--,js,浏览器,边框,dir,页面
From: https://www.cnblogs.com/wanjinliu/p/17788006.html

相关文章

  • LINUX基础知识和命令 二
    LINUXalias(别名)自定义命令=原始命令原始命令中有特殊符@#%()请打上引号,单双无所谓例:vim/etc/sysconfig/network-scripts/ifcfg-ens33aliasmyvim=“vim/etc/sysconfig/network-scripts/ifcfg-ens33”下次可以直接打myvim  alias直接打显示当前系统所有的别名在Li......
  • maven创建普通java项目访问mysql-仅jdbc
    已知:1、maven对普通Java项目的创建,参考 https://www.cnblogs.com/wanjinliu/p/17706089.html 。2、java常规访问mysql数据库,需要用到jdbc驱动。调用的jar包,最新为“mysql-connector-j”--这个名字可以不记得,看见能认识它就行。包、类入门用法,参考 https://www.cnblogs.com/......
  • 实验2-实验任务1
    1#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#defineN55#defineN13746#defineN24657intmain()8{9intnumber;10inti;11srand(time(0));//以当前系统时间作为随机种子12for(i=0;i<N;......
  • 在 vs2022 中为 c# 项目输出的程序集指定名称
    c#项目中,生成的程序集的命名一般是项目名称,大多数时候,项目名需要写英文,而生成的程序名字也是项目名,不便于用户理解。vs2022允许修改程序集名称,可以直接指定中文项目名。操作路径:右键项目=>属性=>应用程序=>常规=>程序集名称.......
  • 测试
    目录题目翻译题目描述输入格式输出格式样例#1样例输入#1样例输出#1样例#2样例输入#2样例输出#2样例#3样例输入#3样例输出#3题目简化题目思路AC代码题目翻译【题目描述】你决定用素数定理来做一个调查.众所周知,素数又被称为质数,其含义就是除了数字一和本身之外不能......
  • 10.25读书笔记-《掌握需求过程·》01
    今天读了《掌握需求过程·》这本书,理解了什么是需求,为什么要掌握需求,在开发软件时,身为一个程序员就要明白,开发软件的前前后后需要知道的东西,将尽可能多的可以预知的内容,做到心知肚明。目前的我们在开发软件的时候还是做的还是比较小的项目,偶尔也会遇到一些数据库设计出错导致,编写......
  • 外键和多表建立 连表查询
    外键#简单的理解为该字段可以让你去到其他表中查找数据表与表之间的关系一对多多对多一对一没有关系#一对多的表关系"""如何判断表关系:换位思考法"""以员工表和部门表为例先站在员工表问:一个员工能否有多个部门?答:不能在站在部门表......
  • jupyter notebook快捷键
    命令行模式(按Esc生效)编辑快捷键F:查找并且替换Ctrl-Shift-F:打开命令配置Ctrl-Shift-P:打开命令配置Enter:进入编辑模式P:打开命令配置Shift-Enter:运行代码块,选择下面的代码块Ctrl-Enter:运行选中的代码块Alt-Enter:运行代码块并且插入下面Y:把代码块变成代码M:......
  • P6109 [Ynoi2009] rprmq1 题解-猫树+Segment Tree Beats
    20231025P6109[Ynoi2009]rprmq1题解-猫树+SegmentTreeBeats不愧是学长出的题。。。让我更深刻地理解了猫树。Statement传送门有一个\(n\timesn\)的矩阵\(a\),初始全是\(0\),有\(m\)次修改操作和\(q\)次查询操作,先进行所有修改操作,然后进行所有查询操作。一次修......
  • 76th 2023/10/10 Atcoder 10/8-ARC-T3
    这道题题目很有意思,看上去是很简单明显的计数,但一思考会发现要死很多重复状态因为标记的线很容易让人从一个方框开始思考起,所以很容易带入关于重复考虑的误区观察到线是斜着的,思考影响到的范围若涂上一个格子或左一个格子的右下,则该格子不能填涂左上观察到影响范围是一个个斜......