首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在没有动画的情况下创建粒子网页背景(纯css)

问如何在没有动画的情况下创建粒子网页背景(纯css)
EN

Stack Overflow用户
提问于 2019-01-21 12:05:41
回答 1查看 602关注 0票数 1

我想要一些粒子,像它在particles.js中的样子,但没有任何动画和纯CSS代码。我知道这是可以做到的,但我找不到任何例子或教程在网上如何实现它。由于CPU使用率高,动画部分对css解决方案和js解决方案都很恼火.因此,我试图找到一种方法,以删除动画和使用纯css,以更好的性能。

​

非常感谢。

编辑:也许轻量级的javascript版本也不错,只要它是轻量级的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-21 13:19:04

您可以使用第二个示例中编译的CSS,并删除其中所有用于动画的内容。

如果您不介意基于(小型) JavaScript的解决方案,请参阅下面。它使用<canvas>元素绘制粒子:

​

代码语言:javascript
复制
(function (runModule) {
  // init. renders 200 particles into the element with ID "bg".
  // particles have a radius between 3 and 9px (6 +- 3) and
  // can either be red, blue or green
  runModule(document.querySelector('#bg'), 200, 6, [
    '#c00',
    '#0c0',
    '#00c'
  ]);
})(function (canvas, particleCount, particleRadius, particleColors) {
  var ctx = canvas.getContext('2d');
  var particles = [];
  var particle;
  
  create();
  render();
  
  window.addEventListener('resize', resize);
  
  function makeParticle (radius, colors) {
    return {
      x: between(radius, canvas.width - radius),
      y: between(radius, canvas.height - radius),
      r: between(radius * 0.5, radius * 1.5),
      c: colors[Math.floor(Math.random() * colors.length)]
    };
  }

  function create () {
    particles = [];
    while (particles.length < particleCount) {
      particle = makeParticle(particleRadius, particleColors);
      particles.push(particle);
    }
  }
  
  function render () {
  	ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
  	particles.forEach(function (particle) {
    	ctx.beginPath();
    	ctx.arc(particle.x, particle.y, particle.r, 0, Math.PI * 2);
    	ctx.closePath();
    	ctx.fillStyle = particle.c;
    	ctx.fill();
    })
  }
    
  function resize () {
    var rect = canvas.parentNode.getBoundingClientRect();
    canvas.width = rect.width;
    canvas.height = rect.height;
    create();
    render();
  }
  
  function between (a, b) {
    return Math.round(Math.max(a, Math.random() * b));
  }
});
代码语言:javascript
复制
#bg {
  background: #000;
}
代码语言:javascript
复制
<canvas id="bg" width="320" height="200"></canvas>

​

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54289623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档