【发布时间】:2019-03-31 06:56:27
【问题描述】:
我正在使用一个名为 ParticlesJS 的库作为我网站的部分背景 - 这个库会根据其父级动态生成一个画布元素,并用动画粒子效果填充它,从而创建一个整洁的效果。话虽如此,我在尝试将其用作背景时遇到了一些实际问题:
- 如果画布元素与内容的大小相同,如果高度发生变化(例如添加新内容),视觉效果会变得像素化和扭曲。重新加载库并不是解决此问题的方法,因为它会产生视觉上的干扰效果。
- 如果画布元素是任意极端高度且未根据内容调整大小(溢出只是隐藏),则网站的性能会受到影响,因为库会消耗过多的 CPU 资源。
- 如果在 CSS 中简单地将 canvas 元素指定为
fixed位置,则性能很好并且它会粘住,但它看起来不合适,因为它后面的所有东西在滚动期间都会移动。
经过一番考虑,让它工作的最佳方法似乎是给它一个适度的大小(比如 200% 的页面高度),然后让它在滚动期间无限重复 - 性能是可以接受的,而且不会不会有任何失真。但是,我找不到任何方法来做到这一点 - 我知道 CSS 中有一个 background-repeat 属性,但这似乎只适用于图像。
有什么方法可以做我想要完成的事情吗?欢迎使用基于 CSS 和 JS 的答案。
【问题讨论】:
-
你需要画布来填满屏幕并固定吗?我不确定我是否理解您的问题
-
@user1435897 我需要画布与视口的尺寸大致相同,但会产生一种错觉,即它通过垂直重复的无限滚动效果与其他所有内容一起滚动。
-
把它放在一个div中作为body的第一个元素使div填充视口和位置:固定我不确定它是否能解决你的问题,但如果你可以分享你的代码,那就是有帮助
-
正如我所说,我不能使用“固定”位置,因为它只是粘住而不滚动。我需要它看起来像与其他内容一起滚动。
-
我知道了,但它不可能使用particle.js,因为它会在页面加载时生成粒子
标签: javascript html css angular