html实现网页动态粒子背景

⌚Time: 2024-05-02 01:53:00

👨‍💻Author: Jack Ge

演示效果:

使用开源项目particles.js,地址 https://github.com/VincentGarreau/particles.js 下载后解压,得到particles.js。 需要编写一个app.js调用particles.js,通过app.js可以设置粒子效果

/* -----------------------------------------------
/* How to use? : Check the GitHub README
/* ----------------------------------------------- */

/* To load a config file (particles.json) you need to host this demo (MAMP/WAMP/local)... */
/*
particlesJS.load('particles-js', 'particles.json', function() {
  console.log('particles.js loaded - callback');
});
*/

/* Otherwise just put the config content (json): */

particlesJS('particles-js',
  
  {
    "particles": {
      "number": {
        "value": 80,
        "density": {
          "enable": true,
          "value_area": 800
        }
      },
      "color": {
        "value": "#cfcbcf"
      },
      "shape": {
        "type": "circle",
        "stroke": {
          "width": 0,
          "color": "#000000"
        },
        "polygon": {
          "nb_sides": 5
        },
        "image": {
          "src": "img/github.svg",
          "width": 100,
          "height": 100
        }
      },
      "opacity": {
        "value": 0.5,
        "random": false,
        "anim": {
          "enable": false,
          "speed": 1,
          "opacity_min": 0.1,
          "sync": false
        }
      },
      "size": {
        "value": 5,
        "random": true,
        "anim": {
          "enable": false,
          "speed": 40,
          "size_min": 0.1,
          "sync": false
        }
      },
      "line_linked": {
        "enable": true,
        "distance": 150,
        "color": "#ffffff",
        "opacity": 0.4,
        "width": 1
      },
      "move": {
        "enable": true,
        "speed": 2,
        "direction": "none",
        "random": true,
        "straight": false,
        "out_mode": "out",
        "attract": {
          "enable": false,
          "rotateX": 600,
          "rotateY": 1200
        }
      }
    },
    "interactivity": {
      "detect_on": "canvas",
      "events": {
        "onhover": {
          "enable": false,
          "mode": "repulse"
        },
        "onclick": {
          "enable": false,
          "mode": "push"
        },
        "resize": true
      },
      "modes": {
        "grab": {
          "distance": 400,
          "line_linked": {
            "opacity": 1
          }
        },
        "bubble": {
          "distance": 400,
          "size": 40,
          "duration": 2,
          "opacity": 8,
          "speed": 3
        },
        "repulse": {
          "distance": 200
        },
        "push": {
          "particles_nb": 4
        },
        "remove": {
          "particles_nb": 2
        }
      }
    },
    "retina_detect": true,
    "config_demo": {
      "hide_card": false,
      "background_color": "#b61924",
      "background_image": "",
      "background_position": "50% 50%",
      "background_repeat": "no-repeat",
      "background_size": "cover"
    }
  }

);

编写测试网页

<!doctype html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>the browser</title>

<style>
    body {
        color: rgb(235, 210, 210);
        background-color: black;
    }

</style>
</head>
<body>

<!-- particles.js container -->
<div id="particles-js"></div>
<style>
#particles-js {
    position: fixed;
    top: 0;
    width: 100%;
    z-index: -1;
    background-color: #161924;
    overflow: hidden;
    clear: both;
    height: 100%;
}
</style>

<!-- scripts -->
<script src="particles.js"></script>
<script src="app.js"></script>

    <h1>欢迎来到我的网页</h1>
    <p>这是一个简单的网页示例。</p>
  <ul>
        <li>项目1</li>
        <li>项目2</li>
        <li>项目3</li>
        <li>项目3</li>
        <li>项目3</li>
        <li>项目3</li>
        <li>项目3</li>
        <li>项目3</li>
        <li>项目3</li>
        <li>项目3</li>
        <li>项目3</li>
        <li>项目3</li>
    </ul>
    <p>壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片</p>
    <p>壁纸图片</p>
    <p>壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片</p>
    <p>壁纸图片</p>
    <p>壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片</p>
    <p>壁纸图片</p>
    <p>壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片</p>
    <p>壁纸图片</p>
    <p>壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片</p>
    <p>壁纸图片</p>
    <p>壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片</p>
    <p>壁纸图片</p>
    <p>壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片</p>
    <p>壁纸图片</p>
    <p>壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片壁纸图片</p>
    <p>壁纸图片</p>

</body>
</html>

其中的添加particles的容器是

<div id="particles-js"></div>

其中的定义容器样式

<style>
#particles-js {
    position: fixed;
    top: 0;
    width: 100%;
    z-index: -1;
    background-color: #161924;
    overflow: hidden;
    clear: both;
    height: 100%;
}
</style>

其中的添加执行脚本



<!-- scripts -->
<script src="particles.js"></script>
<script src="app.js"></script>

一开始测试网页时候,发现并没有设置成背景。而是成为页面内容的一部分,把其他内容挤下去了。之后通过设置粒子容器的css样式position: fixed;解决了问题。默认没有设置就是div单独占据网页空间把其它内容挤下去了,设置成position: absolute,网页下拉后背景也跟着滚动了。只有设置fixed才能固定成网页背景