tsParticles Deep Ocean 调色板完整指南:从安装到深海粒子背景实战
tsParticles Deep Ocean 调色板完整指南从安装到深海粒子背景实战【免费下载链接】tsparticlestsParticles - Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animated backgrounds for your website. Ready to use components available for React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Inferno, Solid, Riot and Web Components.项目地址: https://gitcode.com/GitHub_Trending/ts/tsparticlesDeep Ocean深海是 tsParticles 官方调色板系列palettes/water下的一款主题色板它以深蓝至纯黑的 14 级色阶模拟海洋深处幽暗、静谧的粒子氛围。本文将围绕 palettes/water/deepOcean/README.md 展开完整讲解该调色板的颜色定义、安装方式、CDN 与框架集成、配置选项并结合引擎源码说明调色板在 tsParticles 中的注册与解析原理。读完本文你将能够独立搭建一个深海粒子漂浮风格的网页动画背景并能将同一套方法迁移到任何其他官方调色板。Deep Ocean 调色板是什么在 tsParticles 中调色板Palette只定义颜色集合不定义粒子行为——它不负责粒子数量、运动方式或形状这些仍由运行包如tsparticles/basic和粒子选项particles options决定。正如 palettes/water/deepOcean/README.md 的 Quick checklist 所强调的A palette defines colors, not complete behavior, so pair it with a runtime package and particle options.Deep Ocean 调色板在引擎中的注册名是deep-ocean展示名为 Deep Ocean通过loadDeepOceanPalette(engine)加载函数注入引擎其完整定义位于 palettes/water/deepOcean/src/options.tsimport { type IPalette } from tsparticles/engine; export const options: IPalette { name: Deep Ocean, background: #000a14, blendMode: source-over, colors: { fill: { enable: true, value: [ #FFFFFF, #EEFFFF, #CCFFFF, #AAEEFF, #88DDFF, #55CCFF, #22AAFF, #0088FF, #0066CC, #004499, #002266, #001144, #000822, #000000, ], }, }, };调色板的 14 级深海色阶Deep Ocean 的配色在 palettes/water/deepOcean/README.md 的 Colors 一节以表格形式完整列出。粒子填充色fill color共 14 种从亮到暗平滑过渡色值视觉定位色值视觉定位#FFFFFF纯白水面高光#55CCFF中亮天蓝#EEFFFF近白浅蓝#22AAFF亮海洋蓝#CCFFFF浅青白#0088FF标准海蓝#AAEEFF淡青蓝#0066CC深海军蓝#88DDFF浅青蓝#004499更深藏蓝——#002266极深蓝——#001144近黑深蓝——#000822墨蓝——#000000纯黑背景色为#000a14近乎纯黑的深海底色混合模式为source-over默认正常混合填充fill开启。这套由白经青、蓝递进到黑的色阶正是为了模拟水面上方透入的光线随深度逐渐衰减这一深海视觉规律粒子在深色背景上如同浮游生物与气泡般缓缓漂动。从源码实现看调色板把这一组色值作为候选颜色数组交给引擎粒子创建时引擎会从value数组中随机选取颜色因此实际渲染中你会同时看到亮色与暗色粒子共存的层次感。可以参考该调色板的官方示例截图 palettes/water/deepOcean/images/sample.png 查看实际效果——深蓝黑背景上分布着大小不一的蓝白粒子整体冷冽、静谧符合深海的视觉预期。IPalette 接口与源码结构为了真正理解 Deep Ocean 调色板需要先了解引擎对调色板数据结构的约定。调色板对象实现了引擎的IPalette接口定义在 engine/src/Core/Interfaces/IPalette.ts/** Color palette definition */ export interface IPalette { /** Background color */ background: string; /** Canvas blend mode */ blendMode: GlobalCompositeOperation; /** Palette colors, single or multiple sets */ colors: SingleOrMultipleIPaletteColors; /** Palette name */ name: string; }其中colors可以是单个颜色配置也可以是多个颜色配置的组合SingleOrMultipleIPaletteColors。每个颜色配置IPaletteColors又包含可选的fill填充与stroke描边两部分IPaletteColorsFillenable是否启用、可选opacity不透明度范围RangeValue、value单个或一组颜色字符串IPaletteColorsStroke可选opacity、value以及width描边宽度范围RangeValue。Deep Ocean 目前只使用了fill分支enable: true 14 色数组没有定义stroke。这意味着如果你想进一步定制例如让粒子带描边或改变不透明度可以基于这套结构扩展无需改动引擎。从包结构看palettes/water/deepOcean/src/ 目录非常精简包含四个源文件index.ts导出loadDeepOceanPalette加载函数内部通过engine.pluginManager.register(...)注册调色板options.ts调色板数据本体即上文代码browser.ts浏览器入口把loadDeepOceanPalette挂到globalThis供 CDN 场景直接调用index.lazy.ts懒加载入口使用动态import(./options.js)只在需要时才加载调色板数据适合按需引入的场景。加载函数是如何注册调色板的index.ts 的核心逻辑如下export async function loadDeepOceanPalette(engine: Engine): Promisevoid { await engine.pluginManager.register(e { e.pluginManager.addPalette(paletteName, options); }); }其中paletteName deep-ocean。引擎的PluginManager在 engine/src/Core/Utils/PluginManager.ts 中把调色板存入Mapstring, IPaletteaddPalette(name: string, palette: IPalette): void { this.palettes.set(name, palette); }当配置中写了palette: deep-ocean时引擎会通过getPalette(name)engine/src/Core/Utils/PluginManager.ts取出调色板数据并在选项加载阶段导入Options类与ParticlesOptions类中都有#importPalette私有方法见 engine/src/Options/Classes/Options.ts 与 engine/src/Options/Classes/Particles/ParticlesOptions.ts它们通过pluginManager.getPalette(palette)获取数据并应用到粒子与背景配置。也就是说palette: deep-ocean只是一个字符串键真正的颜色数据由已注册的调色板插件提供——必须先调用loadDeepOceanPalette(engine)配置中的palette键才能解析成功否则会被静默忽略getPalette找不到数据时直接return。安装与引入根据 palettes/water/deepOcean/README.md 的 Quick checklist集成 Deep Ocean 调色板只需要三步安装tsparticles/engine或直接使用下面的 CDN bundle加载一个基础运行包例如tsparticles/basic并在调用tsParticles.load(...)之前调用loadDeepOceanPalette在选项中使用palette: deep-ocean并搭配一份最小的粒子配置。npm 方式在支持打包器的项目如 Vite、Webpack、Next.js中使用 npm 安装npm install tsparticles/engine tsparticles/basic tsparticles/palette-deep-ocean注意包名中的连字符npm 包名是tsparticles/palette-deep-ocean见 palettes/water/deepOcean/package.json而加载函数名是loadDeepOceanPalette、注册键是deep-ocean三者的命名风格并不完全一致使用时不要混淆。package.json中暴露了标准入口与懒加载入口两个子路径tsparticles/palette-deep-ocean与tsparticles/palette-deep-ocean/lazy对应 index.lazy.ts后者配合动态 import 可以进一步减小首屏包体。此外该包声明了sideEffects: false可安全参与 tree-shaking。CDN / Vanilla JS / jQuery不使用构建工具时直接引入basicbundle 与调色板 bundleCDN 文件后缀为.min.js加载函数会暴露为全局变量script srchttps://cdn.jsdelivr.net/npm/tsparticles/basic4/tsparticles.basic.bundle.min.js/script script srchttps://cdn.jsdelivr.net/npm/tsparticles/palette-deepOcean4/tsparticles.palette-coloredSmokeAmber.min.js/script⚠️ 注意README 原示例中调色板 bundle 的 URL 与tsparticles/palette-deepOcean包名并不一致文件名沿用了其他调色板的命名实际 CDN 文件名以发布产物为准。更稳妥的做法是使用 npm 引入或参考 jsDelivr 上tsparticles/palette-deep-ocean包内实际的 bundle 文件名。引入后脚本会在globalThis上暴露loadDeepOceanPalette全局函数见 palettes/water/deepOcean/src/browser.tsVanilla JS 与 jQuery 项目可以直接调用。基本用法深海粒子背景Vanilla JS 完整示例以下是 palettes/water/deepOcean/README.md 提供的完整可运行示例HTML 中需先引入上面的 CDN 脚本(async engine { await loadBasic(engine); await loadDeepOceanPalette(engine); const options { particles: { number: { value: 200 }, shape: { type: circle }, size: { value: { min: 10, max: 15 } }, move: { enable: true, speed: 2, }, }, palette: deepOcean, }; await engine.load({ id: tsparticles, options, }); })(tsParticles);对这份配置的逐项说明loadBasic(engine)加载基础运行包提供圆形粒子、移动等基础能力loadDeepOceanPalette(engine)必须先于engine.load(...)调用把deep-ocean调色板注册进引擎particles.number.value: 200粒子总数 200 个particles.shape.type: circle粒子形状为圆形particles.size.value: { min: 10, max: 15 }粒子半径在 1015 之间随机particles.move.enable: truespeed: 2开启移动速度为 2palette: deepOcean引用调色板。这里 README 示例写的是deepOcean而源码注册键为deep-oceanpalettes/water/deepOcean/src/index.ts。由于getPalette采用精确字符串匹配建议以源码为准使用deep-ocean确保调色板一定能被解析命中。自定义与覆盖README 特别强调你可以像任何标准 tsParticles 安装一样覆盖所有选项。调色板只提供默认颜色集合并不锁定其他行为。例如想调大粒子、加速漂移、改用方形粒子只需在options中覆盖对应字段const options { background: { color: #000a14 }, // 也可显式设置背景 particles: { number: { value: 300 }, shape: { type: square }, size: { value: { min: 4, max: 8 } }, opacity: { value: 0.8 }, move: { enable: true, speed: 0.5, direction: top, }, }, palette: deep-ocean, };需要更丰富的视觉时还可以进一步叠加插件——例如结合tsparticles/plugin-emitters让粒子从指定位置喷涌模拟深海热泉或气泡上升或叠加tsparticles/updater-color让粒子颜色随时间渐变。调色板与这些插件是正交组合的关系互不冲突。在框架组件库中使用如果你在使用 React、Vue、Angular、Svelte 等官方组件库包装器如tsparticles/react、tsparticles/vue3等仓库对应目录见 wrappers/集成方式一致先安装tsparticles/palette-deep-ocean然后在初始化回调中调用loadDeepOceanPalette再把palette: deep-ocean放进组件配置对象。以 React 为例的伪代码结构import { useCallback, useMemo } from react; import Particles from tsparticles/react; import { loadBasic } from tsparticles/basic; import { loadDeepOceanPalette } from tsparticles/palette-deep-ocean; export default function DeepOceanBackground() { const init useCallback(async (engine) { await loadBasic(engine); await loadDeepOceanPalette(engine); }, []); const options useMemo(() ({ particles: { number: { value: 200 }, shape: { type: circle }, size: { value: { min: 10, max: 15 } }, move: { enable: true, speed: 2 }, }, palette: deep-ocean, }), []); return Particles idtsparticles init{init} options{options} /; }各框架的具体属性名与生命周期钩子以对应包装器文档为准核心都是先加载基础包 → 再加载调色板 → 配置中引用 palette 键这个固定顺序。迁移到其他官方调色板Deep Ocean 只是palettes/water系列之一。同系列还包括 lagoon泻湖、rain雨、splash水花、inkInWater水中墨、fogCoastal海岸雾、foamAndBubbles泡沫与气泡、risingBubbles上升气泡、default默认等分别位于 palettes/water/ 目录下。它们拥有完全相同的源码骨架index.tsoptions.tsbrowser.tsindex.lazy.ts差异只在options.ts中的色值与背景色。因此迁移步骤可以总结为四步安装对应调色板包如tsparticles/palette-lagoon调用其loadXxxPalette(engine)加载函数将配置中的palette键改为该调色板的注册名保持基础包与粒子选项不变。由于PluginManager使用Map存储调色板engine/src/Core/Utils/PluginManager.ts同一次会话中可以注册多个调色板按配置切换引用即可。常见问题与排查问题 1配置了palette但粒子没有上色几乎都是因为loadDeepOceanPalette(engine)未被调用或调用晚于engine.load(...)。此时getPalette查不到数据#importPalette直接返回调色板被静默忽略见 engine/src/Options/Classes/Options.ts。请确认顺序加载函数必须在engine.load之前完成。问题 2palette: deepOcean与deep-ocean哪个正确README 示例写的是deepOcean但 index.ts 中的注册键是deep-ocean。字符串匹配是精确的建议使用源码中的deep-ocean如果使用了 README 的写法却未生效替换为deep-ocean即可。问题 3CDN 引入后loadDeepOceanPalette is not defined确认引入了调色板的 bundle 脚本它会暴露全局loadDeepOceanPalette并检查 CDN 文件名与发布产物是否一致如不确定优先改用 npm 安装。小结Deep Ocean 调色板是 tsParticles 官方调色板体系中极具代表性的一个它用 14 级蓝白色阶与近乎黑色的深海底色#000a14把深海光线随深度衰减的自然规律抽象为一组可复用的颜色数据。通过本文你应该已经掌握调色板的IPalette数据结构、loadDeepOceanPalette的注册原理PluginManager.addPalette/getPalette、CDN 与 npm 两种接入方式、最小可运行的深海粒子背景配置以及如何把同一套流程迁移到其他官方调色板。接下来试着把number、size、speed调成你自己的参数再叠加 emitters 或颜色渐变插件就能得到独一无二的深海背景动画。【免费下载链接】tsparticlestsParticles - Easily create highly customizable JavaScript particles effects, confetti explosions and fireworks animations and use them as animated backgrounds for your website. Ready to use components available for React.js, Vue.js (2.x and 3.x), Angular, Svelte, jQuery, Preact, Inferno, Solid, Riot and Web Components.项目地址: https://gitcode.com/GitHub_Trending/ts/tsparticles创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

平面向量数乘坐标运算实战:共线判定与Python实现

平面向量数乘坐标运算实战:共线判定与Python实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 1:48:32 阅读更多 →
TypeSpec 值(Value)体系完全指南:对象值、数组值、标量值与 `valueof` 约束

TypeSpec 值(Value)体系完全指南:对象值、数组值、标量值与 `valueof` 约束

TypeSpec 值(Value)体系完全指南:对象值、数组值、标量值与 valueof 约束 【免费下载链接】typespec 项目地址: https://gitcode.com/GitHub_Trending/ty/typespec TypeSpec 语言在类型系统之外提供了一套独立的“值(Valu…

2026/9/19 1:48:32 阅读更多 →
Linux驱动自动加载机制详解:从modprobe到设备树与udev

Linux驱动自动加载机制详解:从modprobe到设备树与udev

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 1:48:32 阅读更多 →

最新新闻

ISO 17021-10审核员能力评估:从危险源辨识到持续适任的完整框架

ISO 17021-10审核员能力评估:从危险源辨识到持续适任的完整框架

简介:ISO IEC TS 17021-10:2018《职业健康与安全管理系统的审核和认证能力要求》完整英文版,面向从事OH&S MS审核、认证及相关合规工作的专业人士。规范系统规定了审核员与认证机构的知识、技能、经验、道德行为及持续发展要求,涵盖范围、…

2026/9/19 2:32:58 阅读更多 →
Android RS-485通信实战:解决阻塞读取与方向控制两大深坑

Android RS-485通信实战:解决阻塞读取与方向控制两大深坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/19 2:32:58 阅读更多 →
Matlab实现莱斯信道下QPSK仿真与星座图畸变分析

Matlab实现莱斯信道下QPSK仿真与星座图畸变分析

简介:本资源是一份面向通信工程专业学生、无线通信方向研究者及Matlab仿真初学者的实践型教学文档,聚焦莱斯信道下QPSK信号传输特性的建模与仿真分析。文档系统讲解了移动无线信道分类、小尺度衰落机理、瑞利与莱斯分布的物理意义及K因子对误比特率的影响…

2026/9/19 2:32:58 阅读更多 →
Java安卓外卖订餐系统课程设计实战:从选型到订单状态机

Java安卓外卖订餐系统课程设计实战:从选型到订单状态机

简介:面向Java/Android学习者的外卖订餐系统课程设计报告,完整记录了从需求分析到项目落地的全过程。文档以软件工程规范为纲,先阐述课程设计目的与任务,再展开需求分析,包含数据流图、用例图、时序图、活动图等建模内…

2026/9/19 2:32:58 阅读更多 →
国产MQTT协议栈选型指南:从License合规到边缘性能实战

国产MQTT协议栈选型指南:从License合规到边缘性能实战

1. 项目概述:为什么国产 MQTT 协议栈不是“换个名字”,而是架构级的重新选择最近三个月,我连续接手了四个工业物联网项目,客户提的需求高度一致:“能不能不用 Mosquitto 或 EMQX?最好用国产的。”起初我以为…

2026/9/19 2:32:58 阅读更多 →
GTM与GA4事件追踪实战:从埋点原理到排错技巧全解析

GTM与GA4事件追踪实战:从埋点原理到排错技巧全解析

做网站分析这一行,埋点永远是个绕不开的活儿。刚入行那会儿,我最烦的就是为了一两个按钮统计去麻烦开发改代码,提个需求排期三五天,改完上线再等数据积累,黄花菜都凉了。后来开始用GTM统一管理GA的追踪代码&#xff0c…

2026/9/19 2:31:58 阅读更多 →

日新闻

BP神经网络时序预测:滑窗长度与多窗口平均策略

BP神经网络时序预测:滑窗长度与多窗口平均策略

简介:面向机器学习、深度学习与数据建模学习者的一份完整研究文献,聚焦BP神经网络在农业产量预测中的应用。文档以1980—2018年全国棉花产量为样本,系统讲解数据归一化处理、激活函数原理、多层神经网络结构搭建及训练流程,展示敏…

2026/9/19 0:00:30 阅读更多 →
Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

Transformer训练实时监控实战:基于MindSpore的损失曲线可视化方案

上个月调一个Deformable DETR模型,在单卡上要跑将近两天。第二天早上我下意识打开终端翻日志,发现loss从凌晨两点就开始往上爬,一路从0.8涨到1.35,整整六个小时没人发现。那六个小时的训练不仅白跑,还霸占着卡——等于…

2026/9/19 0:00:30 阅读更多 →
OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南

OpenCloud 中的 Go 类型安全转换库 spf13/cast:从零值回退到泛型 API 的完整实战指南 【免费下载链接】opencloud 🌤️ OpenCloud is the open source platform for file management, sharing and collaboration. Simple and sovereign. 项目地址: htt…

2026/9/19 0:00:30 阅读更多 →

周新闻

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验 【免费下载链接】ai The AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and ag…

2026/9/16 19:03:19 阅读更多 →
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化

Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化 【免费下载链接】refine A React Framework for building internal tools, admin panels, dashboards & B2B apps with unmatched flexibility. 项目地址: https://gitcode.com/GitH…

2026/9/17 7:57:36 阅读更多 →
Flutter应用改名全指南:从Android到iOS的配置与工具实践

Flutter应用改名全指南:从Android到iOS的配置与工具实践

刚接一个外包项目时,甲方要求把工程里临时用的应用名改成正式产品名。我本来觉得“改名”这种小事,打开配置文件改一行不就完了?结果真动手才发现,Flutter项目里“应用名称”根本不是一处配置,而是一整套散落在 Androi…

2026/9/17 10:19:14 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/16 22:31:27 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/15 21:39:18 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/16 22:32:59 阅读更多 →