js实现动态球球背景
document.getElementsByTagName("body")[0].style.backgroundColor="#000"
//构造函数
function Ball( size, left1, top1, color, step, directionLeft, directionTop, timeSpace,opc){
this.dom = null
this.size = size
this.left1 = left1
this.top1 = top1
this.color = color
this.step = step
this.timeSpace = timeSpace
this.directionLeft = directionLeft
this.directionTop = directionTop
this.opc = opc
//创建球
this.createDom = function(){
this.dom = document.createElement("div")
this.dom.style.cssText = `
position: absolute;
left: ${this.left1}px;
top: ${this.top1}px;
width: ${this.size}px;
height: ${this.size}px;
border-radius: 50%;
background-color:${this.color};
opacity: ${this.opc};
z-index: -999999999;
`;
document.body.appendChild(this.dom)//吧效果加到body;里面
}
//球的动作
this.go = function () {
setInterval(() => {
this.left1 = this.left1 + this.directionLeft * this.step
this.top1 = this.top1 + this.directionTop * this.step
// 边界判断
let clientHeigth = document.documentElement.clientHeight || document.body.clientHeight
let scrollTop = document.documentElement.scrollTop || document.body.scrollTop
if (this.top1 + this.size > clientHeigth + scrollTop) {
this.top1 = clientHeigth + scrollTop - this.size
this.directionTop = -1
} else if (this.top1 < scrollTop) {
this.top1 = scrollTop
this.directionTop = 1
}
let clientWidth = document.documentElement.clientWidth || document.body.clientWidth
let scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
if (this.left1 + this.size > clientWidth + scrollLeft) {
// 右边界
this.left1 = clientWidth + scrollLeft - this.size
this.directionLeft = -1
} else if (this.left1 < scrollLeft) {
//左边界
this.left1 = scrollLeft
this.directionLeft = 1
}
this.dom.style.left = this.left1 + "px"
this.dom.style.top = this.top1 + "px"
}, this.timeSpace)
}
//调用
this.createDom()
this.go()
}
window.onload = function () {
var w = document.documentElement.clientWidth||document.body.clientWidth
var h =document.documentElement.clientHeight||document.body.clientHeight
for(var i=0;i<200;i++){
// 随机大小(10-150)
let size = parseInt(Math.random()*141)+10
// 随机位置;
let left1 = parseInt(Math.random()*w)
let top1 = parseInt(Math.random()*h)
// 随机颜色
let color = getColor()
// 随机步长(1-10)
let step = parseInt(Math.random()*5)+1
// 随机方向
let directionLeft = parseInt(Math.random()*2)==0?-1:1 //0和1
let directionTop = parseInt(Math.random()*2)==0?-1:1 //0和1
// 随机时间间隔(5-50)
let timeSpace = parseInt(Math.random()*46)+5
//透明度
let opc = (parseInt(Math.random()*6)+1)/10
new Ball( size, left1, top1, color, step, directionLeft, directionTop, timeSpace,opc)
}
}
function getColor(){//随机颜色
var str = "#"
for(var i=0;i<6;i++){
str += parseInt(Math.random()*16).toString(16)
}
return str
}
js实现动态球球背景的更多相关文章
- js模拟抛出球运动
js练手之模拟水平抛球运动 -匀加速运动 -匀减速运动 模拟运动有些基本的思路,当前所在点的坐标,元素的长宽是多少,向右/向下运动x/y增加,向上/向左运动x/y减少,运动的路程是多少,用什么方程进行 ...
- TYVJ4623 球球大作战·生存
时间: 500ms / 空间: 65536KiB / Java类名: Main 背景 小天很喜欢玩球球大作战这个游戏,大家也应该都玩过.游戏规则是:移动自己的球,移动到别人的球(一定要比自己的球小)的 ...
- Atitit 动态按钮图片背景颜色与文字组合解决方案
Atitit 动态按钮图片背景颜色与文字组合解决方案 转换背景颜色,setFont("cywe_img", fontScale, 50, 5) 设置文字大小与坐标 文字分拆,使用字 ...
- js实现动态操作table
本章案例为通过js,动态操作table,实现在单页面进行增删改查的操作. 简要案例如下: <%@ page language="java" contentType=&quo ...
- 初探JavaScript(二)——JS如何动态操控HTML
除去五一三天,我已经和<JavaScript Dom编程艺术>磨合了六天,第一印象很好.慢慢的,我发现这是一块排骨,除了肉还有骨头.遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次 ...
- js的动态加载、缓存、更新以及复用(四)
本来想一气呵成,把加载的过程都写了,但是卡着呢,所以只好在分成两份了. 1.页面里使用<script>来加载 boot.js . 2.然后在boot.js里面动态加载 bootLoad.j ...
- JS怎么动态命名变量名
[摘要]本文是对JS怎么动态命名变量名的讲解,对学习JavaScript编程技术有所帮助,与大家分享. 1.用eval,例子: 1 2 3 4 5 6 7 <script> var Thr ...
- js中动态载入css js样式
js中动态载入css样式,方法如下: //<link rel="stylesheet" type="text/css" href="http:/ ...
- js插件动态加载js、css解决方案
最近因为工作需要做了一个js自动导入的插件,一开始很天真的以为动态创建个script添加到head中就ok了,试了之后才发现了问题,就是如果同时引入了多个js文件,而且后一个文件中用到了前一个文件中的 ...
- JS & JQuery 动态添加 select option
因为是转载文章 在此标明出处,以前有文章是转的没标明的请谅解,因为有些已经无法找到出处,或者与其它原因. 如有冒犯请联系本人,或删除,或标明出处. 因为好的文章,以前只想收藏,但连接有时候会失效,所以 ...
随机推荐
- IP不是万能药 为何有蜘蛛侠等大片的索尼要放弃电影
为何有蜘蛛侠等大片的索尼要放弃电影"> 近年来,国内狂炒"IP"这一概念,比如动漫.网络文学.小说.游戏等,甚至围绕IP制造出内容矩阵.从一个IP延伸至多个领域 ...
- Leetcode 141题 环形链表(Linked List Cycle) Java语言求解
题目描述: 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. Map ...
- 初学Qt——tableview操作
先做简短记录改天有空再详细讲一些吧 使用QSqlQueryModel绑定了TableView,因为需要用到数据表中Id这一项,但又不想显示出来,找到方法是 在绑定之后对tableView 调用setC ...
- C#可空类型知多少
在项目中我们经常会遇到可为空类型,那么到底什么是可为空类型呢?下面我们将从4个方面为大家剖析. 1.可空类型基础知识 顾名思义,可空类型指的就是某个对象类型可以为空,同时也是System.Nullab ...
- a标签嵌套href默认行为与子元素click事件存在影响
2018-08-07 Question about work 开发过程中遇到问题,简单写个demo 运行环境为Chrome 68 描述一下这个问题,当<a>标签内部存在嵌套时, 父元素&l ...
- 小程序自定义switch组件
如上图,小程序api中的switch组件只能自定义颜色,不能自定义宽高,所以就开始了自己写switch组件. 自定义组件样式 switch组件样式大致如图,样式思路:未选中时为一个长方形有圆角按钮,和 ...
- display的block、none、inline属性及解释
常会用到display对应值有block.none.inline这三个值 参数: block :块对象的默认值.用该值为对象之后添加新行.之前也添加一行. none :隐藏对象.与visibility ...
- spring boot 整合elasticsearch
1.导入jar包 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodi ...
- 简单的编写java的helloWord
那么在上一章章节 http://www.cnblogs.com/langjunnan/p/6814641.html 我们简单的俩了解了一下什么是java和配置编写java的环境,本章呢我们学习如何编写 ...
- 如何在PHP7中扩展mysql,先安装php7.2。后安装mysql
相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可 ...