java满天星随机变颜色,随机生成10*10方块,并实现随机变色

这篇博客介绍了如何使用JavaScript动态生成10*10的彩色方块,并利用文档碎片提升性能。作者首先清空body内容,然后根据浏览器宽度和高度创建并定位100个绝对定位的div,每个div具有随机RGB背景色。为了优化性能,所有div通过文档碎片一次性添加到DOM中。此外,还实现了一个方法使方块背景色每隔两秒随机变化。最后,作者将创建方块和改变颜色的方法分别绑定到页面加载和窗口缩放事件上。
摘要由CSDN通过智能技术生成

闲来无聊,做个小东西玩 , 在body中随机生成10*10方块 , 并实现 随机 颜色

首先 介绍一个 新的 概念 文档碎片

1.概念

经JS操作DOM节点可以是节点的单位,让我们连接节点,能够createElement,createTextNode,然后,appendChild定在一起,然后再用appendChild或insertBefor加入到DOM树中.但假设要往DOM树中动态加入大量的节点.就会非常麻烦.并且每次都会刷新DOM。造成性能上的缺陷。

2.

效果图

12d1f7dacfa5

我是效果图

function createBox(){

console.log("createBox");

//创建盒子的方法

document.body.innerHTML = "";//先清空 body里面的内容

//下面是 获取 浏览器的宽高

var mWidth = document.documentElement.clientWidth || docuemnt.body.clientWidth;

var mHeight = document.documentElement.clientHeight || document.body.clientHeight;

// console.log(mWidth);

// console.log(mHeight);

//分 10 份

var nDivWidth = mWidth/10;

var nDivHeight = mHeight/10;

// console.log(nDivWidth);

// console.log(nDivHeight);

//创建文档 碎片

var oFrag = document.createDocumentFragment();

for(var row=0;row<10;row++){

for(var col=0;col<10;col++){

var oDiv = document.createElement("div");

oDiv.style.position = "absolute";//绝对 定位

oDiv.style.height = nDivHeight +"px";

oDiv.style.width = nDivWidth + "px";

//每个div的位置

oDiv.style.left = nDivWidth * col + "px";

oDiv.style.top = nDivHeight * row + "px";

//下面随机生RGB颜色值, 随机 数介于 0-256之间

oDiv.style.background = "RGB("+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+")";

//把每次创建 的div 追加给文档碎片

oFrag.appendChild(oDiv);

}

}

//最后一次性加 文档 碎片追加到body中,浏览器只渲染一次,提高性能

document.body.appendChild(oFrag);

}

// 让这些盒子的背景色随机发生变化的方法

function changeColor(){

document.getElementsByTagName('div').item(Math.random()*100).style.background = "RGB("+ Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+","+Math.floor(Math.random()*256)+")";

}

// 当浏览器加载完成之后,运行fn方法 , 自动创建 背景颜色不同的10行10列小盒子,并且每隔两秒钟有一个小盒子颜色会变一次

window.onload = function(){

console.log("onload");

createBox();

window.setInterval(changeColor,100);

}

//方法名后面 不加括号, 加了括号 就表示 把这个方法的返回 值赋给 onresize事件了

window.onresize = createBox;

-----------------------------markDown 实践中, 不喜忽喷----------------------------------------

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值