音游判定实测:Perfect 窗口只有 40ms,差 120ms 连击就断 发布时间:2026/11/2 3:41:49 音游里那个「Perfect」不是手感是几个毫秒区间。我把判定规则做成一个能玩的网页偏差落在 ±40ms 内算 PERFECT41 到 80ms 算 GREAT81 到 120ms 算 GOOD超过 120ms 算 MISS连击就断在这里。在线案例与源码https://atomgit.com/deli007/demo_park/tree/main/codearts-rhythm-tap-game页面是一个 3.8 万字符的单文件判定函数、计分公式、连击引擎和 25 条自检都在里面跑不发任何网络请求。一、为什么值得搞清楚判定窗口是手感的总开关打音游的时候你总觉得自己「明明按准了」。显示器、键盘、蓝牙耳机每一段都在偷走几毫秒。判定窗口就是把这些误差折算成成绩的那把尺子。尺子松人人都 PERFECT爽但没成就感尺子紧连击碎成渣玩两把就想摔手机。我更关心另一件事这把尺子到底怎么算边界在哪连击什么时候断。网上一搜全是「换个机械键盘」「记得校准延迟」的经验贴很少有人把判定函数摊开给你看。所以我把这件事做成了一个网页四档区间、判定函数、准确率公式全部写在页面上随便点随便改。二、准备环境进入码道 Web把需求一次说清浏览器打开码道 Web 版https://devcloud.cn-north-4.huaweicloud.com/chat?sourcedmzntgwsfsourceaddmzntgwwbwz 登录后就能在对话窗口输入需求不需要装软件。码道有三种使用方式WebUI浏览器对话、TUI终端命令行和桌面 IDEIDE 插件。本文用 WebUI 版演示。这一轮我把需求拆成 13 条一次性贴进对话单文件 index.html纯前端零依赖双击打开即用四条轨道 D / F / J / K音符从上方落下抵达判定线时按键判定判定四档写死偏差绝对值不超过 40ms 判 PERFECT41 到 80ms 判 GREAT81 到 120ms 判 GOOD超过 120ms 判 MISS判定线下方画一条判定窗口带用竖线标出 ±40 / ±80 / ±120ms 三档边界并写明毫秒数连击规则只有 MISS 断连击PERFECT、GREAT、GOOD 都续连击实时显示当前连击与最大连击准确率按权重算PERFECT 300 分、GREAT 200 分、GOOD 100 分、MISS 0 分准确率 累计得分 ÷ 300 × 音符总数节拍用 performance.now() 计时音符间隔 60000 ÷ BPM ÷ 4也就是十六分音符设置区三项BPM 60~240、下落速度 1~10、全局偏移校准 -200ms 到 200ms自动试打按钮按 -200ms 到 200ms、步长 5ms 的固定序列击打一遍逐条打印落档并统计各档数量结算页显示各档数量、准确率、最大连击、用时、平均偏差页面底部至少 14 条自检判定函数、准确率公式、连击规则用同一套逻辑复算期望值必须现算参数非法时给中文提示并保留上一次的有效值配色区分四档四档用四种颜色第十一条是我特意加进去的。它决定了后面所有数字能不能自证。三、四档判定怎么算判定函数一共四行核心就是把偏差取绝对值再比区间functionjudgeOffset(dev){constaMath.abs(dev);if(a40)returnPERFECT;if(a80)returnGREAT;if(a120)returnGOOD;returnMISS;}边界是闭区间40ms 整还算 PERFECT41ms 掉到 GREAT。档位偏差范围计分权重连击PERFECT绝对值 ≤ 40ms300续GREAT41 ~ 80ms200续GOOD81 ~ 120ms100续MISS大于 120ms或整拍没打0断准确率不是「命中数 ÷ 总数」而是加权得分除以满分准确率(PERFECT*300GREAT*200GOOD*100)/(300*音符总数)*100%这个公式解释了一个反直觉的现象。打 10 个全 GREAT准确率只有 66.67%虽然你一个都没漏。反过来漏掉一半但另一半全 PERFECT准确率就是 50%。它奖励的是「准」不是「不漏」这也是音游排行榜上所有人都在追 PERFECT 的原因。连击规则单独抽了出来只有 MISS 归零functionapply(j){if(jMISS)combo0;else{combocombo1;if(combomax)maxcombo;}}GOOD 也续连击这一点很多游戏不一样我在页面的判定规格里写清了免得读者按自己的习惯理解。四、实测81 个偏差落在哪一档窗口边界光看代码不过瘾我让页面自己数了一遍。自动试打从 -200ms 打到 200ms每 5ms 取一个点一共 81 个偏差逐个过判定函数读数如下档位命中偏差个数期望公式校验PERFECT172 × floor(40 ÷ 5) 1一致GREAT162 × (floor(80 ÷ 5) − floor(40 ÷ 5))一致GOOD162 × (floor(120 ÷ 5) − floor(80 ÷ 5))一致MISS3281 − 17 − 16 − 16一致17 个 PERFECT 对应 -40ms 到 40ms 之间的 17 个采样点两侧各 8 个再加中间的 0ms。期望值那一列不是我算好写死在页面里的是页面用同一套边界现算出来的。页面底部那 25 条自检就是这么比的左侧是现算的期望右侧是实跑的读数两边对不上就标红。图 2 下半部分就是这批自检左侧是现算的期望值右侧是实跑的读数。跑完这一轮自检 25/25 通过没有一条是写死的常量。五、把整局跑一遍64 个音符、平均偏差 -0.05ms单看 81 个静态偏差还不够得让判定函数在真实计时下跑一局。我用脚本按音符时刻逐个击打一局 64 个音符结算页结果如下指标读数PERFECT64GREAT / GOOD / MISS0 / 0 / 0准确率100.00%最大连击64用时9.7 s平均偏差-0.05 ms这一局是机器按节拍打的不是手打的成绩本身没有参考价值。有价值的是平均偏差那一格-0.05ms。它说明 performance.now() 这条计时链没有系统性偏差音符时刻换算和判定扣偏差这两步是能对上的。如果时间戳换算写错了半拍或者全局偏移扣错了方向这一格不会是 0 附近的小数。手打的实际分布长这样图 4 里飘出来的 0.5ms、1.2ms、2.0ms 是每一击的实际偏差正数代表延后负数代表提前。同一个玩家、同一首曲子这一串数字会明显散开那才是人的手感。六、参数动了判定会怎么变页面里能调的有三样我把边界值都试了一遍。参数范围影响实测例子BPM60 ~ 240音符间隔 60000 ÷ BPM ÷ 4BPM 60 → 250.0ms120 → 125.0ms240 → 62.5ms下落速度1 ~ 10音符从顶部落到判定线的时长 3600 ÷ 速度速度 5 → 720ms 落到判定线全局偏移-200 ~ 200ms从击打偏差里扣掉这个值再判档击打偏差 85ms、偏移填 50ms → 按 35ms 判档全局偏移那一行值得单独说。很多人以为校准是「让判定变松」其实它只是把偏差平移一个固定量。85ms 减掉 50ms 得到 35ms落回 PERFECT要是偏移填成 -50ms同一个 85ms 就变成 135ms直接 MISS。它治的是设备延迟不是手感。参数填错属于非法输入页面会拦下来给出中文错误提示并退回上一次的有效值提示原文是「BPM需为 60 ~ 240 之间的数字已保留上一次有效值 120」输入框同时回填成 120。七、验证与踩坑页面跑出来的每个数字我都用 Python 另写了一份来对拍。python verify_rhythm.py脚本不读 index.html把判定函数、准确率公式、连击引擎、偏差序列全部重写一遍再和页面读数逐项比判定函数 9 个边界点0 / ±40 / ±41 / ±80 / ±81 / ±120 / ±121可击窗口 ±120 可击、±121 不可击十六分音符间隔 BPM 60 / 120 / 240 → 250.0 / 125.0 / 62.5准确率的四组取值2P1G1GD1M、全 PERFECT、全 GREAT、全 MISS连击的三组序列81 个偏差的四档统计整局 64 音符准确率与最大连击结果 27/27 通过逐项都对得上。交付之后我又逐张放大截图发现了一个不太好意思的毛病。判定飘字直接把浮点原值打了出来屏幕上出现的是「48.19999980926514ms」这种数字。原因就一行飘字模板里写的是原始偏差没有做舍入。修法是给这一处加上一位小数的舍入同一个位置的状态栏「上一击」也一起改改完读数变成 48.2ms。这是一处显示问题判定结果没受影响——46ms 和 48.2ms 都落在 41~80ms 那档都是 GREAT。页面还有两处我如实记下来。一是自动试打只跑判定函数不参与当时那一局的统计所以它不会污染你的成绩。二是平均偏差只统计实际击打MISS 没有击打偏差不进平均。八、本地复现三条命令就能自己跑一遍gitclone https://atomgit.com/deli007/demo_park.gitcddemo_park/codearts-rhythm-tap-game python verify_rhythm.py习惯看页面的直接双击 index.html 也行打开就自动跑一次 25 条自检。想自己量判定边界点页面里的「自动试打」81 个偏差逐个落档日志区会一行行打出来。两条边界得说清楚。判定窗口 ±40 / ±80 / ±120ms 是我在需求里定死的真实商业音游各家窗口不一样这里量的是「这套规则」而不是「所有音游」。页面也没有测键盘和显示器的真实延迟偏移校准要你自己填一个数试。九、使用码道体会这一轮需求里最值钱的两句是「期望值必须现算」和「至少 14 条自检判定函数、准确率、连击用同一套逻辑复算」。它们把「看起来对」和「验过是对的」分开了。81 个偏差那张统计表之所以能当证据就是因为期望值那一列是我写完之后页面自己算的不是我抄进去的。另一句是「参数非法时给中文提示并保留上一次的有效值」。非法输入的处理直接抓得到提示原文我不用去猜填错之后页面是崩掉还是装作没看见。13 条需求全写出来确实费时间但交付后我只提了一轮修改点省下来的返工时间比写需求多。十、总结判定窗口就是一把尺子四档区间加一个权重公式音游的手感差别大半来自这里。连击断在 MISS 而不是 GOOD是让「打得准」比「打得全」更值钱。全局偏移修正只治病不治手感填错方向反而更糟。想让自己的判定更稳先量三样东西每击偏差落在哪一档、平均偏差偏正还是偏负、连击一般断在第几个音。源码和在线案例在 https://atomgit.com/deli007/demo_park/tree/main/codearts-rhythm-tap-game判定函数和自检都写在页面上改几个数就能自己量一遍。 相关新闻 Agent之GPT-6:GPT-6.1 Sol 解读—让高阶 AI 能力以更低成本落地 Agent之GPT-6:GPT-6.1 Sol 解读—让高阶 AI 能力以更低成本落地 导读: 2026 年 9 月 29 日,OpenAI发布,GPT-6.1 Sol 最值得关注的是,它试图以更低成本提供接近旗舰的复杂任务能力。普通用户应把它理解为更擅长执行多步… 2026/10/30 2:29:19 9、Python基础之IO编程 前言IO就是Input/Output,输入输出。程序和外部数据交换都属于IO操作:读取文件、写入文件、网络传输等。IO操作有一个核心特点:速度远慢于CPU计算。 Python内置了丰富的IO支持,本篇包含:文件读写、StringIO/BytesIO、文… 2026/10/31 3:16:42 ruoyi-vue-pro/芋道源码:一键改包名/用项目自带的 ProjectReactor 程序/彻底、省事 有了本文的内容就可以在把ruoyi-vue-pro项目,作为自己开发的基础项目来使用了,本文内容很简单,但是很重要!一、记录步骤1.1、改包名工具位置[ProjectReactor.java](file:///c:/abcd/project/java/ruoyi-vue-pro/yudao-server/src/… 2026/10/30 19:01:39 最新新闻 React Server Components RCE漏洞分析与防御实践 1. React Server Components RCE漏洞深度解析CVE-2025-55182是React生态中近年来最严重的安全漏洞之一,它影响了React Server Components(RSC)的核心实现机制。这个漏洞本质上源于服务端组件序列化过程中的代码注入缺陷,攻击者可以… 2026/11/2 10:08:57 Flink实时处理淘客订单架构设计与实践 1. 淘客订单实时处理的业务挑战在传统淘客系统中,订单处理通常采用批处理模式,这种架构存在几个致命缺陷。以我们团队运营的微赚淘客系统为例,日均处理80万笔淘宝联盟订单回调时,批处理模式会导致用户从下单到看到返利状态更新平均… 2026/11/2 10:08:57 Shapefile文件族解析与shp地图显示实操指南 前阵子有个做区域规划的朋友丢过来一个压缩包,说里面是某片区的边界数据,让我帮忙“打开看看长什么样”。我解压出来一看,十几个同名不同后缀的文件摊在文件夹里,他以为只需要双击那个扩展名是 shp 的就能出图,结果双击… 2026/11/2 10:08:57 ICLR 2026预讲会:DAMO开发者矩阵与AI前沿技术 1. 项目概述ICLR 2026预讲会|DAMO开发者矩阵专场是一个面向人工智能研究者和开发者的前沿技术分享活动。作为机器学习领域的顶级会议ICLR(International Conference on Learning Representations)的预热活动,这个专场聚焦于DAMO开… 2026/11/2 10:08:57 Hindsight:工程师的技术复盘方法论与工程化实践 1. “Hindsight”不是工具名,而是开发者对技术决策的反思视角“Hindsight”这个词在当前技术社区里被高频提及,但它不是某个开源库、CLI 工具或 npm 包的正式名称——至少在 PyPI、npm registry 和 Docker Hub 的官方索引中,不存在一个叫hind… 2026/11/2 10:08:57 MATLAB手写BP神经网络实现手写数字识别:从零搭建到调优实战 简介:这份资源面向学习机器学习与MATLAB编程的初学者及课程实践者,提供BP神经网络手写数字识别的完整实现代码,帮助读者从零跑通数据预处理、网络构建、训练与评估全流程。压缩包共5027个文件,约6.15MB,其中5000个bmp图… 2026/11/2 10:05:56 日新闻 雷达数据处理平台化实践:从回波到航迹的链路设计与工程优化 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:00:59 从告警轰炸到精准预警:PLFM_RADAR平台监控雷达实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:00:59 SPI通信隔离实战:MAX14431BAEE+数字隔离器与PIC24FJ256GA705方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:00:59 周新闻 DRV8818+MK20DX128步进电机驱动方案:从电路到固件实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:39 DRV8818PWPR+PIC18LF46K40双极步进电机驱动实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:19 DRV8818PWPR与MK20DX128VFM5工业级双极步进控制协同设计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:11 月新闻 DRV8818+MK20DX128步进电机驱动方案:从电路到固件实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:39 DRV8818PWPR+PIC18LF46K40双极步进电机驱动实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:19 DRV8818PWPR与MK20DX128VFM5工业级双极步进控制协同设计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:11
Agent之GPT-6:GPT-6.1 Sol 解读—让高阶 AI 能力以更低成本落地 Agent之GPT-6:GPT-6.1 Sol 解读—让高阶 AI 能力以更低成本落地 导读: 2026 年 9 月 29 日,OpenAI发布,GPT-6.1 Sol 最值得关注的是,它试图以更低成本提供接近旗舰的复杂任务能力。普通用户应把它理解为更擅长执行多步… 2026/10/30 2:29:19
9、Python基础之IO编程 前言IO就是Input/Output,输入输出。程序和外部数据交换都属于IO操作:读取文件、写入文件、网络传输等。IO操作有一个核心特点:速度远慢于CPU计算。 Python内置了丰富的IO支持,本篇包含:文件读写、StringIO/BytesIO、文… 2026/10/31 3:16:42
ruoyi-vue-pro/芋道源码:一键改包名/用项目自带的 ProjectReactor 程序/彻底、省事 有了本文的内容就可以在把ruoyi-vue-pro项目,作为自己开发的基础项目来使用了,本文内容很简单,但是很重要!一、记录步骤1.1、改包名工具位置[ProjectReactor.java](file:///c:/abcd/project/java/ruoyi-vue-pro/yudao-server/src/… 2026/10/30 19:01:39
React Server Components RCE漏洞分析与防御实践 1. React Server Components RCE漏洞深度解析CVE-2025-55182是React生态中近年来最严重的安全漏洞之一,它影响了React Server Components(RSC)的核心实现机制。这个漏洞本质上源于服务端组件序列化过程中的代码注入缺陷,攻击者可以… 2026/11/2 10:08:57
Flink实时处理淘客订单架构设计与实践 1. 淘客订单实时处理的业务挑战在传统淘客系统中,订单处理通常采用批处理模式,这种架构存在几个致命缺陷。以我们团队运营的微赚淘客系统为例,日均处理80万笔淘宝联盟订单回调时,批处理模式会导致用户从下单到看到返利状态更新平均… 2026/11/2 10:08:57
Shapefile文件族解析与shp地图显示实操指南 前阵子有个做区域规划的朋友丢过来一个压缩包,说里面是某片区的边界数据,让我帮忙“打开看看长什么样”。我解压出来一看,十几个同名不同后缀的文件摊在文件夹里,他以为只需要双击那个扩展名是 shp 的就能出图,结果双击… 2026/11/2 10:08:57
ICLR 2026预讲会:DAMO开发者矩阵与AI前沿技术 1. 项目概述ICLR 2026预讲会|DAMO开发者矩阵专场是一个面向人工智能研究者和开发者的前沿技术分享活动。作为机器学习领域的顶级会议ICLR(International Conference on Learning Representations)的预热活动,这个专场聚焦于DAMO开… 2026/11/2 10:08:57
Hindsight:工程师的技术复盘方法论与工程化实践 1. “Hindsight”不是工具名,而是开发者对技术决策的反思视角“Hindsight”这个词在当前技术社区里被高频提及,但它不是某个开源库、CLI 工具或 npm 包的正式名称——至少在 PyPI、npm registry 和 Docker Hub 的官方索引中,不存在一个叫hind… 2026/11/2 10:08:57
MATLAB手写BP神经网络实现手写数字识别:从零搭建到调优实战 简介:这份资源面向学习机器学习与MATLAB编程的初学者及课程实践者,提供BP神经网络手写数字识别的完整实现代码,帮助读者从零跑通数据预处理、网络构建、训练与评估全流程。压缩包共5027个文件,约6.15MB,其中5000个bmp图… 2026/11/2 10:05:56
雷达数据处理平台化实践:从回波到航迹的链路设计与工程优化 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:00:59
从告警轰炸到精准预警:PLFM_RADAR平台监控雷达实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:00:59
SPI通信隔离实战:MAX14431BAEE+数字隔离器与PIC24FJ256GA705方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:00:59
DRV8818+MK20DX128步进电机驱动方案:从电路到固件实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:39
DRV8818PWPR+PIC18LF46K40双极步进电机驱动实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:19
DRV8818PWPR与MK20DX128VFM5工业级双极步进控制协同设计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:11
DRV8818+MK20DX128步进电机驱动方案:从电路到固件实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:39
DRV8818PWPR+PIC18LF46K40双极步进电机驱动实战指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:19
DRV8818PWPR与MK20DX128VFM5工业级双极步进控制协同设计 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … 2026/11/2 1:18:11