- 博客(360)
- 资源 (3)
- 收藏
- 关注
原创 MutationObserver监听DOM,流畅不卡顿
MutationObserver监听DOM卡顿?别让回调成性能杀手!昨天改了个动态表单,用MutationObserver监听DOM变化。结果测试环境跑得飞起,一到生产环境,用户反馈页面卡得像在加载4K电影。F12打开DevTools,CPU占用直接飙到90%+。一查日志,发现回调被疯狂触发——每次输入框打字、滚动条移动都触发一次。这哪是监听,分明是给浏览器加了根神经。核心根源MutationObserver默认监听所有变化(、、全开)。当DOM高频变动(比如输入框实时输入),回调被反复触发。每次回调都执
2026-07-15 13:44:52
274
1
原创 CSS will-change用得溜,页面滚动不卡顿!
CSS will-change用得溜,页面滚动不卡顿!上周在移动端项目里,滚动列表卡成PPT。用户一滑,页面就卡住,像在拖动一坨泥。测试时Chrome DevTools的FPS直接掉到10,看着就心梗。问题来了:为啥好好的滚动会卡?浏览器渲染时,每次滚动都触发重排重绘。尤其当元素有或,浏览器得重新计算布局——这玩意儿在低端手机上就是慢性自杀。根源:浏览器渲染流水线太“懒”。默认情况下,浏览器不会提前优化滚动元素。它会等到滚动发生时才处理,结果就是卡顿。就是给浏览器打个招呼:“这个元素要动,提前准备好!”
2026-07-15 02:10:38
277
原创 Vite热更新慢?三步调优搞定!
Vite 4.0+ 优化了fast-refresh。改个CSS,浏览器卡住,进度条转到天荒地老。Vite默认配置太“热心”,一动就全盘扫描。CPU飙到100%,热更新直接变“热等”。几百MB的依赖库,一改代码就全扫一遍。凌晨三点,改个按钮颜色等了12秒。这破速度,真不如用Webpack。老版本别用,坑得你怀疑人生。别问,问就是卡到想砸键盘。别让Vite瞎扫所有依赖。热更新慢得像在跑PPT。三步调完,改代码秒更新。下次写代码,先调这三处。别再让热更新拖你后腿——
2026-07-14 14:31:56
310
原创 CSS sticky 用错,导航栏不固定了!
CSS sticky 用错?导航栏不固定了!手把手教你避坑昨天改页面,给导航栏加了,结果滚动时它像喝醉了一样乱跳。气得我差点把键盘砸了。问题报错代码写得飞起:但一滚动,导航栏忽隐忽现。明明写了,为啥不固定在顶部?核心根源别怀疑CSS,是父容器没给它“站稳脚跟”。需要父容器有明确高度或属性。比如默认高度是自动的,找不到参照物,只能“飘”。我试了10种方案,最后发现:父容器没高度,就是个摆设。解决代码看错误和正确对比(关键在父容器):或者,如果父容器不是body:避坑总结
2026-07-14 02:56:30
293
原创 CSP配错,图片加载不了!
CSP配错?图片加载不了!手把手修好浏览器控制台疯狂报红:图片全变问号,用户急得连发三封邮件。我盯着屏幕,心想:这破CSP又坑人了。根源就仨字:配漏了CSP里img-src规则没覆盖到图片源。常见操作:只写了'self',但图片在CDN(比如cdn.example.com)。CSP默认拒绝所有非同源资源——你连自己站点的图片都加载不了,更别说第三方CDN了。对比代码救急错误配置(坑我两小时): 正确配置(直接生效): 避坑血泪总结 上周我配CSP时,把漏了写成,结果图片加载一半
2026-07-13 15:19:42
296
原创 CSS keyframes 用对了,动画丝滑不卡顿
CSS keyframes用对了,动画丝滑不卡顿昨天改轮播图,滚动时卡成PPT。Chrome DevTools一跑,Performance面板直接标红:Layout Thrashing。气得我删了三遍代码。问题报错动画在滚动/点击时突然卡顿,帧率掉到15fps。控制台没报错,但动画轨迹歪歪扭扭。典型症状:用户一动页面,动画就抽风。核心根源卡顿本质是浏览器反复重排重绘。错误写法:用//这类属性。它们触发Layout——浏览器得重新计算所有元素位置,CPU扛不住。正确写法:用和。它们触发Co
2026-07-13 03:38:21
2048
原创 clip-path做圆头像,一行搞定!
昨晚改头像,border-radius 50% 一用,头像在 flex 布局里直接拉成椭圆。clip-path 是正解——它直接裁剪元素内容,和布局无关。别问,问就是被 flex 拉伸的 bug 搞到吐血。flex 布局会强制拉伸元素尺寸,导致圆头像变椭圆。(昨晚写完,直接躺床上,再也不用看头像变形的丑事了)clip-path 一行代码,圆头像稳得一批。别再用 border-radius 了。clip-path做圆头像,一行搞定!结果头像只裁掉左上角,右下角还挂着。写完直接跑,不用调 flex 布局。
2026-07-12 16:03:48
275
原创 用@supports处理浏览器差异,兼容性不愁了!
浏览器渲染引擎会直接跳过不支持的属性,导致样式失效或报错。不是JS问题,纯CSS层的兼容坑。IE、Edge Legacy、Safari 14以下,直接忽略整个变量。写代码时以为"主流浏览器都支持",结果测试用例只在Chrome跑。记住:浏览器差异不是问题,是机会。用好原生CSS特性,比加一堆polyfill简单10倍。,写完测一遍Safari就完事。以前总用JS处理兼容,写得跟屎一样。现在纯CSS搞定,爽多了。不用JS,不用额外库,一行搞定。笑死,就因为一个CSS变量,上线前没处理兼容。
2026-07-12 04:26:20
240
原创 CSS aspect-ratio用错,图片比例歪了!
最后吐槽:这属性文档写得比我的头发还乱。MDN说“元素的宽高比”,没强调“父容器”。兄弟们,记住:父容器才是真·老大,img只是小弟。昨天上线一个页面,用户疯狂反馈图片变形。宽高比乱成一团,像被拉丝的橡皮筋。我盯着屏幕看了半小时,差点把键盘砸了——就这破属性,坑了我两小时。浏览器解析时,img的宽高由父容器决定。你直接给img设这个属性,浏览器当它是无效CSS,直接无视。结果:图片比例还是歪的。16:9的狗变成1:1了,活像被压扁的薯片。CSS aspect-ratio用错,图片比例歪了!
2026-07-11 16:50:48
207
原创 用浏览器剪贴板复制文字,不用JS库
写完测试,复制成功。别再装clipboard.js了。10KB的库,原生API才几行代码。写完直接跑,用户反馈“这功能真快”,比库还稳。也能跑,但一上线就GG。更坑的是,IE、旧版Chrome根本不支持这个API。写了个库,结果发现浏览器原生早就支持了,气死我了。兄弟们,这报错太熟悉了,别再用库了,原生API早就能干这事。用浏览器剪贴板复制文字,不用JS库。别慌,原生API真香。因为浏览器原生API。要求HTTPS环境。
2026-07-11 05:17:13
253
原创 CSS calc写错,布局错位!
CSS calc写错,布局错位!昨晚改个响应式菜单,页面直接裂开。导航栏挤成一坨,右边空出半屏。控制台干净得像新装的,没报一行错。一查代码,发现是calc写成了纯数字,浏览器懵了。问题现场 结果:宽度算成 ,导航栏缩成80%,挤在左边。右边留白一大片。核心根源calc函数里,所有数值必须带单位。 解决代码错误写法(崩了): 正确写法(修好): 注释对比: 避坑总结 记住:calc不是数学公式,是CSS语法。单位不带,布局直接裂。这坑我踩过三次,现在写代码手抖都先加px。
2026-07-10 17:37:33
227
原创 用Performance API,精准定位卡顿点!
用Performance API,精准定位卡顿点!卡顿了?别慌。昨天又一个需求上线,用户反馈页面滚动卡得像在跑马灯。我盯着Chrome DevTools看了半小时,没发现网络问题,图片也优化过了。最后用Performance API一查,才发现是某个长循环在后台默默拖后腿。问题报错用户说移动端滚动卡顿,尤其在下拉刷新时。我试了各种方法:检查了图片压缩、CSS动画,甚至把JS代码拆成小块。结果还是卡。火气上头,直接开骂:“这破代码谁写的?”核心根源卡顿不是因为代码丑,而是JS执行阻塞了渲染。浏览器渲染帧率
2026-07-10 06:02:31
259
原创 history API 用错,路由状态不保存真坑
上周三,我写了个表单提交功能。点提交跳转到结果页,用户数据全空了。气得在工位上骂了句“草”,差点把键盘拍飞。报错现象从 跳转到 ,结果页拿不到表单数据。用户填了半小时的资料,点提交就清零。我反复试了三遍,确认不是后端问题——是前端路由坑了我。核心根源history.pushState() 三个参数里,第一个 state 参数没传对。很多人写成 。坑点:state 为 null 时,浏览器不会保存任何状态。跳转后 history.state 永远是 null,数据直接蒸发。对比代码错误写法(血泪教训
2026-07-09 18:27:16
288
原创 CSS backdrop-filter 模糊背景,新手也能轻松搞定!
CSS backdrop-filter 模糊背景,新手也能轻松搞定!半夜改弹窗样式,backdrop-filter blur(10px)写完了,预览一瞅——没效果。浏览器没报错,代码也照着教程抄的。我当场懵了:这玩意儿是假的? 核心根源别傻了,背景没透!backdrop-filter要生效,必须给元素背景加透明度。纯色背景(比如)是实心的,模糊效果根本找不到地方糊。就像你用不透光的纸贴在玻璃上,后面的东西还看得见吗?(我第一次踩坑,盯着代码看了半小时,以为是浏览器崩了) 解决代码错误写法
2026-07-09 06:50:55
343
原创 Resize Observer监听尺寸变化,告别定时器!
以前写前端,监听元素尺寸变化,我总用。一开定时器,页面就卡成PPT。调整窗口大小,CPU飙到100%,用户骂娘骂得比我的代码还响。问题在哪?定时器是轮询。浏览器没主动说“尺寸变了”,我只能硬问:“嘿,变没?”问得勤,卡得狠。比如100ms问一次,用户拖动窗口时触发几十次,CPU直接干烧。核心根源浏览器原生没提供尺寸变化事件。只能靠定时器轮询,本质是无效劳动。浏览器渲染引擎知道尺寸变了,但懒得主动通知你。解决方案用。浏览器原生支持(现代浏览器都行),尺寸一变自动触发,不用你操心。对比代码旧方法:定时器
2026-07-08 19:10:49
281
原创 WebSocket没心跳,连接老断!
别用发心跳服务器可能在处理心跳,你发太快反而拖垮它。30秒是安全值(Nginx默认超时15分钟,留够缓冲)。必须判断readyState连接断了还在发心跳?内存泄漏警告!修复代码里这句是保命符。服务器要支持pong如果服务器不回pong,心跳就白发了。。别信“自动心跳”有些库(比如Socket.IO)默认有心跳,但原生WebSocket没有。别以为用就完事了。心跳包不是发“心跳”字眼,发个空字符串就行。我昨天还被坑在上,服务器根本不认——这破文档,写得比我的代码还乱。
2026-07-08 07:36:35
254
原创 CSS :has() 伪类,父级选子级超方便!
CSS :has() 伪类,父级选子级超方便!昨晚写组件,又掉坑了。想让卡片在有“关闭按钮”时自动加阴影。写了个样式: 结果,阴影没出来。浏览器控制台干干净净,就是不生效。气得想砸键盘。核心根源不是写错了。是浏览器不支持:has()。Chrome 105+、Safari 16.4+ 才支持。我用的Edge是最新版,居然能用。但公司老项目还在用Chrome 100以下?直接凉透。解决代码用:has()真香。看这个对比:关键点: 避坑总结 最后:has() 用对了,代
2026-07-07 20:01:54
297
原创 Lighthouse评分低,关键优化漏了!
图片不懒加载→ 首屏加载直接翻车。别用<img>直接怼,必须加。JS没async→ 用户等得想砸手机。关键脚本丢到<body>底部,加async。原图没压缩→ 带宽浪费,Lighthouse直接扣分。用WebP(工具:Squoosh),别还在用JPG。忽略srcset→ 大图塞进手机,流量爆炸。响应式图片必须配srcset,别写死宽高。最后唠一句:Lighthouse不是玄学,就是你漏了点。跑分前先用Chrome DevTools Network面板看瀑布图——没懒加载?
2026-07-07 08:22:16
215
原创 WebP图片质量不调,体积大得离谱
问题出在默认质量参数上。WebP编码器默认质量设为80,这个值高得离谱。JPEG质量80是高清,但WebP在80时压缩效率贼低,体积能小才怪。最后吐槽:网上教程一堆“WebP体积小”,但没人提质量参数。记住,调质量不是选,是必须。(实测数据:用sharp库,质量65比默认80体积小58%,加载速度提升40%。别等了,赶紧改代码!昨天优化网站图片,用WebP一转,体积反而大了20%。别以为质量越低越好。质量50以下,图片糊得像PPT。65是黄金点,人眼几乎看不出来差别。你直接转,它用最高质量,体积直接爆炸。
2026-07-06 20:44:43
238
原创 CSS transition timing写错,动画乱跳!
CSS transition timing写错,动画乱跳!昨天改个按钮悬停效果,点一下直接闪现到目标位置。调试到凌晨三点,才意识到:transition的timing写错了。报错现象 悬停时, 和 瞬间变化,没半点过渡。像被狗追着跑,不是动画,是跳帧。核心根源timing function 写成无效值。比如 (少个连字符)而不是 。浏览器解析失败,直接忽略整个 声明。结果:属性变化时,元素直接跳变。错误代码 vs 正确代码 为什么跳?CSS 规范规定:无效的 timing fun
2026-07-06 09:07:30
1922
原创 Service Workers缓存策略错,更新不及时!
记住:Service Workers不是魔法。缓存策略写错了,你和用户一起哭。别信网上教程说“缓存自动更新”。手动处理版本号,不然你天天被用户问“怎么还不更新”。昨天上线新功能,用户反馈说还是老界面。我打开控制台一看,Service Worker在加载旧JS文件。当缓存名,新版本部署,浏览器以为没变,继续用老缓存。不是Service Worker bug,是人设错了。Service Workers缓存策略坑:更新不及时,我直接裂开了!核心根源:浏览器缓存机制。固定,浏览器就认为资源没更新,跳过下载。
2026-07-05 21:29:30
274
原创 定位API权限没开,用户位置拿不到?
定位API权限没开,用户位置拿不到?半夜三点,用户又来问:“为啥点‘获取位置’没反应?”我打开控制台一看:。兄弟们,这破事又来了,权限没开,位置拿不到。问题报错用户点击按钮,浏览器直接报错:或者 。不是代码写死了,是权限没给。移动端尤其坑,iOS/Android必须手动开权限。核心根源浏览器对定位API管得死紧。移动端(iOS/Android)权限在系统设置里,不是在APP里。开发时我常犯两个错: 解决代码先看错误写法: 这段代码一跑,用户拒绝权限就直接报错,页面挂掉。正确写
2026-07-05 09:44:17
535
原创 Flexbox对齐搞错,布局全崩!
Flexbox对齐搞错,布局全崩!手把手教你避坑兄弟们,昨晚写个导航栏,Flexbox对齐直接给我整吐了。子元素明明想垂直居中,结果全挤在顶部。控制台没报错,但页面像被狗啃过——文字歪斜,图标乱跳,气得我差点把键盘扔了。核心根源不是Flexbox的锅,是我自己犯蠢: 必须配合父容器高度生效。默认父容器高度是 auto,子元素高度不够,对齐直接失效。更坑的是,我误以为 能全局生效,结果写在父容器上。错误代码(你以为这样就能居中?结果全崩)正确代码(加高度+对齐,瞬间稳了)对比关键
2026-07-04 22:05:12
252
原创 React useEffect依赖漏写,重复渲染!
昨天改个需求,组件突然像中了邪一样疯狂重渲染。控制台刷屏“useEffect执行”,UI卡得像PPT。我盯着代码,手抖得差点把咖啡泼在键盘上。报错现场 结果:每次状态变化(比如组件挂载后),都重新执行。数据重复请求,UI反复刷新。核心根源React的依赖数组是防抖开关。漏写依赖项,React会认为“每次渲染都有新数据”,强制重执行effect。这里在effect内部定义,但依赖数组是空的。React不会跟踪的变化,所以每次渲染都当新函数处理。对比代码 关键修复把effect里用到的所有
2026-07-04 10:17:02
312
原创 SVG图标路径写错,图标不显示!
SVG图标不显示?99%的人栽在路径写法上!昨天改图标,放个SVG进去,页面空白一片。控制台没报错,CSS也检查了三遍,急得我差点把鼠标扔了。最后发现:路径写错了。不是路径不存在,是SVG的属性格式崩了。问题现场代码长这样:图标直接消失。浏览器开发者工具里,SVG元素存在,但路径没渲染。根源挖到骨头里SVG的属性必须是合法的路径命令序列。 上面的错误代码漏了。浏览器渲染时,路径是“开的”,没闭合就不知道填什么。(实际测试:删掉,用代替,图标还是不显示——因为没闭合)正确代码对比错误写法(图标
2026-07-03 22:36:15
323
原创 Web Audio API 用错,音频播放不响!
最后补一句:别像我一样,写完代码不测试。直接上生产环境,结果用户反馈“听不见”。昨晚写了个音频播放功能,代码敲完一测试——死寂。报错没有,但声音就是没出来。只是启动播放器,但没把声音送到扬声器。就像你开了水龙头,水管却断了——水(声音)流不到水槽(扬声器)。少接一块,整座楼塌了。别信文档里“简单易用”——它坑人比你女朋友还狠。说人话:Web Audio API 就是搭积木。Web Audio API 的音频流必须“接线”到输出设备。Web Audio API 用错,音频播放不响!
2026-07-03 10:58:04
303
原创 字体加载没处理,页面闪白!
字体加载没处理?页面闪白到怀疑人生!昨天上线新项目,用户反馈页面字体加载时闪白,像开了个白屏特效。我抓耳挠腮查了半小时,结果发现是字体加载没处理——这破浏览器默认行为太坑了。问题报错打开开发者工具,Network标签里看到字体文件加载慢(比如),页面空白2秒后突然弹出字体。不是网络问题,是浏览器在等字体加载完才渲染文字。用户以为网站崩了,直接关掉页面。核心根源浏览器加载Web字体时,如果字体没下来,它会用空白占位(FOIT)。默认是,等于没处理。简单说:字体加载慢 → 浏览器卡住 → 页面白屏 → 字体
2026-07-02 23:17:35
278
原创 Web Workers计算不优化,页面卡到爆
核心根源:Web Workers 通信是“消息传递”,不是“共享内存”。实测:页面从卡顿到流畅,CPU 从 100% 降到 20%。我打开DevTools,CPU 100% 稳如老狗。实测:1000个数据点,原版通信耗时 500ms+。最后吐槽:Web Workers 不是银弹。凌晨三点,用户甩来截图:页面卡成PPT。主线程被消息队列塞爆,页面直接死机。我昨天改完,用户说:“这下顺溜了。优化方案:减少通信次数,攒数据发。(写完代码,点个咖啡,继续熬。优化前:主线程卡成雕像。优化后:主线程流畅如丝。
2026-07-02 11:42:51
276
原创 fetch API 用错,数据拿不到!
昨天同事也栽这坑里,debug到三点。我甩他一句:“兄弟,你连Response是啥都不知道?fetch不是自动送数据,得你亲手拆开。比如后端返回404,fetch照样返回Response,但状态码是404。你没判断,直接解析JSON,后面就全崩。结果:控制台疯狂报错,数据死活拿不到。以为是后端挂了,结果发现是自己写崩了。fetch返回的是Response对象,不是原始数据。深夜写接口,fetch一发,控制台空空如也。写完记得跑一遍,别等上线才哭。我盯着屏幕,头发都快薅秃了。
2026-07-02 00:00:12
286
原创 IndexedDB用得懵,数据存不了!
IndexedDB不是SQL,别拿关系型数据库思维套。凌晨三点,用户数据存不进去。执行后,事务立刻结束(因为没监听事件),同事说“你代码写得对啊”,结果一查——坑爹啊,数据存不进去,前端还不能哭。别让凌晨三点的报错,再成为你的日常。别直接塞进代码里,不监听等于没存。存数据前,先问自己:事务结束了吗?看这段代码,明明逻辑对吧?IndexedDB的事务是。上个月被这问题折磨到秃头。),但没等它完成就操作。是事务真正结束的标志,我盯着代码,想砸键盘。所以后面的操作全挂了。别提前关事务(比如在。
2026-07-01 12:24:54
288
原创 防抖函数没加,点击太频繁!
防抖函数没加,点击太频繁!昨天半夜,用户疯狂点搜索按钮,接口请求直接堆成山。后端报警:429 Too Many Requests。我盯着日志,一脸问号:就点一下,咋发了20次请求?问题真香:用户点太快,浏览器没管,click事件直接触发多次。没防抖?每次点都发请求。接口扛不住,页面卡成PPT。为啥这么坑?浏览器对事件没节制。你点10次,它就触发10次。底层是事件循环机制,没做任何限制。简单说:点击事件是“即时响应”,不等你喘口气。核心解决:加防抖函数。防抖逻辑:指定时间间隔内,只执行最后一次触发。比如100
2026-07-01 00:40:00
286
原创 input type=number填了字母,值变NaN!
最后吐槽:这浏览器设计真服了。type="number"标着"数字",结果用户输入字母还让你自己兜底。下次我直接用type="text",自己写验证。浏览器对type="number"做了输入限制。输入其他字符,浏览器会自动忽略(比如"abc"输入框会清空),但value属性还是字符串。实际场景:用户输入"abc",前端取值后转数字,直接变成NaN。表单提交后,后端接收到"abc"字符串,一转数字就崩了。兄弟们,昨天写表单,用户输入"abc"进数字框,后端报错NaN。// 输入"abc"时,输出 NaN。
2026-06-30 12:55:41
279
原创 数组sort不加slice,原数组被改!
和map、filter这些返回新数组的方法完全不同。数组sort不加slice?这哪是排序,这是数据自杀啊。sort()不加slice,原数组直接变废纸。我以为sort是返回新数组...”Array.sort() 是就地修改数组。slice()不带参数就是浅拷贝整个数组。它不返回新数组,而是直接改调用它的数组。我问他:“你sort前没slice?现在写代码,sort前必加slice。写代码前先想:这个方法会改原数据吗?用slice()复制数组,再排序。我懵了,debug到凌晨三点。结果客户说数据乱了。
2026-06-30 01:19:19
241
原创 Intersection Observer配置错,懒加载失效!
Intersection Observer配置错,懒加载失效!凌晨三点改懒加载,图片死活不加载。元素明明在屏幕里,控制台没报错,以为是网络问题。一查代码,发现Intersection Observer配置写成狗。核心根源rootMargin设成,但root没写。导致计算逻辑崩了。rootMargin是相对于root的偏移量。root默认是视口(viewport),意思是:元素要移出视口50px才触发。但元素在视口内时,isIntersecting始终false。懒加载直接失效。错误代码(真实踩坑现场)
2026-06-29 01:59:45
1339
原创 Webpack配置错,打包慢到哭!
记住:Webpack不是魔法,配置错了,它比你更慢。下次再慢,先看配置,别瞎等。我昨天调了3小时,就为这破配置——现在打包1分钟搞定,老板终于不催了。每次打包,它都重新编译所有模块。尤其项目大了,像我这种用React的,组件多,编译慢得像老牛拉破车。项目一跑Webpack,打包时间从5分钟飙到30分钟。”,我盯着终端,心在滴血。这破配置,又犯了老毛病。写在生产配置里——这玩意儿会生成超大source map,拖慢打包。Webpack配置错,打包慢到哭!里的库,纯纯浪费CPU。后,第二次打包快了3倍。
2026-06-28 14:20:18
283
原创 事件监听不移除,内存爆了!
事件监听不移除,内存爆了!昨晚改完一个新功能,用户一刷新页面,Chrome内存直接飙到1.8G。我打开DevTools一查,Heap snapshot里全是监听器,像野草一样疯长。兄弟们,这破事我被坑了三次,这次得写明白。报错现场看这代码,你肯定写过:核心根源为啥内存爆?因为会创建闭包。闭包里藏着的引用,而被移除后,闭包还死死抓着它。垃圾回收器一看:“这对象还在用,不能删!” 结果内存越堆越多。记住:监听器 = 内存锚点。不移除,它就永远挂着。正确写法关键:存函数引用,卸载时移除。看对比:
2026-06-27 14:59:31
247
原创 axios请求失败,页面直接挂掉!
axios请求失败,页面直接挂掉! 昨天上线功能,用户反馈:点按钮没反应,页面黑屏。我赶紧看控制台——。不是网络问题,是代码写崩了。 问题现象用户点击按钮触发请求,页面瞬间卡死,白屏。控制台只报一句未处理的Promise错误。不是用户的问题,是你的代码漏了关键一步。 核心根源axios返回的是Promise。你只写了处理成功,没写处理失败。请求失败时(比如404/500),Promise进入状态。浏览器找不到,直接抛出异常——页面挂掉。 解决代码看错误写法: 请求失败时,这行
2026-06-26 15:35:55
332
原创 CSS Grid列宽写错,布局直接翻车!
CSS Grid列宽写错,布局直接翻车!昨晚写布局,手一抖把列宽写成,页面直接崩成渣。两列内容挤成一团,右边空白得能塞下三台打印机。截图懒得截——这破事太常见了,你肯定也中过招。核心根源:是容器的列宽定义器,是子项的定位属性。写错一个字,浏览器懵得像刚被雷劈。浏览器解析时,在容器上会被忽略,直接用默认值(1列),结果子项全挤在第一列,布局直接翻车。解决代码:看对比,手滑打错字的代价太真实。避坑总结: 单位别乱写:是好东西,但写成或,容器宽度不够就溢出。测试时先写,稳如老狗。调
2026-06-26 03:59:07
265
graduation.zip 论坛 个人毕设项目 vue node express mysql 残 轻微配置即可 可售后
2021-09-03
部署到服务器怎么解决服务器跨域
2024-09-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅