4.10 浏览器开发者工具:定位问题的第一现场
一、本节你会做出什么
你会学会一个能省下大量来回的工作方式:先在浏览器里直接试出正确的样式值,试对了,再把确切数字告诉 AI。
📷 效果位:开发者工具里实时调整样式,页面同步变化
这一节的价值很直接。对比一下:
| ❌ 没有这项技能 | ✅ 有了这项技能 |
|---|---|
| 「间距大一点」→ AI 改 → 还是不对 → 「再大一点」→ 改 → 太大了 → 「小一点」…… | 在浏览器里拖着试,发现 32px 刚好 → 「把这里的 margin-bottom 改成 32px」→ 一次就对 |
| 来回 5 轮,20 分钟 | 自己试 1 分钟,AI 改 1 次 |
开发者工具也是第 6 章(调试排错)的主要工具。 这一节是那一章的前置。
二、开始前你需要
三、跟着做
第 1 步:五个面板,按使用频率排序
按 F12(Mac:Command+Option+I)打开。顶部一排标签页,你只需要用到五个:
| 面板 | 看什么 | 使用频率 |
|---|---|---|
| ① Elements(元素) | 页面结构 + 实时改样式 | ⭐⭐⭐⭐⭐ |
| ② Console(控制台) | 报错红字 | ⭐⭐⭐⭐⭐ |
| ③ Network(网络) | 文件/接口要到没要到 | ⭐⭐⭐⭐ |
| ④ 设备工具栏 | 手机预览 | ⭐⭐⭐ |
| ⑤ Application(应用) | 清缓存、看本地存储 | ⭐ |
💡 面板太窄看不清:开发者工具右上角
⋮→ Dock side 可以选择放在右边 / 下边 / 独立窗口。小屏幕建议独立窗口。
第 2 步:Elements —— 从页面反查到代码
这是最常用的一招,4.2 第 7 步练过一次,这里正式用到自己的项目上。
操作:
- 点开发者工具左上角那个箭头+方框图标(或 Cmd/Ctrl+Shift+C)
- 鼠标移到页面上任意元素 —— 页面上高亮,Elements 面板里自动跳到对应代码
- 点一下,就选中了它
选中之后,你能拿到三样对 AI 有用的信息:
| 信息 | 怎么看 | 怎么用 |
|---|---|---|
| 标签名 | <div> / <header> / <button> |
告诉 AI 改哪种元素 |
| class | 一长串 Tailwind class | 直接复制给 AI,它立刻知道你指的是哪个 |
| 层级关系 | 面板左侧的缩进树 | 4.2 讲过“位置不对先看父元素” |
🔑 这一招解决了 3.5 里最难的那个问题:怎么精确指出“哪一块”。
以前你只能说“中间那个卡片里面上面那块”,现在你可以说: 「class 为
rounded-xl shadow-sm p-6的那个 div 里的 h3」 —— 没有歧义。
📷 截图位 1:用元素选择器点中一个卡片,Elements 面板高亮对应代码
第 3 步:Styles 面板 —— 看哪条规则生效了
选中元素后,右侧(或下方)的 Styles 面板列出所有作用在它身上的 CSS 规则。
三个要看懂的信号:
| 你看到 | 意思 |
|---|---|
| 带删除线的属性 | 这条被覆盖了,没生效(4.3 卡住了看这里那条的答案) |
| 规则右侧的文件名 | 这条规则写在哪个文件、第几行 |
element.style |
行内样式,优先级最高 |
🔑 「我改了样式但没反应」的答案通常就在这里: 你改的那条带着删除线——被另一条优先级更高的规则压住了。
看到这个,就跟 AI 说:「这个元素的
padding被【另一条规则】覆盖了,怎么处理?」——这比反复说“没生效”有用得多。
Styles 面板底部还有一张盒模型图(4.3 画过的那个):
┌─────── margin ────────┐ │ ┌───── border ─────┐ │ │ │ ┌── padding ──┐ │ │ │ │ │ 内容尺寸 │ │ │ │ │ └─────────────┘ │ │ │ └──────────────────┘ │ └───────────────────────┘鼠标悬停在图上任一层,页面上对应区域会高亮。 这是理解 padding/margin 最直观的方式——4.3 如果没完全搞懂,现在在这里看一次就懂了。
第 4 步:⭐ 核心技能——在浏览器里先试出正确的值
这是本节最值钱的内容。
选中元素,在 Styles 面板里:
| 操作 | 怎么做 |
|---|---|
| 改一个数值 | 点那个数字,用 ↑ ↓ 方向键调(按住 Shift 一次跳 10) |
| 改颜色 | 点颜色方块,弹出取色器 |
| 临时关掉一条规则 | 鼠标移到属性上,左侧出现复选框,取消勾选 |
| 新增一条属性 | 在规则的大括号里空白处点一下,直接打 |
页面会实时变化。 这些改动只存在于浏览器里——刷新就没了,不会动你的代码。
🔑 这就是“安全的试验场”:
想让卡片间距大一点但不知道多少合适?点着
gap的数字按方向键往上调,调到顺眼为止,记下那个数。然后跟 AI 说:「把景点卡片容器的 gap 从 16px 改成 32px」。
一次就对,因为你已经亲眼确认过 32px 是对的。
现在动手,在你的练习项目上试一次:
- 选中一个景点卡片
- 把它的
padding调大调小,找一个你觉得最舒服的值 - 把
border-radius从小调到大,看哪个圆角好看 - 取消勾选
box-shadow,看看没有阴影是什么样 - 记下你定下来的那几个数值
📷 截图位 2:Styles 面板里用方向键调数值,页面同步变化
💡 Tailwind 项目里的一个小注意:你在浏览器里改的是最终的 CSS 值(
padding: 24px),而代码里写的是 class(p-6)。告诉 AI 确切的像素值就行,让它换算成对应的 class —— 它很擅长这件事。
第 5 步:Console —— 红字和一个小技巧
1.3 讲过「页面不对劲就看控制台红字」。这里补三件事。
① 红字要看哪几行
报错通常是一大段,只看两处:
| 看什么 | 为什么 |
|---|---|
| 第一行(错误类型 + 描述) | 说明是什么问题 |
| 第一个指向你自己项目文件的行 | 说明问题在你哪个文件、第几行 |
中间那一大堆
node_modules/...的调用栈可以跳过——那是框架内部的,不是你的锅。第 6.1 节会专门讲这个。
② 黄字(警告)要不要管
| 警告 | 要管吗 |
|---|---|
Each child in a list should have a unique "key" |
✅ 要管(4.6 讲过) |
图片缺少 alt |
✅ 要管(无障碍 + SEO) |
| 第三方脚本的警告 | ❌ 不用管 |
③ 一个小技巧:$0
在 Elements 里选中一个元素后,切到 Console 输入:
$0$0 代表你刚才选中的那个元素。可以继续查看它:
$0.className // 它的所有 class$0.textContent // 它里面的文字💡 什么时候有用:元素的 class 太长,在 Elements 面板里看不全时,用
$0.className能一次完整复制出来给 AI。
第 6 步:Network —— 两种最常用的查法
① 查“图片/文件为什么没出来”
刷新页面 → Network 面板 → 看有没有红色条目。
| 状态码 | 含义 | 常见原因 |
|---|---|---|
| 404 | 文件不存在 | 路径写错了。4.5 讲过:图片放 public/images/x.jpg,代码里写 /images/x.jpg(不带 public) |
| 403 | 没权限 | 第三方资源限制 |
| 500 | 服务器出错 | 后端代码报错(第 7 章) |
② 查“接口返回了什么”(第 7、8 章会天天用)
Network → 筛选 Fetch/XHR → 点那条请求 → 右侧看:
| 标签页 | 看什么 |
|---|---|
| Response | 服务器返回的实际数据 |
| Headers | 请求地址、状态码 |
| Payload | 你发过去的数据 |
🔑 这个能力在第 8 章价值巨大: 「AI 没有回复」到底是前端没显示、还是接口根本没返回东西?Network 的 Response 一看就知道,不用猜。
第 7 步:设备工具栏 —— 手机预览
Cmd/Ctrl+Shift+M,或点开发者工具里的手机/平板图标。
| 要做的 | 怎么做 |
|---|---|
| 选设备 | 顶部下拉框选 iPhone / iPad 等 |
| 自定义宽度 | 选 “Responsive”,直接拖边框,或直接输数字 |
| 测最窄情况 | 输 375(常见手机宽度),这是 4.3 提示词 ③ 里那个数字 |
三件在手机模式下必查的事(3.5 的“操作验收”清单):
- 有没有横向滚动条(有就是某个元素溢出了)
- 文字会不会太小(小于 14px 就偏小)
- 按钮/链接够不够大(手指点得中)
📷 截图位 3:设备工具栏,375px 宽度下的页面
第 8 步:Application —— 一招就够:清缓存
偶尔会遇到“我明明改了,页面就是不变”。排除了保存和刷新之后,就是缓存。
硬刷新(先试这个):
- Mac:Cmd+Shift+R
- Windows:Ctrl+Shift+R
还不行就彻底清:Application 面板 → 左侧 Storage → Clear site data。
💡 开发时的一劳永逸做法:Network 面板勾上 Disable cache(禁用缓存)。只在开发者工具打开时生效,所以不影响你平时上网。
第 9 步:动手——完整走一次定位流程(本节交付物)
在你的练习项目上,制造一个问题然后自己定位。
让 AI 搞点事:
请在 components/AttractionCard.tsx 里引入一个样式问题,让卡片在手机宽度(375px)下会横向溢出屏幕。**不要告诉我你改了什么**,我要自己用开发者工具找出来。改完只回复"改好了"。现在用本节学的东西查:
| 步骤 | 做什么 |
|---|---|
| 1 | Cmd/Ctrl+Shift+M 切到手机模式,宽度设 375 |
| 2 | 确认真的有横向滚动条 |
| 3 | 用元素选择器点那个溢出的元素 |
| 4 | Styles 面板里找可疑的属性(固定 width?过大的 padding?min-width?) |
| 5 | 取消勾选那条属性,看溢出是否消失 —— 这一步就是确诊 |
| 6 | 在浏览器里试出正确的值 |
然后把确诊结果告诉 AI:
我用开发者工具定位到了:【class 为 xxx 的那个 div】上有 【width: 400px】,在 375px 宽度下导致横向溢出。我在浏览器里验证过:把它改成 `width: 100%` 后溢出消失。
请按这个结论修改代码,只改这一处。🔑 注意这段话的质量 —— 它包含了症状、定位、原因、验证过的解法。 这是 3.5 讲的“信息质量”在前端排错里的最高形态。 AI 拿到这样一段话,不可能改错。
验收并存档:
git diff --statpnpm buildgit add -A && git commit -m "修复卡片在窄屏下的横向溢出"第 10 步:从「开发者工具的发现」到「给 AI 的话」
把本节压成一张表。这是 4.1 那张定位表的升级版——加上了“用什么工具查”。
| 症状 | 用哪个面板查 | 查到什么就说什么 |
|---|---|---|
| 样式不对 | Elements + Styles | 「【class】 的 【属性】 现在是 【值】,应该是 【值】」 |
| 改了样式没生效 | Styles(找删除线) | 「这条被 【另一条规则】 覆盖了」 |
| 按钮没反应 | Console | 「点击时控制台报:【红字原文】」 |
| 图片裂了 | Network | 「图片 404,请求路径是 【路径】」 |
| 数据没出来 | Network → Response | 「接口返回的是 【粘贴 Response】」 |
| 手机上乱 | 设备工具栏 375px | 「375px 下 【哪个元素】 横向溢出 / 和 【谁】 重叠」 |
| 改了没变化 | 硬刷新 / 清缓存 | (先排除缓存,再去找 AI) |
四、完成的标志是
- 我知道五个面板分别看什么
- 我会用元素选择器从页面反查到对应代码
- 我能从 Elements 面板里拿到元素的标签名和完整 class
- 我看得懂 Styles 面板里带删除线的属性 = 被覆盖了、没生效
- 我在 Styles 面板的盒模型图上悬停过,看清了 padding 和 margin 的区别
- 我在浏览器里用方向键调过数值,并记下了合适的值
- 我理解“先在浏览器试出正确值,再告诉 AI 确切数字”为什么能省大量来回
- 我知道看报错只看第一行和第一个指向自己项目文件的行
- 我知道
$0指当前选中的元素 - 我会在 Network 里查 404,也知道去 Response 看接口返回了什么
- 我会用设备工具栏把宽度设成 375px 检查手机表现
- 我知道“改了没变化”先硬刷新,以及 Disable cache 这个开关
- 我完整走了一次定位流程:制造问题 → 自己找到 → 验证解法 → 让 AI 按结论修
五、卡住了看这里
Q:我在 Styles 面板里改了值,刷新就没了。 这是设计如此。 开发者工具里的改动只在浏览器内存里,不会写进你的代码。它的用途是试验——试对了把数值告诉 AI,让 AI 改代码。
Q:Styles 面板里找不到我想改的属性。
两个原因:① 这个属性是继承来的,往下翻能看到 Inherited from ... 区域;② 这个元素身上压根没有这条属性 —— 直接在规则里新增一条试试。
Q:Tailwind 项目里,Styles 面板显示的 class 名和代码里的对不上。
对得上的,只是 Tailwind 的每个 class 对应一条很小的规则,所以你会看到一长串独立的小规则(.p-6 { padding: 1.5rem })。要改的话按最终像素值告诉 AI,让它选对应的 class。
Q:元素选择器点不中我想要的元素,总是选到外层的 div。 两个办法:① 点一下之后在 Elements 面板里用方向键 ↓ 往里走,一层层进到目标元素;② 在页面上右键目标元素 → 检查(Inspect),通常更准。
Q:Console 里一堆报错,分不清哪条是我的。
看报错末尾的文件路径:指向你项目文件的(app/...、components/...)才是你的;指向 node_modules 或第三方域名的通常不是。第 6.1 节会专门讲怎么读。
Q:手机模式下看着正常,真手机上还是乱。 设备模拟不是 100% 准确(字体渲染、软键盘、浏览器工具栏高度都有差异)。部署上线后用真手机开一次(第 11 章会讲)。模拟器用来抓 90% 的问题,剩下 10% 要真机。
Q:开发者工具一打开,页面就变慢/变形。 面板占了屏幕宽度,页面会按剩余宽度重新布局——这不是 bug。想看真实宽度,把面板切到独立窗口(第 1 步的 Dock side)。
六、本节提示词
① 定位之后的精准修改(本节的核心句式,存起来):
我用浏览器开发者工具定位到了问题,结论如下:
**元素**:【标签名 + class,从 Elements 面板复制】**问题**:【具体,比如"width: 400px 导致 375px 屏幕下横向溢出"】**我在浏览器里验证过的解法**:【比如"改成 width: 100% 后溢出消失"】
请按这个结论改代码:1. 只改这一处,不要动其他元素;2. 如果项目用 Tailwind,告诉我换算成了哪个 class;3. 改完告诉我怎么验证。② 让 AI 教你查某一类问题:
我的页面出现这个现象:【具体描述】
**先不要改代码。** 请教我用浏览器开发者工具自己查出原因:1. 该打开哪个面板?2. 具体点哪里、看哪个数值?3. 看到什么结果说明是什么原因?(列出 2~3 种可能和对应的判断依据)4. 怎么在浏览器里临时验证我的猜测对不对?
我查完会把结果告诉你,再请你改代码。③ 让 AI 给你制造练习题(第 9 步那招,很好用):
我在学用开发者工具排错,想做练习。
请在我的项目里引入一个【样式类 / 控制台报错类 / 图片 404 类】问题,要求:1. 问题要是新手常见的那种;2. **不要告诉我你改了什么、改在哪个文件**;3. 改完只回复"改好了"加一句现象描述;4. 把改动限制在一个文件内,方便我之后 git restore 回去。
我自己用开发者工具找出来后,会把定位结论告诉你,你再确认我找得对不对。上一节 ← 4.9 组件化开发 下一节 → 4.11 练习:拿到一个陌生项目,五分钟说清它在干什么