仿js特效代码怎么写?网页动态效果实现教程

“仿 JS 特效”通常指的是在前端开发中,通过 JavaScript 配合 CSS 实现的视觉交互效果,由于特效种类繁多,我将为你提供 4 种最经典、实用且易于理解的 JavaScript 特效代码示例,涵盖:

  1. 鼠标跟随光晕效果(炫酷背景)
  2. 打字机效果(文字动画)
  3. 滚动视差/淡入效果(页面滚动交互)
  4. 点击涟漪效果(Material Design 风格)

鼠标跟随光晕效果(Mouse Follow Glow)

效果描述:鼠标移动时,背景出现一个跟随鼠标的柔和光晕。

CSS + JS 实现页面滚动效果(内附源代码参考)
加载中
CSS + JS 实现页面滚动效果(内附源代码参考)
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">鼠标跟随光晕</title>
    <style>
        body {
            margin: 0;
            height: 100vh;
            background: #111;
            overflow: hidden;
            display: flex;
            justify-content: center;
            align-items: center;
            color: white;
            font-family: Arial, sans-serif;
        }
        .glow {
            position: fixed;
            width: 300px;
            height: 300px;
            background: radial-gradient(circle, rgba(0, 255, 255, 0.3) 0%, rgba(0, 0, 0, 0) 70%);
            border-radius: 50%;
            pointer-events: none; / 让鼠标事件穿透 /
            transform: translate(-50%, -50%);
            z-index: -1;
            transition: transform 0.1s ease; / 轻微延迟让效果更平滑 /
        }
    </style>
</head>
<body>
    <h1>移动鼠标看看效果</h1>
    <div class="glow" id="glow"></div>
    <script>
        const glow = document.getElementById('glow');
        document.addEventListener('mousemove', (e) => {
            // 获取鼠标位置
            const x = e.clientX;
            const y = e.clientY;
            // 更新光晕位置
            glow.style.left = x + 'px';
            glow.style.top = y + 'px';
        });
    </script>
</body>
</html>

打字机效果(Typewriter Effect)

效果描述:文字逐个字符显示,类似打字机。

仿js特效代码怎么写?网页动态效果实现教程

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8">打字机效果</title> <style> body { background: #222; color: #0f0; font-family: 'Courier New', monospace; display: flex; justify-content: center; align-items: center; height: 100vh; font-size: 24px; } #typewriter { border-right: 2px solid #0f0; white-space: nowrap; overflow: hidden; animation: blink 0.7s step-end infinite; } @keyframes blink { 50% { border-color: transparent; } } </style> </head> <body> <span id="typewriter"></span> <script> const text = "你好,我是AI助手,我正在学习JavaScript特效!"; const element = document.getElementById('typewriter'); let index = 0; function typeWriter() { if (index < text.length) { element.innerHTML += text.charAt(index); index++; setTimeout(typeWriter, 100); // 每个字符间隔100ms } } // 页面加载后开始 window.onload = typeWriter; </script> </body> </html>

滚动淡入效果(Scroll Reveal)

效果描述:当元素进入视口时,逐渐显示(淡入+上移)。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">滚动淡入效果</title>
    <style>
        body {
            background: #f5f5f5;
            font-family: sans-serif;
            padding: 50px;
        }
        .reveal {
            opacity: 0;
            transform: translateY(50px);
            transition: all 0.8s ease-out;
            padding: 20px;
            margin: 20px 0;
            background: white;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        .reveal.active {
            opacity: 1;
            transform: translateY(0);
        }
        .spacer {
            height: 300px;
            background: #e0e0e0;
            margin: 20px 0;
            display: flex;

仿js特效代码怎么写?网页动态效果实现教程

justify-content: center; align-items: center; color: #666; } </style> </head> <body> <h1>向下滚动查看效果</h1> <div class="reveal">内容块 1</div> <div class="spacer">滚动到这里...</div> <div class="reveal">内容块 2</div> <div class="spacer">继续滚动...</div> <div class="reveal">内容块 3</div> <script> // 使用 Intersection Observer API(现代浏览器推荐) const observer = new IntersectionObserver((entries) => { entries.forEach(entry => { if (entry.isIntersecting) { entry.target.classList.add('active'); } }); }, { threshold: 0.1 // 元素出现10%时触发 }); document.querySelectorAll('.reveal').forEach(el => { observer.observe(el); }); </script> </body> </html>

点击涟漪效果(Click Ripple)

效果描述:点击按钮或元素时,从点击位置扩散出圆形波纹。

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">点击涟漪效果</title>
    <style>
        body {
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            background: #333;
        }
        .ripple-btn {
            position: relative;
            padding: 15px 40px;
            background: #007bff;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            overflow: hidden; / 关键:隐藏溢出 /
            font-size: 18px;
        }
        .ripple {
            position: absolute;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.6);
            transform: scale(0);
            animation: ripple-animation 0.6s linear;
            pointer-events: none;
        }
        @keyframes ripple-animation {
            to {
                transform: scale(4);
                opacity: 0;
            }
        }
    </style>
<

仿js特效代码怎么写?网页动态效果实现教程

/head> <body> <button class="ripple-btn" id="btn">点击我</button> <script> const btn = document.getElementById('btn'); btn.addEventListener('click', function(e) { // 创建涟漪元素 const ripple = document.createElement('span'); ripple.classList.add('ripple'); // 获取按钮尺寸和点击位置 const rect = btn.getBoundingClientRect(); const size = Math.max(rect.width, rect.height); const x = e.clientX - rect.left - size / 2; const y = e.clientY - rect.top - size / 2; // 设置样式 ripple.style.width = ripple.style.height = `${size}px`; ripple.style.left = `${x}px`; ripple.style.top = `${y}px`; // 添加到按钮 btn.appendChild(ripple); // 动画结束后移除元素 ripple.addEventListener('animationend', () => { ripple.remove(); }); }); </script> </body> </html>

✅ 使用建议

特效类型 适用场景 性能提示
鼠标跟随 登录页、创意首页 避免频繁操作 DOM,使用 transform 和 opacity
打字机 个人简介、加载提示 使用 setTimeout 或 requestAnimationFrame
滚动淡入 长页面、产品展示 推荐使用 IntersectionObserver,性能优于 scroll 事件
点击涟漪 按钮、卡片交互 及时移除 DOM 元素,防止内存泄漏

🚀 进阶推荐库

如果你需要更复杂的特效,建议使用成熟库:

  • GSAP (GreenSock):最强大的动画库,适合复杂时间线动画。
  • Three.js:3D WebGL 特效。
  • Lottie:播放 After Effects 导出的 JSON 动画。
  • AOS (Animate On Scroll):轻量级滚动动画库。

需要我针对某个特效进行更深入的解释或定制吗?

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/483474.html

赞 (0)
linux备份指令怎么用?linux系统数据备份方法
上一篇 2026年7月11日 21:48
百度网盘cdn是什么,百度网盘cdn加速怎么设置
下一篇 2026年7月11日 21:50

相关推荐

  • 服务器客户端字符串TCP通信出错怎么办?TCP粘包拆包解决方法

    在TCP协议下,服务器与客户端通过字符串进行通信时,核心在于处理“粘包”与“拆包”问题,通常采用固定长度、分隔符或长度前缀等策略来确保数据边界清晰,想象一下,TCP就像是一条没有隔断的传送带,而字符串则是你放在上面的包裹,服务器和客户端就是传送带两端的工人,如果包裹大小不一,且源源不断地堆叠,工人就很难分清哪个……

    2026年7月5日
    6200
  • IPv9根服务器与信任根CA是什么关系,怎么用?

    IPv9根服务器与信任根CA是一个完整的独立信任体系:IPv9根服务器负责地址解析和路由调度,信任根CA则掌握着这个体系内所有证书的最终签发权,两者共同构成一套不依赖ICANN的下一代互联网基础设施,ipv9根服务器是什么?和IPv6根服务器相比有何不同如果把互联网比作一座城市,根服务器就是城市里的“总户籍管理……

    2026年8月12日
    600
  • 服务器存储公司哪家好?服务器存储公司排名

    服务器存储公司通过提供高性能、高可靠性的数据存储解决方案,帮助企业解决数据爆炸式增长带来的管理难题,是数字化转型中不可或缺的基础设施服务商,在数字化浪潮席卷全球的今天,数据已成为企业的核心资产,从初创企业的云端备份到大型金融机构的交易记录,再到智能制造工厂的实时生产数据,每一比特信息都承载着巨大的商业价值,面对……

    2026年7月5日
    17200
  • 服务器突然没网了怎么办?电脑连接不上网络解决方法

    服务器没有网络是一个常见但可能由多种原因导致的问题,为了帮助你快速定位并解决该问题,我将排查步骤分为本地检查、网络配置检查、防火墙/安全组检查以及硬件/物理层检查四个部分,请按照以下顺序逐步排查:基础连通性检查(Ping 测试)首先确定是“完全无连接”还是“部分网络不通”,Ping 网关:ping <网关……

    2026年7月10日
    20100
  • 服务器真的需要上云吗?上云有哪些优缺点

    服务器是否需要上云,核心取决于业务规模、技术团队能力及成本控制需求;对于初创企业和波动型业务,上云是更优解;对于数据敏感或高并发稳定的传统企业,混合云或私有云可能更合适,上云决策的底层逻辑:不仅仅是技术迁移很多企业主在考虑服务器上云时,第一反应往往是“能不能省钱”或者“会不会更慢”,这种非黑即白的思维容易让人陷……

    2026年7月4日
    19600
  • 服务器加客户端机房管理软件哪个好,有哪些推荐?

    在机房基础设施管理中,采用服务器加客户端架构的软件平台被公认为最佳实践,它将硬件层的带外管理与上层业务监控深度融合,实现跨平台统一运维,机房管理软件哪个好?服务器加客户端架构的核心优势行业共识认为,服务器加客户端模式是目前机房管理软件的主流选择,这种架构通过在机房部署管理服务器,并在各被管设备上安装客户端代理……

    2026年7月19日
    300
  • 如何修改IIS已绑定的网站域名?,具体步骤是什么?

    在IIS中修改已绑定的网站域名,核心操作是进入网站属性的绑定设置,编辑或添加主机名,并确保新域名的DNS解析和SSL证书匹配,整个过程无需重启IIS服务,理解IIS域名绑定的机制在动手修改之前,先搞清楚IIS如何处理域名请求,IIS通过网站绑定(Binding)来匹配传入的HTTP请求,绑定由三要素构成:IP地……

    2026年8月11日
    700
  • 方法互相调用怎么实现?不同方法之间如何互相调用

    方法互相调用的核心在于通过中间层或统一接口,让不同模块的代码逻辑实现无缝衔接,从而打破“信息孤岛”,提升系统的可维护性与扩展性,在软件开发和系统架构设计中,我们常遇到这样的困境:A功能需要B的数据,B又依赖C的计算,而C反过来又要调用A的状态,如果直接让A调用B,B调用C,C又回头找A,代码就会变成一团剪不断的……

    2026年7月1日
    1100
  • iis添加域名_添加域名

    在IIS中添加域名绑定的核心,就是通过站点属性的“主机名”字段,将域名与网站关联起来,同时确保DNS解析正确指向服务器IP,很多新手搞定绑定后网站依然打不开,问题往往出在防火墙、安全组或DNS延迟上,下面从准备到排错,一步步拆解,IIS添加域名绑定的标准操作流程操作并不复杂,但每一步都依赖前置条件,漏掉一个就会……

    2026年8月11日
    800
  • IP防火墙和普通防火墙有何区别,防火墙怎么设置?

    ip防火墙是什么:先搞懂它和传统防火墙的区别IP防火墙的核心价值在于:它不只是一道网络大门,而是基于IP地址维度的智能访问控制体系,能让你的服务器只对”该来的人”开门,很多朋友搞不清楚”ip防火墙”和平时听说的”防火墙”到底有什么区别,行业共识认为,传统防火墙侧重端口和协议的过滤,而IP防火墙更聚焦在源IP地址……

    2026年8月8日
    1200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注