前端动画:别再用 jQuery animate 了

前端动画:别再用 jQuery animate 了

毒舌时刻

这动画效果做得跟幻灯片似的,一点都不流畅。

各位前端同行,咱们今天聊聊前端动画。别告诉我你还在使用 jQuery animate,那感觉就像在没有减震器的情况下开车——能开,但颠簸得要命。

为什么你需要现代前端动画

最近看到一个项目,动画效果卡顿,代码复杂难以维护。我就想问:你是在做动画还是在做卡顿展示?

反面教材

// 反面教材:使用 jQuery animate // index.html <!DOCTYPE html> <html> <head> <title>jQuery Animation</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <style> .box { width: 100px; height: 100px; background-color: red; position: relative; } </style> </head> <body> <div></div> <button>动画</button> <script src="app.js"></script> </body> </html> // app.js $(document).ready(function() { $('#animate').click(function() { $('.box').animate({ left: '200px', opacity: '0.5', height: '200px', width: '200px' }, 1000); }); }); 

毒舌点评:这动画,就像在看幻灯片,一点都不流畅。

正确姿势

1. CSS 动画

/* 正确姿势:CSS 动画 */ /* styles.css */ .box { width: 100px; height: 100px; background-color: red; position: relative; transition: all 0.3s ease; } .box:hover { transform: scale(1.2); background-color: blue; } .box.animate { animation: move 1s ease forwards; } @keyframes move { from { left: 0; opacity: 1; height: 100px; width: 100px; } to { left: 200px; opacity: 0.5; height: 200px; width: 200px; } } /* index.html */ <!DOCTYPE html> <html> <head> <title>CSS Animation</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div></div> <button>动画</button> <script src="app.js"></script> </body> </html> /* app.js */ document.getElementById('animate').addEventListener('click', function() { const box = document.querySelector('.box'); box.classList.add('animate'); setTimeout(() => { box.classList.remove('animate'); }, 1000); }); 

2. Framer Motion

// 正确姿势:Framer Motion // 1. 安装依赖 // npm install framer-motion // 2. 基本使用 import React, { useState } from 'react'; import { motion } from 'framer-motion'; function App() { const [animate, setAnimate] = useState(false); return ( <div> <motion.div className="box" initial={{ x: 0, opacity: 1, height: 100, width: 100 }} animate={animate ? { x: 200, opacity: 0.5, height: 200, width: 200 } : {}} transition={{ duration: 1 }} whileHover={{ scale: 1.1, backgroundColor: 'blue' }} /> <button onClick={() => setAnimate(!animate)}> {animate ? '重置' : '动画'} </button> </div> ); } export default App; // styles.css .box { background-color: red; position: relative; } 

3. GreenSock Animation Platform (GSAP)

// 正确姿势:GSAP // 1. 安装依赖 // npm install gsap // 2. 基本使用 import React, { useRef, useEffect } from 'react'; import gsap from 'gsap'; function App() { const boxRef = useRef(null); const handleAnimate = () => { gsap.to(boxRef.current, { x: 200, opacity: 0.5, height: 200, width: 200, duration: 1, ease: 'power2.out' }); }; const handleReset = () => { gsap.to(boxRef.current, { x: 0, opacity: 1, height: 100, width: 100, duration: 1, ease: 'power2.out' }); }; return ( <div> <div ref={boxRef} className="box"></div> <button onClick={handleAnimate}>动画</button> <button onClick={handleReset}>重置</button> </div> ); } export default App; // styles.css .box { width: 100px; height: 100px; background-color: red; position: relative; } 

4. React Spring

// 正确姿势:React Spring // 1. 安装依赖 // npm install @react-spring/web // 2. 基本使用 import React, { useState } from 'react'; import { useSpring, animated } from '@react-spring/web'; function App() { const [animate, setAnimate] = useState(false); const styles = useSpring({ x: animate ? 200 : 0, opacity: animate ? 0.5 : 1, height: animate ? 200 : 100, width: animate ? 200 : 100, config: { duration: 1000 } }); return ( <div> <animated.div className="box" style={styles} /> <button onClick={() => setAnimate(!animate)}> {animate ? '重置' : '动画'} </button> </div> ); } export default App; // styles.css .box { background-color: red; position: relative; } 

毒舌点评:这才叫现代前端动画,流畅自然,代码简洁,再也不用担心动画卡顿和维护困难了。

Read more

【花雕学编程】Arduino BLDC 之自主巡逻机器人(避障+路径规划)

【花雕学编程】Arduino BLDC 之自主巡逻机器人(避障+路径规划)

基于 Arduino 的无刷直流电机(BLDC)自主巡逻机器人(避障+路径规划),是一个融合了高效动力系统、多传感器环境感知、嵌入式实时计算与智能决策算法的复杂移动机器人系统。它旨在替代人工在预设或未知环境中进行长时间、高效率的巡查任务,通过 BLDC 电机提供持久且敏捷的驱动力,并利用算法实现环境理解与自主导航。 1、主要特点 高效长续航 BLDC 驱动系统 BLDC 电机是巡逻机器人的“心脏”,决定了其机动性与作业时长。 高效率与长续航: 相较于有刷电机,BLDC 电机效率通常高于 85%,发热量低。配合电子调速器(ESC)的 FOC(磁场定向控制)算法,能最大限度地利用电池能量,确保机器人能够持续工作 8 小时甚至更长时间,满足长时间巡逻的需求。 高动态响应: 巡逻过程中常需急停、避让行人或车辆。BLDC 电机具备快速启停和快速加减速的能力,配合差速转向底盘,能迅速响应避障算法发出的紧急制动或转向指令,保证运行安全。

12-Web3前端安全:连接钱包的风险与防护

Web3前端安全:连接钱包的风险与防护 大家好,我是十六咲子。 随着区块链技术的快速发展,Web3应用已经成为互联网的新趋势。从去中心化金融(DeFi)到非同质化通证(NFT),从去中心化社交网络到元宇宙,Web3应用正在重塑我们与数字世界的交互方式。然而,Web3的去中心化特性也带来了新的安全挑战,特别是在前端开发中。钱包连接、签名验证、智能合约交互等操作都可能成为攻击者的目标。 Web3前端安全风险分析 1. 钱包连接安全 常见风险: * 钓鱼网站诱导用户连接恶意钱包 * 钱包地址输入错误导致资产损失 * 未授权的钱包连接请求 * 钱包连接过程中的中间人攻击 真实案例:某DeFi项目的前端被黑客攻击,修改了钱包连接代码,导致用户的签名请求被重定向到攻击者的地址,造成大量资产被盗。 2. 签名验证安全 潜在威胁: * 恶意签名请求(如伪造的交易授权) * 签名消息内容不明确导致用户误签 * 签名验证逻辑漏洞 * 重放攻击(Replay Attack) 3. 智能合约交互安全 关键风险: * 与恶意智能合约交互 * 智能合约漏洞利用 *

FPGA面试题汇总整理(一)

https://pan.baidu.com/s/1rDsLAXGj8WbX82teSkhuIw?pwd=1234 这份FPGA 系统学习详细资料包是个人花大量时间精心整理的,超多干货全覆盖,从基础到实战一站式搞定,不用再到处薅资料!网盘链接随时可能失效,提取码 1234,先保存再学习,别等失效拍大腿!🔗链接:https://pan.baidu.com/s/1rDsLAXGj8WbX82teSkhuIw?pwd=1234 ———————————————— 前言:社招FPGA面试核心考察「基础功底+项目经验+问题解决能力」,以下100个问题覆盖面试90%高频考点,按「基础概念→编程语法→时序分析→架构设计→调试优化→项目实操→行业拓展」分类,每个问题附详细解答(适配自媒体干货属性,可直接复制使用,重点内容加粗标注),帮你高效备战,避免踩坑。 一、

低代码结合大模型:中小企业半天构建专属SaaS应用的完整路径

低代码结合大模型:中小企业半天构建专属SaaS应用的完整路径

👋 大家好,欢迎来到我的技术博客! 📚 在这里,我会分享学习笔记、实战经验与技术思考,力求用简单的方式讲清楚复杂的问题。 🎯 本文将围绕AI这个话题展开,希望能为你带来一些启发或实用的参考。 🌱 无论你是刚入门的新手,还是正在进阶的开发者,希望你都能有所收获! 文章目录 * 低代码结合大模型:中小企业半天构建专属SaaS应用的完整路径 😊 * 低代码与大模型:强强联合 💪 * 半天构建SaaS应用的路径 🛠️ * 阶段1: 需求分析与规划(1小时) 📋 * 阶段2: 平台设置与环境配置(1小时) ⚙️ * 阶段3: 应用开发与智能集成(2小时) 🎨 * 阶段4: 测试与部署(2小时) 🚀 * 最佳实践与注意事项 ⚠️ * 结语 🌟 低代码结合大模型:中小企业半天构建专属SaaS应用的完整路径 😊 在当今数字化浪潮中,中小企业往往面临资源有限、技术门槛高的挑战,难以快速构建定制化的SaaS(软件即服务)应用。然而,随着低代码平台和大型语言模型(LLM)的融合,这一局面正在改变。通过