Chrome DevTools 前端调试完全指南 2026 | 零基础小白调试入门

写前端代码时出 bug 怎么办?「对着屏幕看半天看不出来」是新手常态。其实你只需按一个键 F12,Chrome 自带的「开发者工具」就会跳出来,帮你像侦探一样排查所有问题。这篇教程用大白话带你从零掌握前端调试。
一、DevTools 是什么?
1.1 通俗理解
想象你是一个修车工:
- 没工具:你把手伸进车里瞎摸,靠运气找问题
- 有工具:你用仪表盘、诊断仪、内窥镜,每个零件都看得清清楚楚
Chrome DevTools 就是网页的「诊断仪」,它可以让你看到:
- 网页的 HTML 结构(骨架)
- 每个元素的 CSS 样式(外表)
- JavaScript 代码的运行过程(内脏)
- 图片和数据的加载速度(血液)
一句话总结:DevTools 是你调试网页的「火眼金睛」。
1.2 怎么打开 DevTools?
任选一种方式:
| 方式 | 操作 |
|---|---|
| 快捷键 | 按 F12 键(最常用) |
| 快捷键 2 | Ctrl + Shift + I(Windows)/ Cmd + Opt + I(Mac) |
| 右键菜单 | 在网页上右键 → 点「检查(Inspect)」 |
| 菜单 | 浏览器右上角 ⋮ → 更多工具 → 开发者工具 |
💡 新手小技巧:
- 打开后默认在右侧显示,可以点右上角
⋮改成底部弹出- 按 Ctrl/Cmd + Shift + D 切换布局(左右/上下)
- 按 Esc 在 DevTools 底部呼出控制台(Console)
1.3 DevTools 有哪些面板?
打开后你会看到一排标签页,每个面板干不同的活:
| 面板 | 英文名 | 用途 | 新手用得最多 |
|---|---|---|---|
| 🔍 元素 | Elements | 看 HTML + CSS,改样式 | ⭐⭐⭐⭐⭐ |
| 📟 控制台 | Console | 打印日志、跑代码、看报错 | ⭐⭐⭐⭐⭐ |
| 📶 网络 | Network | 看请求、接口、资源加载 | ⭐⭐⭐⭐ |
| 📚 源代码 | Sources | 断点调试 JS | ⭐⭐⭐⭐ |
| 🏎 性能 | Performance | 测卡顿、分析性能 | ⭐⭐⭐ |
| 💼 应用 | Application | 看 Cookie、LocalStorage | ⭐⭐⭐ |
| 🎛 内存 | Memory | 查内存泄漏 | ⭐⭐ |
| 📱 设备 | - | 模拟手机、平板 | ⭐⭐⭐ |
💡 新手入门前 4 个面板就够了:Elements(元素)、Console(控制台)、Network(网络)、Sources(源代码)。
二、Console 控制台面板
2.1 控制台能干嘛?
Console(控制台)是你和 JavaScript 对话的地方:
- 看网页的 报错和警告
- 你写的
console.log()会在这里显示 - 直接写代码回车,立刻跑起来(当计算器用也行)
2.2 console 打印
最常用的调试手段就是打日志:
console.log('普通日志')
console.warn('黄色警告,不太严重的问题')
console.error('红色错误,严重问题,代码可能崩了')
console.info('蓝色信息提示')
console.debug('调试信息(需要勾选 Verbose 才显示)')💡 不同颜色不同含义:红色是大问题(代码跑崩了),黄色是警告(可能有隐患)。
2.3 打印对象和数组
// 直接打印对象
const user = { name: '小明', age: 25, city: '北京' }
console.log(user) // 点开箭头能展开看每一项
console.table(user) // 表格形式显示,更直观!
// 打印数组
const fruits = ['苹果', '香蕉', '橘子', '葡萄']
console.table(fruits) // 排成表格看2.4 控制台当计算器
在 Console 里直接输入数学式子回车:
123 + 456 // → 579
Math.round(3.7) // → 4
Date.now() // → 当前时间戳
'Hello ' + 'World' // → "Hello World"
[1,2,3].map(n => n*2) // → [2, 4, 6]2.5 清除控制台
控制台滚得乱七八糟?
- 点左上角的 🚫 清空按钮
- 快捷键:Ctrl/Cmd + L
- 输入
clear()回车 - 右键菜单 → Clear console
2.6 控制台快捷键
| 快捷键 | 作用 |
|---|---|
| ↑ / ↓ 箭头 | 翻历史命令(像命令行一样) |
| Ctrl/Cmd + Enter | 换行(不执行) |
| Enter | 执行代码 |
| Tab | 自动补全 |
三、Elements 元素面板
3.1 元素面板能干嘛?
这是新手用得最多的面板!在这里你可以:
- 像看骨架一样看整个网页的 HTML 结构
- 实时修改样式,立刻看效果(不用回代码里改)
- 找出 CSS 为什么不生效的原因
3.2 选择页面上的元素
最经典的用法:点那个「箭头」按钮,然后鼠标移到网页上,哪个元素被高亮,Console 就显示哪个元素:
- 点 Elements 面板左上角的 🔍 箭头按钮(快捷键 Ctrl/Cmd + Shift + C)
- 鼠标放到网页上
- 点击想查看的那个元素
Elements 面板会自动定位到那个 HTML,右侧 Style 栏就是它的所有 CSS 样式。
💡 这是 UI 还原度对齐的神操作!设计师说「这个文字偏了 2px」时,你不用猜像素,直接在这里调。
3.3 实时修改 CSS
假设你想把一个标题改成红色:
- 点箭头按钮,选中那个标题
- 右侧 Styles 栏里会显示它当前的 CSS
- 直接在上面加一行:css
color: red; font-size: 20px; - 回车!网页立刻变红色大标题
💡 注意:这里改的只是你浏览器里的临时效果,一刷新就没了。确认好看了之后,把样式复制粘贴回你的源代码里才算保存。
3.4 为什么 CSS 不生效?(划重点!)
新手最常见的问题:「我写了样式怎么没反应?」
在 Elements 的 Style 栏里你能一眼看出原因:
| 现象 | 原因 | 解决 |
|---|---|---|
| 样式被画了一条 | 被「更高优先级」覆盖了 | 要么提高选择器权重,要么加 !important(不推荐) |
| 样式前有黄色三角 ⚠️ | 属性名写错了!(比如 coler: red) | 改对拼写 |
| 样式前有 i 图标 ℹ️ | 有提示信息,悬停看详情 | 按提示改 |
样式显示在灰色 user agent stylesheet 下 | 用的是浏览器默认样式,没被自定义覆盖 | 写自己的样式覆盖 |
💡 看到样式被划删除线就是「被覆盖」!看一下哪个样式覆盖了它,然后针对性地调权重或者顺序。
3.5 Computed 计算后样式
点 Computed 标签(在 Style 右边),能看到「最终生效」的所有样式:
- width、height、margin、padding 都是多少
- 每项点左边箭头,能追溯「到底是哪条 CSS 最终说了算」
3.6 Box Model 盒模型
Computed 里还能看到 Box Model(盒模型)示意图:
┌─────────────────────────┐
│ margin │
│ ┌───────────────────┐ │
│ │ border │ │
│ │ ┌─────────────┐ │ │
│ │ │ padding │ │ │
│ │ │ ┌───────┐ │ │ │
│ │ │ │content│ │ │ │
│ │ │ └───────┘ │ │ │
│ │ └─────────────┘ │ │
│ └───────────────────┘ │
└─────────────────────────┘鼠标移上去,各个距离清清楚楚。排版乱了就来这里看,一眼能看出「是 padding 太大还是 margin 太大」。
3.7 双击改 HTML
Elements 面板左侧的 HTML 是可以直接改的:
- 双击文字 → 修改标签里的内容
- 双击标签名(
<div>)→ 修改标签类型 - 右键 HTML → Copy、Edit as HTML、Delete element
- 按 H 键 → 临时隐藏元素(调试神器!)
💡 小练习:现在打开百度,按 F12,点箭头选中「百度一下」按钮,然后在 Elements 里双击文字,改成「搜它!」,回车看效果。
四、Network 网络面板
4.1 网络面板能干嘛?
Network(网络)面板帮你看:
- 网页加载了哪些东西(HTML、CSS、JS、图片、接口)
- 每个资源花了多少时间加载(找慢资源)
- 前后端接口返回了什么数据(找接口 bug)
- 有没有请求失败(404、500 错误)
💡 前端 80% 的问题都是接口问题。数据显示不对?先去 Network 看看接口返回的是啥。
4.2 面板里每个列是什么?
| 列名 | 含义 | 怎么看 |
|---|---|---|
| Name | 文件名/接口名 | 看请求了什么 |
| Status | 状态码 | 200=OK,404=找不到,500=服务器崩,304=走缓存 |
| Type | 资源类型 | xhr/fetch=接口,script=JS,stylesheet=CSS,document=HTML |
| Initiator | 谁发起的 | 一般不用管 |
| Size | 体积大小 | 数字红色=太大了,要优化 |
| Time | 耗时 | 时间红色=太慢了,要优化 |
| Waterfall | 加载时间线 | 看先后顺序、并行度 |
💡 常见的状态码:
- 2xx(200~299):✅ 成功
- 3xx(301、304):🔁 重定向/缓存
- 4xx(400、401、403、404):❌ 客户端错(你的锅)
- 5xx(500、502、503):💥 服务器错(后端的锅)
4.3 筛选接口
打开 Network 可能看到一堆资源,点上面的标签来筛选:
- ALL:全部显示
- Fetch/XHR:只看接口(前后端传数据的请求,最常用!)
- Img:只看图片
- JS / CSS:只看脚本/样式
- Doc:只看 HTML 文档
💡 99% 的场景你就点 Fetch/XHR 看接口请求,点 Img 看图片加载。
4.4 看接口返回了什么数据
- 点筛选栏的 Fetch/XHR
- 点你要看的那个接口名
- 右侧弹出来的窗口里点 Response(响应) 或 Preview(预览)
你就能看到后端给你返回的真实数据了。比如:
- 返回
{ code: 500, msg: '数据库挂了' }→ 锅在后端 - 返回
{ code: 200, data: [] }→ 数据是空的,前端显示空就对了
4.5 看请求时你传给后端了什么
点同一个请求,右侧窗口点 Payload(负载):
- Query String Parameters:URL 参数(? 后面的部分)
- Form Data:表单提交的数据
- Request Payload:JSON 格式的 POST body
4.6 模拟慢速网络(重要!)
你在公司的超快 Wi-Fi 里测试很流畅,用户用 2G/3G 就卡死?点 Network 里的 Online 下拉框,可以模拟:
- Fast 3G:3G 快速
- Slow 3G:3G 慢速(非常慢!)
- Offline:断网
💡 面试常考题目:「怎么验证 Loading 动画真的能被用户看到?」答案:切慢网速看看。这是面试题和生产 bug 的重灾区。
4.7 禁用缓存
Network 面板勾选 Disable cache(禁用缓存),刷新页面:
- 每次都从服务器下载最新版本(不会吃到旧的缓存文件)
- 做性能测试时建议勾选,否则拿到的是缓存数据不准
五、Sources 源代码面板 + 断点调试
5.1 为什么用断点?
打 console.log() 调试虽然简单,但有时:
- 你根本不知道问题在哪,打一堆 log 找不到
- 想看某一步变量到底是什么值
这时候断点(Breakpoint)就是神器——你可以让代码在某一行暂停执行,然后一行一行走,像慢动作看动画一样看到每个变量的变化。
5.2 怎么加断点?
- 打开 Sources 面板
- 左侧找到你要调试的
.js或.vue文件 - 点代码行号(比如第 42 行的 42),出现蓝色箭头 → 断点打上了
- 刷新页面或触发那段代码
- 页面会冻住,代码停在你打了断点的那一行!
5.3 断点暂停后,上面有几个按钮:
⏯ ▶ ⏭ ⏮ ↺
| | | | |
| | | | └─── 🔄 停用所有断点 / 激活
| | | └─────── ⏮ Step out:跳出当前函数
| | └─────────── ⏭ Step over:执行到下一行(不进函数内部)
| └─────────────── ⏵ Step into:进入函数内部
└────────────────── ▶▶ Resume:继续运行,直到下一个断点💡 新手只需要记住两个按钮:
- Step over(下一个按钮,弯箭头向右):一行一步走,最常用
- Resume(最左边的播放):继续跑到下一个断点
5.4 看变量值
代码暂停时:
- 鼠标悬停在代码里的变量名上 → 立刻显示当前值
- 右侧 Scope(作用域) 面板 → 能看到当前所有变量的值
- 右侧 Watch(监视) → 把变量名加进去,每一步都能看到变化
- 底部 Console → 临时输入代码,用当前暂停的变量做任何事
5.5 其他打断点的方式
| 方式 | 什么时候用 | 怎么操作 |
|---|---|---|
| 普通断点 | 知道大概哪一行有 bug | 点行号 |
| console 断点 | 写代码的时候就能埋 | 在代码里写 debugger; |
| 条件断点 | 只有满足条件时才暂停 | 右键行号 → Conditional breakpoint,写条件表达式 |
| DOM 断点 | 某元素被 JS 改了 | Elements 面板右键元素 → Break on → subtree modifications... |
| XHR 断点 | 接口请求返回的瞬间 | Sources 面板右侧 XHR/fetch Breakpoints → 加 URL 关键字 |
💡
debugger;超好用!代码里写一行debugger;,相当于在那一行自动打了断点。排查特定分支 bug 的神器。
六、Device Toolbar 设备模拟(手机预览)
6.1 打开设备模拟
按 Ctrl/Cmd + Shift + M,或者点 Elements 面板左上角的「📱 手机」按钮,就进入手机模拟模式。
顶部的工具栏可以选:
- 设备型号:iPhone 14 Pro、iPad、Samsung Galaxy、Pixel… 应有尽有
- 屏幕尺寸:自定义宽高
- DPR:设备像素比(高清屏/普通屏)
- 网络:同 Network 面板里的慢速模拟
- GPS 定位:模拟经纬度
- 相机/麦克风:模拟权限
6.2 响应式开发必用
做移动端页面时:
- 切进手机模式,选 iPhone
- 刷新页面
- 再用 Elements 检查样式是不是在手机上崩了
💡 重要提醒:在桌面上看着没问题的页面,一定要切手机模式看一眼。99% 的新手做移动端都会在桌面屏幕上开发,忘了手机屏是窄的。
七、其他实用面板
7.1 Application 应用面板
存东西的地方都在这里:
| 左侧菜单 | 用途 |
|---|---|
| Local Storage | 本地长期存储(手动清不掉就一直存在) |
| Session Storage | 当前标签页关了就没了 |
| Cookies | Cookie,接口身份认证看这里 |
| IndexedDB | 大量数据本地数据库 |
调试常见场景:
- 登录不上?点 Clear storage 清一下再试
- 权限 token 过期?看 Cookies 里的 token 还在不在
- 本地偏好设置(比如主题色 dark/light)改了没生效?看 Local Storage
7.2 Performance 性能面板
想知道你的网页「为什么卡」?录一段 Performance:
- 打开 Performance 面板
- 点左上角 ⚪ 录制按钮
- 操作一下你觉得卡顿的那段过程(比如滚动、点击按钮)
- 点 ■ 停止录制
- 等个几秒钟生成分析报告
你会看到:
- 哪段时间占了最多 CPU(主色条长的就是卡的地方)
- JS、渲染、绘制各花了多久
- 点击火焰图上每一小块都能定位到具体是哪个函数慢
💡 新手先用这个找卡的宏观瓶颈,具体哪行代码慢再去 Sources 里断一下。
7.3 Lighthouse 网页质量评分
Chrome 自带的网站体检工具,测 5 个维度:
- Performance:性能(加载速度)
- Accessibility:无障碍(给残疾人用的支持)
- Best Practices:最佳实践(安全、规范等)
- SEO:搜索引擎友好度
- PWA:离线能力
点 Lighthouse 面板 → 点 Analyze page load → 等几十秒,出一份报告和改进建议。
💡 把 Lighthouse 分数做高,你网页加载更快、用户更喜欢、Google 搜索排名也更高。
八、常见调试场景
8.1 场景一:样式不生效?
步骤:
- F12 打开 Elements
- 点箭头,选中那个出问题的元素
- 右侧 Styles 栏看:
- 样式有没有被
划线→ 被覆盖了,提升权重 - 有没有黄色警告 ⚠️ → 拼写错了
- Computed 里看最终生效值是多少
- 样式有没有被
8.2 场景二:接口报错?
步骤:
- F12 → Network → Fetch/XHR
- 重新触发操作
- 看新请求的 Status:
- 404 → 接口路径写错了
- 500 → 后端崩了(发给后端)
- 401/403 → 没登录/没权限,检查 Cookie
- 点进请求 → 看 Response 里后端给的提示
8.3 场景三:控制台红了一片?
步骤:
- 看红色错误信息,读一下写了啥
Cannot read properties of undefined (reading 'name')→ 你对undefined点了.namexxx is not defined→ 变量没定义Failed to fetch→ 网络请求失败
- 错误信息右边一般有「文件名 + 行号」,点一下直接跳到 Sources 的报错行
- 在那行打个断点,刷新看看变量怎么回事
8.4 场景四:按钮点了没反应?
步骤:
- F12 → Elements,点箭头选中按钮
- 右侧 Event Listeners(事件监听) 标签,看 click 有没有挂上去
- 没有挂上去 → JS 代码没跑,或选择器写错了
- 挂上去了 → 去 Sources 里在那个事件函数里打个断点,看点击进去跑到哪一步停了
- 如果没进断点 → 有一层透明的 div 盖在按钮上面了?(Elements 里看层级)
8.5 场景五:图片加载不出来?
步骤:
- Network → 筛选 Img
- 找到那张图片的请求
- 看 Status:
- 404 → 图片地址写错了
- 403 → 防盗链/CORS 跨域
- 看 Size 是不是 0 B
- 右键图片 → Open in new tab,直接访问一下看能不能打开
九、实用快捷键速查
| 快捷键 | 作用 |
|---|---|
| F12 | 打开/关闭 DevTools |
| Ctrl/Cmd + Shift + C | 选择元素模式(箭头按钮) |
| Ctrl/Cmd + Shift + M | 切换手机模拟模式 |
| Ctrl/Cmd + F | 在面板里搜索文字 |
| Ctrl/Cmd + P | Sources 里搜文件打开(超好用!) |
| Ctrl/Cmd + Shift + P | 命令面板(所有功能的总菜单) |
| Ctrl/Cmd + L | 清空控制台 |
| Esc | 打开/关闭底部抽屉(比如 Console) |
| 在代码行按 B | 加断点 / 取消断点 |
💡 最强快捷键 Ctrl/Cmd + Shift + P(命令面板): 打开后输入「Capture full size screenshot」→ 截长图(整页),再也不用装截图插件了。
十、总结
回顾本教程的重点:
- Console(控制台):看报错、打 log、写代码试跑
- Elements(元素):改 HTML/CSS,排查样式为什么不生效
- Network(网络):看接口、找慢资源、看状态码
- Sources(源代码):断点调试、一行一行跑代码
- 手机模拟:按 Shift+Cmd+M,移动端开发必看
- Application:Cookie / LocalStorage,清缓存看登录
- Performance + Lighthouse:找卡顿、给网站体检
Chrome DevTools 是前端工程师的「吃饭工具」。每天打开它,写代码的过程中多用它排查问题,你会少走无数弯路。
相关阅读: