前面三章,我们学会了如何打开 DevTools、如何把它调成自己喜欢的样子。现在你已经有了一套趁手的工具——但工具本身只是基础,真正决定效率的,是你知不知道它还能这么用。

这一章,我们来聊点“进阶玩家”的东西。

你可能已经习惯了用 console.log 调试、用鼠标在面板里点来点去、遇到 hover 消失的元素就手忙脚乱——这些做法本身没错,但 DevTools 里藏着大量能让你事半功倍的技巧,能让你的调试效率提升一个量级。

比如:

  • 在不修改代码的情况下向控制台输出日志(告别 console.log 污染)。

  • 让 hover 状态“冻结”在页面上,想怎么查就怎么查。

  • 一键审查整个页面的 CSS 健康状况。

  • 可视化查看页面的动画、性能和布局偏移。

这些技巧不复杂,每个都只需要十几秒就能学会。但它们解决的都是你肯定遇到过的痛点——那种“明明知道问题在哪,就是调试起来特别别扭”的场景。

小提示:这一章的技巧比较多,不用一次性全部记住。挑 2-3 个最打动你的先用起来,用熟了再回来学下一个。

一、Logpoints:不碰代码就能打日志

先问一个问题:你平时怎么调试 JavaScript?

绝大多数人的第一反应是——在代码里加 console.log,保存,刷新页面,看控制台输出,然后再删掉这些 log,提交代码。

这个流程有一个问题:你每次都在改源代码。改完还得删,删完还得记得别提交到仓库里。更麻烦的是,有些 bug 只在生产环境出现,你不可能为了调试就往生产代码里塞 console.log。

Logpoints 就是用来解决这个问题的。

Logpoint 是什么? 它本质上是一个“不暂停执行的断点”——在源代码的某一行设置一个日志点,每当代码执行到这一行时,DevTools 会自动往控制台输出你指定的信息,但代码本身完全不中断。

怎么用?

  1. 打开 DevTools,切换到 Sources(源代码) 面板。

  2. 找到你要调试的 JS 文件,定位(鼠标在行号上移动)到某一行代码。

  3. 右键点击行号,选择 “Add logpoint” (添加日志点)。

  4. 在弹出的对话框中输入你想输出的表达式,比如 'user:', user, 'state:', state.status。

  5. 按回车确认。

之后,每当代码执行到这一行,控制台就会自动输出你指定的内容。

Logpoints 好在哪?

  • 不修改源代码:你的代码文件干干净净,不需要加一行 console.log。

  • 不产生 Git 噪音:永远不会出现“不小心把 debug 代码提交到仓库”的情况。

  • 即时生效:添加完立刻工作,不需要保存文件、不需要刷新页面。

  • 自动清理:关闭 DevTools 或手动删除日志点,它就消失了。

  • 可用于生产环境:只要生产代码有 source map,你可以在任何部署的网站上添加 logpoints 进行实时调试

最后这一点非常实用——当某个 bug 只在特定环境下出现时,你不需要重新部署任何代码,直接在浏览器里加个 logpoint 就能开始排查。

小建议:从今天开始,调试时先用 logpoint,而不是急着往代码里塞 console.log。用一周你就会发现,自己再也不想回到“改代码→刷新→删代码”的老路上了。

二、强制 CSS 状态:让 hover 乖乖听话

这是另一个几乎所有前端开发者都遇到过的痛点。

你在调试一个下拉菜单,它只在鼠标悬停(:hover)时出现。你打开 DevTools 想把鼠标移过去检查它的样式——但鼠标一动,下拉菜单就消失了。你试了三次,失败了三次。

解决方案很简单:强制锁定 CSS 状态。

  1. 在 Elements(元素) 面板中,选中你要调试的那个元素。

  2. 在右侧的 Styles(样式) 侧边栏中,点击 :hov 按钮。

  3. 勾选你想要强制启用的状态——:hover、:focus、:active 等。

勾选之后,元素会保持在该状态下不变,哪怕你的鼠标已经移走了。现在你可以从容地检查样式、调整 CSS,想怎么调就怎么调。

扩展用法:

对于由焦点(:focus)触发的元素(比如输入框自动补全下拉列表),即使你点击了 DevTools 导致页面失去焦点,列表也会关闭。这时候可以在 Rendering(渲染) 面板中开启 “Emulate a focused page” (模拟聚焦页面),告诉浏览器“页面仍然有焦点”——这样下拉列表就不会因为你在 DevTools 里点来点去而消失了。

开启 Emulate a focused page:点击DevTools 右上角(齿轮图标旁边)三个竖点图标 —> More tools —>Rendering

小建议::hov 按钮就在 Styles 面板里,位置很显眼但很多人从来没点过它。今天就开始用吧。

三、CSS Overview:给页面样式做一次全面体检

当你接手一个老项目,或者你的页面样式变得越来越乱时,你最需要的是一个全局的视角——而不是在 Styles 面板里一个一个元素地查。

CSS Overview 面板就是干这个的。

怎么打开?
  1. 点击 DevTools 右上角的三个点菜单(⋮)。

  2. 选择 More tools(更多工具) → CSS Overview。

  3. 或者用命令菜单(Ctrl/Cmd + Shift + P),输入 CSS Overview 并回车。

怎么用?

打开后,点击 Capture overview(捕获概览)按钮,DevTools 会扫描整个页面,生成一份详细的 CSS 报告。

这份报告包含五个部分:

  • 概览摘要:页面 CSS 的整体统计数据。

  • 颜色:页面中使用的所有颜色,按背景色、文字色等分组,还会标出对比度不足的地方。

  • 字体信息:所有字体及其字号、字重、行高的分布。

  • 未使用的声明:那些写了但实际没生效的 CSS 规则。

  • 媒体查询:页面中定义的所有媒体查询。

实际场景:你接手了一个设计系统混乱的项目,想知道到底用了多少种颜色。CSS Overview 会直接告诉你——可能是 47 种颜色,其中 #fff 和 #ffffff 同时存在。或者你想统一字体规范,但不确定当前页面实际渲染了哪些字号——字体信息部分会直接给出分布数据。

小建议:在做设计系统重构之前,先跑一次 CSS Overview。它能给你一份“体检报告”,让你清楚知道要从哪里下手。

四、Rendering 面板:性能问题的“X 光机”

页面卡顿、滚动不流畅、布局突然跳动——这些性能问题往往很难用肉眼定位原因。Rendering 面板就是用来解决这个问题的。

怎么打开?

  1. 用命令菜单(Ctrl/Cmd + Shift + P)。

  2. 输入 Rendering,选择 Show Rendering(显示渲染)。

打开后,你会看到一系列可视化调试开关:

  • Paint flashing(绘制闪烁) :开启后,页面中发生重绘(repaint)的区域会闪烁绿色高亮。如果你滚动页面时大片区域都在闪烁,说明存在不必要的重绘——这时候就该检查是不是在用 top、left 等属性做动画,而不是 transform。

  • Layout Shift Regions(布局偏移区域) :开启后,页面中发生布局偏移(CLS)的区域会高亮显示。这对于排查“页面加载时内容突然跳动”的问题非常有用。

  • FPS meter(帧率仪表) :在页面角落显示实时帧率,帮你监控动画和滚动是否流畅。

小建议:当用户反馈“页面卡顿”时,先打开 Rendering 面板看看 Paint flashing——通常几分钟内就能定位到问题根源。

五、Animations 面板:让动画“慢下来”

调试 CSS 动画是一件很痛苦的事——动画一闪而过,你还没来得及看清楚发生了什么,它就已经结束了。

Animations 面板可以解决这个问题。

怎么打开?

  1. 点击 DevTools 右上角的三个点菜单(⋮)。

  2. 选择 More tools(更多工具) → Animations。

打开后,只要页面上有 CSS 动画或过渡执行,它就会自动记录在面板中。你可以:

  • 慢放:把动画速度降到 25% 或 10%,看清楚每一帧的变化。

  • 拖拽进度条:像播放视频一样来回拖拽,精确查看动画的任意时刻。

  • 重新播放:不用刷新页面就能反复观看动画效果。

小建议:当你写了一个复杂的 keyframe 动画但效果总差一点点时,打开 Animations 面板慢放几遍,就能精确看出哪一帧出了问题。

六、Performance 面板:深入分析性能瓶颈

如果说 Rendering 面板是“快速诊断”,那 Performance 面板就是“深度剖析”。

怎么打开?

  • 直接点击 DevTools 顶部的 Performance 标签页。

  • 或用命令菜单输入 Performance 并回车。

基本用法:

  1. 点击录制按钮(●),开始记录。

  2. 在页面上执行你想要分析的操作(滚动、点击、加载等)。

  3. 停止录制,DevTools 会生成一份详细的性能分析报告。

报告中,主线程(Main thread) 的火焰图是最重要的部分。它会按时间顺序展示每一帧中 JavaScript 执行、样式计算(Style Recalc)、布局(Layout)、绘制(Paint)等任务的耗时。

如果某个任务的条特别长,说明它耗时过多——那就是性能瓶颈所在。

小建议:Performance 面板的功能非常丰富,初中级开发者可以先从“录制 → 看主线程火焰图 → 找长条”这个最小闭环开始。更深入的使用我们会在后续章节中展开。

七、$0 快捷方式:在控制台里操作当前元素

这是一个很小但非常实用的小技巧。

在 Elements 面板中选中一个 DOM 元素后,在 Console(控制台) 面板里输入 $0,它就会代表你当前选中的那个元素。

比如:

// 获取当前选中元素的文本内容
$0.textContent

// 修改它的背景色
$0.style.backgroundColor = 'red'

// 查看它的所有属性
console.dir($0)

$0 是 DevTools 提供的一系列快捷变量之一:

  • $0:当前选中的元素。

  • $1:上一次选中的元素(最多到 $4)。

  • $:document.querySelector 的别名。

  • $$:document.querySelectorAll 的别名。

小建议:下次在 Elements 里选中一个元素后,切到 Console 试试 $0——你会发现调试 DOM 变得前所未有的顺手。

八、Scroll Into View:让隐藏元素“现身”

有时候,某个 DOM 元素在页面中不可见——可能被滚动到了视口之外,也可能被其他元素遮挡了。你想在页面上看到它的确切位置,但手动滚动半天也找不到。

在 Elements 面板中,右键点击该 DOM 节点,选择 Scroll into view(滚动到视图中),DevTools 会自动滚动页面,让这个元素出现在你的视线里。

 小建议:在调试长页面或复杂的单页应用时,这个功能能帮你快速定位那些“理论上存在、但页面上找不到”的元素。

总结

这一章我们学习了八个能显著提升调试效率的实用技巧:

技巧

核心价值

 适用场景

Logpoints

不修改代码即可打日志

调试 JS 逻辑,尤其是生产环境

强制 CSS 状态

锁定 hover/focus/active

调试交互样式,告别“手忙脚乱”

CSS Overview

一键生成样式体检报告

代码审查、设计系统重构

Rendering 面板

可视化性能问题

排查卡顿、布局偏移

Animations 面板

慢放、拖拽查看动画

调试 CSS 动画

Performance 面板

深度分析性能瓶颈

定位复杂的性能问题

$0 快捷方式

在控制台操作当前元素

快速调试 DOM

Scroll Into View

自动滚动到目标元素

在长页面中定位元素

这些技巧有一个共同点:它们解决的都是你每天都在面对的问题,只是用了一种更聪明的方式。

DevTools 的功能远不止表面看到的那些。很多时候,不是工具不够强,而是我们不知道它还能这么用。每学会一个技巧,你的调试工具箱就多一件武器——日积月累,你就会成为那个“总能快速找到问题”的开发者。

下一章预告:我们将深入命令菜单(Command Menu),这个 DevTools 中最强大的效率工具——学会了它,你就能用键盘完成 DevTools 里的几乎所有操作。

本章练习

  1. 找一个你之前用过 console.log 调试的项目,尝试用 Logpoints 替代——感受一下不用改代码就能打日志的流畅感。

  2. 在任意页面上,找一个 hover 才出现的元素(如下拉菜单),用 :hov 按钮强制锁定 hover 状态,然后从容地检查它的样式。

  3. 打开 CSS Overview,对你正在开发的页面跑一次报告——看看页面里到底用了多少种颜色、多少种字体。

  4. 打开 Rendering 面板,开启 Paint flashing,然后滚动页面——观察哪些区域在频繁重绘。

  5. 在 Elements 面板中选中一个元素,切换到 Console 输入 $0,试试用它来读取和修改元素的属性。