返回顶部
首页 > 资讯 > 前端开发 > JavaScript >使用js实现动态背景
  • 844
分享到

使用js实现动态背景

2024-04-02 19:04:59 844人浏览 泡泡鱼
摘要

本文实例为大家分享了js实现动态背景的具体代码,供大家参考,具体内容如下 1.将下面的代码复制并存为js文件 window.onload = function () {

本文实例为大家分享了js实现动态背景的具体代码,供大家参考,具体内容如下

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


window.onload = function () {
    //定义body的margin由默认值8px->0px
    document.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/dom
    canvas.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文件就可以了

效果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: 使用js实现动态背景

本文链接: https://lsjlt.com/news/158388.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用js实现动态背景
    本文实例为大家分享了js实现动态背景的具体代码,供大家参考,具体内容如下 1.将下面的代码复制并存为js文件 window.onload = function () { ...
    99+
    2024-04-02
  • ppt怎么设置动态背景让背景实现动态效果
    在PPT中设置动态背景实现动态效果,可以通过以下方法进行操作:1. 在PPT中选择“设计”选项卡,然后点击“背景样式”下的“格式背景...
    99+
    2023-09-20
    ppt
  • Android studio实现动态背景页面
    本文实例为大家分享了Android studio实现动态背景页面的具体代码,供大家参考,具体内容如下 第一步: 在res目录下创建raw文件夹,并把想要导入的视频放在里面 可以用格式...
    99+
    2024-04-02
  • vue3中使用VueParticles实现粒子动态背景效果
    目录particles.vue3官网可以仔细看下这里 有案例跟文档官网 Demo好了直接进入主题 安装使用Vue3 语法糖中使用配置单独写到文件particles.js,代码看起来简...
    99+
    2024-04-02
  • HTML如何实现动态散花背景
    这篇文章主要为大家展示了“HTML如何实现动态散花背景”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML如何实现动态散花背景”这篇文章吧。  &l...
    99+
    2024-04-02
  • Android studio怎么实现动态背景页面
    本篇内容介绍了“Android studio怎么实现动态背景页面”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:在res目录...
    99+
    2023-06-30
  • 使用css3怎么实现一个背景动态渐变效果
    使用css3怎么实现一个背景动态渐变效果?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计...
    99+
    2023-06-08
  • 使用CSS怎么实现前景背景自动配色
    本篇文章给大家分享的是有关使用CSS怎么实现前景背景自动配色,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、颜色匹配效果预览如下GIF示意,当我们按钮背景色逐渐变淡的时候,文...
    99+
    2023-06-08
  • 用chart.js添加动态背景图
    本文实例为大家分享了用chart.js添加动态背景图的具体代码,供大家参考,具体内容如下 1.效果图: 2.HTML <div class="background-image...
    99+
    2024-04-02
  • JS如何动态修改网页body的背景色
    这篇文章给大家分享的是有关JS如何动态修改网页body的背景色的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。代码如下:// ==UserScript== // ...
    99+
    2024-04-02
  • Android实现动态切换组件背景的方法
    本文所述的程序实现的功能为在软件中动态的选择组件背景,系统皮肤,自定义吐司背景等。 为实现这一要求,就需要用到安卓中的SharedPrefence的功能,首先在设置里面写一个控...
    99+
    2022-06-06
    方法 动态 Android
  • HTML+CSS怎么实现动态背景登录页面
    这篇文章给大家分享的是有关HTML+CSS怎么实现动态背景登录页面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 实现背景图片的动态变换首先在HTML页面body板块中,添加图片div,代码如下:<bo...
    99+
    2023-06-08
  • CSS属性实现动态背景效果的技巧
    CSS属性实现动态背景效果的技巧背景是网页设计中一个重要的元素,通过合理的背景设计可以增加网页的视觉效果,实现更好的用户体验。CSS提供了丰富的属性和技巧,可以实现各种动态背景效果。本文将具体介绍一些CSS属性和代码示例,帮助读者了解如何运...
    99+
    2023-11-18
    CSS 动态 背景效果
  • HTML5怎么实现动态文字遮罩背景特效
    这篇文章主要介绍“HTML5怎么实现动态文字遮罩背景特效”,在日常操作中,相信很多人在HTML5怎么实现动态文字遮罩背景特效问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HT...
    99+
    2024-04-02
  • 怎么在Html5中实现首页动态视频背景
    怎么在Html5中实现首页动态视频背景?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。html代码:<video id="v1" ...
    99+
    2023-06-09
  • js+canvas实现网站背景鼠标吸附线条动画
    本文实例为大家分享了js+canvas实现网站背景鼠标吸附线的具体代码,供大家参考,具体内容如下 完整代码: <!DOCTYPE html> <html lang=...
    99+
    2024-04-02
  • iOS实现背景滑动效果
    本文实例为大家分享了iOS实现背景滑动效果的具体代码,供大家参考,具体内容如下 1、在很多APP中,我们都可以看见那些特效绚丽的滑动选项条,那么如何才能够简单,快速的实现那样的效果呢...
    99+
    2024-04-02
  • Android如何实现背景动画
    这篇文章主要介绍了Android如何实现背景动画,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体如下:先创建动画层,有三张图片<xml version=&q...
    99+
    2023-05-30
    android
  • 使用CSS实现流星雨背景
    使用CSS实现流星雨背景?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。vue页面使用<template>    <vi...
    99+
    2023-06-08
  • Vue登录页面的动态粒子背景插件实现
    目录动态粒子效果如下: 安装插件动态粒子效果如下: 安装插件 npm install vue-particles --save-dev 在main.js文件中全局引入 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作