在本教程中,我们将使用纯 HTML、CSS 和 JavaScript 构建带有浮动粒子的迷人霓虹灯效果。我们将分解每个组件并解释它们如何协同工作来创造这种令人惊叹的视觉效果。
1. 理解核心结构
让我们从分解基本的 HTML 结构开始:
<title>Neon Light Effect</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <div> <p>Here's what each element does:</p> <ul> <li> light-effect: Main container for our neon effect</li> <li> light-inner: Creates the core glow effect</li> <li> light-outer: Adds an additional layer of luminosity and rotation</li> </ul> <h2> 2. CSS Variables and Root Setup </h2> <p>First, let's understand our CSS variables:<br> </p> <pre class="brush:php;toolbar:false">:root { --blur-size: min(40vw, 40vh); }
这个变量至关重要,因为:
- 使用 min() 确保响应式大小调整
- 组合视口宽度 (vw) 和高度 (vh)
- 在不同的屏幕尺寸上创建比例效果
3. 身体造型深入研究
body { margin: 0; overflow: hidden; background: black; height: 100vh; width: 100vw; display: flex; justify-content: center; align-items: center; }
让我们分解每个属性:
- margin: 0: 删除默认间距
- 溢出:隐藏:防止滚动条并包含粒子
- 背景:黑色:为霓虹灯效果创建对比度
- 高度/宽度:100vh/vw:确保完全视口覆盖
- display: flex: 启用居中定位
- justify-content/align-items: center: 完美居中
4. 主要光效容器
.light-effect { width: var(--blur-size); height: var(--blur-size); position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); filter: blur(calc(var(--blur-size) * 0.25)); animation: pulseNeon 8s ease-in-out infinite; }
关键方面解释:
- 调整大小:使用 CSS 变量实现响应式尺寸
-
定位:
- 位置:固定:确保滚动过程中的稳定性
- 上/左:50%:位于视口中心的位置
- 变换:翻译(-50%,-50%):完美居中
-
模糊效果:
- 基于大小的动态模糊
- 创造柔和、逼真的光泽
-
动画:
- 8秒持续时间,效果流畅
- 自然运动的缓入时机
5. 内部光层细节
.light-inner { position: absolute; width: 100%; height: 100%; background: radial-gradient(circle, rgba(138, 43, 226, 0.2) 0%, rgba(72, 61, 139, 0.15) 30%, rgba(0, 0, 255, 0.1) 50%, rgba(255, 255, 255, 0) 70%); mix-blend-mode: screen; }
梯度分析:
-
中心(0%):
- 不透明度为 20% 的紫色调
- 创造核心亮度
-
中层(30%):
- 不透明度为 15% 时呈深紫色
- 增加深度
-
外层(50%):
- 不透明度为 10% 的蓝色调
- 创建过渡
-
边缘(70%):
- 淡入透明
- 平滑边缘融合
6. 外部光层细节
.light-outer { position: absolute; width: 100%; height: 100%; background: radial-gradient(circle, rgba(255, 255, 255, 0.15) 0%, rgba(138, 43, 226, 0.1) 40%, rgba(0, 0, 255, 0.05) 60%, rgba(255, 255, 255, 0) 80%); animation: rotateGradient 10s linear infinite; mix-blend-mode: screen; }
特效分解:
-
梯度结构:
- 白色中心的强度
- 紫色中间颜色
- 蓝色外层有深度
-
动画:
- 10秒旋转
- 线性定时,实现平稳运动
-
混合:
- 屏幕模式发光效果
- 增强光泽和色彩混合
7. 动画关键帧解释
<title>Neon Light Effect</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <div> <p>Here's what each element does:</p> <ul> <li> light-effect: Main container for our neon effect</li> <li> light-inner: Creates the core glow effect</li> <li> light-outer: Adds an additional layer of luminosity and rotation</li> </ul> <h2> 2. CSS Variables and Root Setup </h2> <p>First, let's understand our CSS variables:<br> </p> <pre class="brush:php;toolbar:false">:root { --blur-size: min(40vw, 40vh); }
动画详情:
-
pulseNeon:
- 通过翻译保持中心位置
- 范围在 1 到 1.1 之间
- 创造呼吸效果
-
旋转渐变:
- 360度全方位旋转
- 持续运动
- 增添活力
8. 粒子系统深入研究
body { margin: 0; overflow: hidden; background: black; height: 100vh; width: 100vw; display: flex; justify-content: center; align-items: center; }
颗粒特征:
-
基础粒子:
- 固定定位
- 半透明白色
- 圆形
- 没有指针事件
-
尺寸变化:
- 使用 min() 响应式调整大小
- 不同的动画速度
- 在所有设备上保持比例
9. 粒子运动动画
.light-effect { width: var(--blur-size); height: var(--blur-size); position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); filter: blur(calc(var(--blur-size) * 0.25)); animation: pulseNeon 8s ease-in-out infinite; }
动作分解:
-
开始(0%):
- 从视口下方开始
- 隐形状态
-
淡入(20%):
- 平滑的不透明度过渡
-
主要动作(20-80%):
- 完全可见
- 稳定向上运动
-
退出(80-100%):
- 淡出效果
- 视口上方轻微重叠
10.动态粒子生成
.light-inner { position: absolute; width: 100%; height: 100%; background: radial-gradient(circle, rgba(138, 43, 226, 0.2) 0%, rgba(72, 61, 139, 0.15) 30%, rgba(0, 0, 255, 0.1) 50%, rgba(255, 255, 255, 0) 70%); mix-blend-mode: screen; }
函数分析:
-
粒子创建:
- 动态 DOM 元素创建
- 随机大小分配
- 概率分布
-
定位逻辑:
- 随机水平放置
- 随机动画延迟
-
内存管理:
- 自动清理
- 持续时间根据大小
- 防止内存泄漏
11.响应式设计实现
.light-outer { position: absolute; width: 100%; height: 100%; background: radial-gradient(circle, rgba(255, 255, 255, 0.15) 0%, rgba(138, 43, 226, 0.1) 40%, rgba(0, 0, 255, 0.05) 60%, rgba(255, 255, 255, 0) 80%); animation: rotateGradient 10s linear infinite; mix-blend-mode: screen; }
响应注意事项:
-
平板电脑设备(≤768px):
- 相对尺寸增加
- 保持比例
-
移动设备(≤480px):
- 最大相对尺寸
- 针对小屏幕进行了优化
12. 性能优化
@keyframes pulseNeon { 0% { transform: translate(-50%, -50%) scale(1); } 50% { transform: translate(-50%, -50%) scale(1.1); } 100% { transform: translate(-50%, -50%) scale(1); } } @keyframes rotateGradient { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
优化策略:
-
响应间隔:
- 移动设备上的颗粒更少
- 根据设备功能进行调整
-
内存管理:
- 清除旧间隔
- 防止多个实例
-
事件处理:
- 响应窗口大小调整
- 保持性能
结论
此效果结合了多层复杂性:
- 用于响应式调整大小的动态 CSS 变量
- 复杂的渐变组合带来逼真的光泽
- 增加深度的粒子系统
- 性能优化以实现平稳运行
- 适用于所有设备的响应式设计
结果是迷人的霓虹灯效果,可以增强任何 Web 项目,同时对性能影响最小。
以上是使用 HTML、CSS 和 JavaScript 创建浮动粒子霓虹灯效果的详细内容。更多信息请关注PHP中文网其他相关文章!
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

对于Astro,我们可以在构建过程中生成大部分网站,但是有一小部分服务器端代码可以使用Fuse.js之类的搜索功能来处理搜索功能。在此演示中,我们将使用保险丝搜索一组个人“书签”


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章
刺客信条阴影:贝壳谜语解决方案
3 周前ByDDD
Windows 11 KB5054979中的新功能以及如何解决更新问题
2 周前ByDDD
在哪里可以找到原子中的起重机控制钥匙卡
3 周前ByDDD
<🎜>:死铁路 - 如何完成所有挑战
4 周前ByDDD
Atomfall指南:项目位置,任务指南和技巧
4 周前ByDDD

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

Dreamweaver Mac版
视觉化网页开发工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能