js动态背景

1.将下面的代码复制并存为js文件

window.onload = function () {//定义body的margin由默认值8px->0pxdocument.body.style.margin = "0";document.body.style.background = "#30333F";//创建canvas画布document.body.appendChild(document.createElement('canvas'));var canvas = document.querySelector('canvas'),ctx = canvas.getContext('2d') //ctx返回一个在canvas上画图的api/domcanvas.width = window.innerWidth;canvas.height = window.innerHeight;canvas.style.position = 'fixed';ctx.lineWidth = .3;ctx.strokeStyle = (new Color(150)).style;//定义鼠标覆盖范围var mousePosition = {x: 30 * canvas.width / 100,y: 30 * canvas.height / 100};var dots = {nb: 1000,//Dot的总数distance: 50,d_radius: 100,array: []};//创建颜色类,Color类返回字符串型rgba(*,*,*,.8)function mixComponents(comp1, weight1, comp2, weight2) {return (comp1 * weight1 + comp2 * weight2) / (weight1 + weight2);}function averageColorStyles(dot1, dot2) {var color1 = dot1.color,color2 = dot2.color;var r = mixComponents(color1.r, dot1.radius, color2.r, dot2.radius),g = mixComponents(color1.g, dot1.radius, color2.g, dot2.radius),b = mixComponents(color1.b, dot1.radius, color2.b, dot2.radius);return createColorStyle(Math.floor(r), Math.floor(g), Math.floor(b));}function colorValue(min) {return Math.floor(Math.random() * 255 + min);}function createColorStyle(r, g, b) {return 'rgba(' + r + ',' + g + ',' + b + ', 0.8)';}function Color(min) {min = min || 0;this.r = colorValue(min);this.g = colorValue(min);this.b = colorValue(min);this.style = createColorStyle(this.r, this.g, this.b);}//创建Dot类以及一系列方法function Dot() {this.x = Math.random() * canvas.width;this.y = Math.random() * canvas.height;this.vx = -.5 + Math.random();this.vy = -.5 + Math.random();this.radius = Math.random() * 2;this.color = new Color();}Dot.prototype = {draw: function () {ctx.beginPath();ctx.fillStyle = this.color.style;ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2, false);ctx.fill();}};function moveDots() {//Dot对象的移动for (i = 0; i < dots.nb; i++) {var dot = dots.array[i];if (dot.y < 0 || dot.y > canvas.height) {dot.vx = dot.vx;dot.vy = - dot.vy;}else if (dot.x < 0 || dot.x > canvas.width) {dot.vx = - dot.vx;dot.vy = dot.vy;}dot.x += dot.vx;dot.y += dot.vy;}}function connectDots() {//DOt对象的连接for (i = 0; i < dots.nb; i++) {for (j = i; j < dots.nb; j++) {i_dot = dots.array[i];j_dot = dots.array[j];if ((i_dot.x - j_dot.x) < dots.distance && (i_dot.y - j_dot.y) < dots.distance && (i_dot.x - j_dot.x) > - dots.distance && (i_dot.y - j_dot.y) > - dots.distance) {if ((i_dot.x - mousePosition.x) < dots.d_radius && (i_dot.y - mousePosition.y) < dots.d_radius && (i_dot.x - mousePosition.x) > - dots.d_radius && (i_dot.y - mousePosition.y) > - dots.d_radius) {ctx.beginPath();ctx.strokeStyle = averageColorStyles(i_dot, j_dot);ctx.moveTo(i_dot.x, i_dot.y);ctx.lineTo(j_dot.x, j_dot.y);ctx.stroke();//绘制定义的路线ctx.closePath();//创建从当前点回到起始点的路径}}}}}function createDots() {//创建nb个Dot对象for (i = 0; i < dots.nb; i++) {dots.array.push(new Dot());}}function drawDots() {//引用Dot原型链,使用draw方法,在canvas上画出Dot对象for (i = 0; i < dots.nb; i++) {var dot = dots.array[i];dot.draw();}}function animateDots() {ctx.clearRect(0, 0, canvas.width, canvas.height);//清除画布,否则线条会连在一起moveDots();connectDots();drawDots();requestAnimationFrame(animateDots);}createDots();//使用创建Dot类函数requestAnimationFrame(animateDots);//使用canvas独有的60Hz刷新屏幕画布的方法document.querySelector('canvas').addEventListener('mousemove', function (e) {mousePosition.x = e.pageX;mousePosition.y = e.pageY;})document.querySelector('canvas').addEventListener('mouseleave', function (e) {//鼠标离开时,连接自动返回到画布中心mousePosition.x = canvas.width / 2;mousePosition.y = canvas.height / 2;})}

2.然后在需要使用动态背景的html页面引入js文件就可以了

效果如下:

使用js实现动态背景相关推荐

  1. HTML5+CSS3+JS制作动态背景登录界面

    目录 第一步:编写HTML框架 第二步:设置css样式表 第三步:编写js代码 第一步:编写框架 1.分别新建html,css和js文档后,将css和js分别链接至html中. 2.编写html基本框 ...

  2. 动态背景组件(vue-particles)

    动态背景组件(vue-particles) 启用 vue-particles 粒子背景插件(main.js) 动态背景组件(AnimatedWallpaper.vue) 使用方式 效果图 启用 vue ...

  3. vanta.js的使用(前端网站动态背景)

    vanta.js可以为网站设置炫酷的动态背景 比如在网站登陆的首页 官网 Vanta.js - Animated 3D Backgrounds For Your Website npm官网 vanta ...

  4. JS实现线条动态背景

    [Top] JS实现线条动态背景 线条随机运动,鼠标移动过程中,有吸附性,话不多说,直接上代码吧! !function () {let num = 100;//设置所画线的颜色let colorLin ...

  5. html背景边框特效代码,纯JS实现动态边框特效

    HtmlCssJs ^-^正常的边框 ^-^更慢的边框 ^-^更快的边框 ^-^图片边框 ^-^更细的边框 附赠的圆形 body { flex-wrap:wrap; flex:1 } .flex { ...

  6. 酷炫一款动态背景(HTML +js canvas)

    一款酷炫的前端动态页面 废话不多说 ,分享一款酷炫的页面动态背景 效果见下图. 查看  demo 背景图效果: 实例效果 点击效果: 背景css *{margin: 0;padding: 0;}#ca ...

  7. Django开发数据可视化大屏-JS绘制大屏动态背景-(视图模板制作)

    查看本文前请先查看 Django开发数据可视化大屏-项目启动配置 通过前面的文章,我们已经创建了一个Django简单项目,并且做了相关的配置,今天我们来制作视图模板,通过JS绘制3D动态背景效果. 我 ...

  8. html列表圆点背景,JS实现多彩圆点气泡动态背景

    JS实现多彩圆点气泡动态背景 一段简短的JS代码,利用html5的canva动画特性,实现多彩圆点气泡动态背景. 网上流传的那种动态背景使用的是easyBackground这种js库,原理是一样的~ ...

  9. php星空背景动态,JS实现动态星空背景效果

    本文实例为大家分享了JS实现动态星空背景的具体代码,供大家参考,具体内容如下 这里我截取的是一个图片,实际上是会动的.废话不多说,上代码. HTML: CSS: /*css reset */ body ...

最新文章

  1. 2022-2028年中国二次供水设备行业研究及前瞻分析报告
  2. 54 Node.js快速入门
  3. SQLServer2000同步复制技术实现步骤(收藏)
  4. 【 FPGA 】UltraFast设计方法学:定义时钟分组
  5. VS2010-MFC(常用控件:静态文本框)
  6. Hadoop之MapTask工作机制
  7. 无锁编程[0]__多线程条件下的计数器__原子的加/减/与/或/异或操作__sync_fetch_and_add,__sync_add_and_fetch等
  8. SpringMvc项目中使用GoogleKaptcha 生成验证码
  9. P3193-[HNOI2008]GT考试【KMP,dp,矩阵乘法】
  10. python判断字符串结尾-字符串#69301_27种Python字符串操作方法大全
  11. Java判断一个数是不是素数
  12. java设计与模式_设计模式《JAVA与模式》之状态模式
  13. fullPage最后一屏自适应
  14. Jenkins控制台出现中文乱码
  15. 砍掉中国90%的科研人员,对科技发展的影响微乎其微,某教授酒后真言!
  16. 如何检查网站死链接 分享检查死链接方法
  17. xamp安装及环境配置教程
  18. 用pandas和numpy分析药店的营业数据
  19. 软考2022下半年上午题真题和知识点整理
  20. JavaScript中内存溢出和内存泄漏

热门文章

  1. 魅族mx5android os耗电,魅族mx5运行系统优化
  2. HFish开源蜜罐框架系统
  3. 计算机应用的光学物理原理,光学精密机械与物理研究所2016年考研招生简章
  4. 2021年劳务员-岗位技能(劳务员)考试题及劳务员-岗位技能(劳务员)考试总结
  5. 《重构——改善既有代码的设计》读书笔记(三)
  6. office365 无法登录_WPS?Office2016,Office365到底有啥区别?
  7. Python 实现弹球游戏
  8. 证大集团牵手金和OA软件,为企业提供了高效的管理水平
  9. 2023考研资料每日更新(2022.04.14)
  10. Redis指令详解-HLL相关指令