树莓派PCIE转M.2 E Key HAT板设计:从信号完整性到Wi-Fi 6驱动实战
1. 项目缘起为什么需要一张PCIE转M.2 E Key的HAT板如果你和我一样是个喜欢折腾树莓派、Jetson Nano这类单板计算机的玩家那你肯定遇到过这样的场景手头有一块闲置的M.2接口无线网卡或者想给设备加装一个更稳定、性能更强的Wi-Fi 6或蓝牙5.2模块却发现板子上根本没有M.2接口。又或者你想在树莓派上实现一些更专业的无线功能比如搭建一个无线嗅探器、一个软AP甚至是一个简单的无线信号中继站但板载的无线网卡性能孱弱功能也受限于驱动。这时候一张“PCIE TO M.2 E KEY HAT”板卡就成了解决问题的钥匙。它本质上是一个转接板一端通过树莓派等设备上的PCIe接口通常是M.2 HAT或CM4的PCIe x1与主机通信另一端则提供了一个标准的M.2 E Key插槽。这个E Key是M.2接口的一种“钥匙口”定义专门用于无线通信模块如Wi-Fi、蓝牙、NFC、WWAN蜂窝网络等。有了它你就能把市面上琳琅满目的消费级或工业级M.2无线网卡“嫁接”到原本不支持的单板计算机上。我最初做这个项目就是因为想给一台用作家庭轻量级服务器的树莓派CM4加装一张支持Wi-Fi 6的AX200网卡。CM4虽然有PCIe通道但直接插卡需要复杂的飞线和转接既不美观也不稳定。市面上的成品转接板要么功能单一要么价格不菲于是便萌生了自己设计一块HATHardware Attached on Top板的想法。这不仅仅是一个简单的物理转接更涉及到PCIe信号完整性、电源设计、天线接口匹配等一系列硬件工程问题整个过程充满了挑战和乐趣。2. 核心需求解析一张合格的转接板需要解决哪些问题设计这样一块转接板远不是画个PCB、连几根线那么简单。你需要把它当作一个完整的、可靠的硬件子系统来设计。根据我的经验核心需求可以分解为以下几个层面2.1 电气连接与信号完整性这是最基础也是最重要的一环。PCIe是一种高速串行总线即使是PCIe 1.0 x1其单通道速率也达到了2.5 GT/s。M.2 E Key接口通常使用PCIe和USB总线与无线模块通信。引脚映射首先必须确保物理引脚一一对应。M.2 E Key有67个引脚Socket 1但常用的其实不多。关键引脚包括PCIe部分PERp0/PERn0接收差分对PETp0/PETn0发送差分对这是数据传输的“高速公路”。USB部分USB_D- / USB_D通常用于蓝牙功能。电源3.3V主电源VCC以及可能需要的1.8V、1.2V等辅助电源VCCIO。控制信号PERST#复位、CLKREQ#时钟请求、WAKE#唤醒等。 设计时需要查阅树莓派HAT或CM4 IO板的PCIe连接器定义以及M.2 E Key的规范制作准确的映射表。一个引脚接错可能导致不识别甚至损坏设备。阻抗控制与布线PCIe差分对要求严格的阻抗控制通常为100Ω差分阻抗。在PCB设计时必须根据板厂的工艺层叠结构、介电常数计算走线宽度和间距并使用“差分对”布线规则确保两条线等长、等距、平行走线避免引入信号反射和抖动。对于树莓派HAT这种尺寸的板子线长一般不会成为问题但良好的布线习惯是必须的。2.2 电源电路设计无线网卡尤其是高性能网卡对电源的要求比较苛刻。它可能需要多路电压并且对噪声敏感。3.3V主电源通常直接从HAT的40Pin GPIO接口或PCIe连接器获取。需要评估电流需求AX200这类网卡峰值电流可能接近1A必须确保供电路径的导线和过孔能承受必要时可以加宽走线或使用电源平面。辅助电压1.8V/1.2V等很多无线模块还需要一路1.8V或更低的电压用于核心供电。这里就需要一个DC-DC降压电路或LDO低压差线性稳压器。我的选择是使用一颗高效率的同步降压转换器如MP1471来产生1.8V。相比LDODCDC效率高、发热小但电路稍复杂需要注意电感选型和布局避免开关噪声干扰敏感的射频电路。去耦与滤波在每一路电源的引脚附近都必须放置足够且合适容值的去耦电容如10uF的钽电容或陶瓷电容用于储能0.1uF、0.01uF的陶瓷电容用于滤除高频噪声。这是保证模块稳定工作的“压舱石”。2.3 射频天线接口处理M.2 E Key网卡通常通过板载的IPEX或称U.FL连接器外接天线。我们的HAT板需要将这些微型连接器引出来。天线连接器选型最常用的是IPEX MHF4代连接器。我们需要在PCB上安装对应的插座如5110-1并预留焊接盘。射频走线从M.2插座的射频引脚到IPEX连接器之间的走线是标准的50Ω单端射频线。这需要更精细的阻抗控制通常使用微带线结构并根据PCB的介电常数和层厚计算出一个特定的线宽。任何直角拐弯、过孔都会引入阻抗不连续影响信号质量因此必须使用圆弧或45度角走线。天线选择可以外接全向天线、高增益定向天线等。对于家庭使用一对常见的2.4G/5.8G双频全向天线就足够了。如果用于无线测试或远距离传输则需要根据场景选择专业天线。2.4 结构设计与兼容性作为一块HAT它需要完美贴合树莓派。安装孔位必须与树莓派40Pin GPIO接口的安装孔对齐并使用尼龙或金属支柱固定确保稳固。高度限制要考虑到插上M.2网卡后的总高度不能与树莓派上方的散热风扇、外壳或其他HAT板冲突。通常采用“卧式”设计让网卡平行于主板可以有效降低高度。ESD与保护在USB数据线和天线接口附近可以考虑添加ESD保护二极管防止静电击穿昂贵的无线网卡。3. 从原理图到PCB我的设计实战与关键决策有了清晰的需求就可以开始具体设计了。我使用的工具是KiCad一款开源强大的EDA软件。3.1 原理图设计构建电路的“骨架”原理图是设计的蓝图必须准确无误。核心连接器首先放置两个主要的连接器符号树莓派40Pin GPIO排母或PCIe连接器和M.2 E Key插座。仔细核对数据手册将每个引脚的网络标签标好。电源树绘制从GPIO的3.3V引脚引出经过一个磁珠或0欧电阻方便测试作为主电源输入。设计1.8V DCDC电路。以MP1471为例需要配置反馈电阻设定输出电压、选择输入输出电容如22uF陶瓷电容和功率电感如2.2uH。电感的选择需要考虑额定电流和DCR直流电阻。在3.3V和1.8V网络上的关键位置放置多个不同容值的去耦电容形成梯次滤波。信号线连接将PCIe差分对、USB差分对、以及PERST#、CLKREQ#等控制信号直接通过网络标签连接起来。对于PCIe差分对我会特意在原理图中将它们标记为“差分对”这样在PCB布局时软件会自动识别并应用差分规则。射频部分从M.2插座的WLAN_ANT0/1等引脚直接走线连接到两个IPEX天线座。在原理图上这段走线会标记为“50Ω RF Trace”作为提醒。添加测试点为了方便调试我在3.3V、1.8V、PERST#等关键网络上都添加了测试点TP。这在后续排查问题时能省下大量功夫。注意务必为M.2插座的固定螺丝孔连接一个接地网络GND这既是机械固定也是电气接地对屏蔽和散热都有帮助。3.2 PCB布局信号完整性的艺术布局是决定项目成败的关键好的布局事半功倍。板框与预布局首先根据树莓派的尺寸和安装孔位置定义板框。然后将两个核心连接器——GPIO排母和M.2插座——放置在板子上。由于要降低整体高度我采用了让M.2插座“躺平”的设计即其金手指方向与PCB板边平行网卡将平行于树莓派主板安装。电源模块优先将DCDC电路MP1471及其外围放置在靠近3.3V输入同时相对远离敏感射频区域的地方。遵循“先大后小”的原则先放置输入电容、电感、输出电容再放置反馈电阻等小元件。关键技巧功率电感的开关噪声较大应避免其下方或正对着敏感信号线如射频线、时钟线。PCIe差分对布线等长使用KiCad的“差分对长度调节”功能确保发送和接收差分对内部的P线和N线长度匹配误差通常控制在5mil以内差分对之间的长度要求则宽松一些。避免过孔尽可能在同一层走完差分线减少过孔带来的阻抗不连续和寄生电感。参考平面确保差分线下层有一个完整、无分割的接地GND平面作为回流路径这是保证信号质量的生命线。射频走线独占区域我将两条天线走线布置在PCB的顶层一角并确保它们周围有足够的“禁布区”避免其他数字信号线靠近防止耦合干扰。严格按照计算好的线宽例如对于我的1.6mm板厚FR4板材50Ω微带线宽约为2.9mm进行布线。走线尽可能短、直拐弯处使用优美的圆弧。在IPEX连接器焊盘附近按照厂商推荐的设计规范做了“接地共面波导”处理即在信号焊盘周围打过孔连接到地平面以提供良好的屏蔽和阻抗连续性。全局铺铜与接地最后为整板进行接地铺铜除了需要阻抗控制的射频线区域。确保地平面完整并在板子四周和关键芯片下方密集打过孔“缝合孔”连接多层板的地平面形成一个低阻抗的接地系统。3.3 打样与焊接将设计变为现实PCB设计完成后导出Gerber文件发给板厂打样。我选择了标准的1.6mm厚、FR4材质、沉金工艺并做了阻抗控制这对射频线很重要。焊接是个细致活先贴小后焊大先用热风枪和钢网焊接DCDC芯片、阻容元件等小封装的贴片元件。连接器最后焊M.2插座和IPEX座这类通过孔元件最后用电烙铁焊接。焊接M.2插座时要确保所有引脚都吃锡良好没有虚焊或桥接。目检与测试焊接完成后先用放大镜检查有无桥接、虚焊。然后不要急着插网卡先用万用表二极管档测量各电源引脚对地阻值确保没有短路。再上电测量3.3V和1.8V电压是否准确稳定。4. 软件驱动与系统配置让硬件“活”起来硬件准备就绪后插上选定的M.2网卡我用的Intel AX200就可以开始软件部分的调试了。这部分同样充满“坑点”。4.1 内核驱动与固件大多数现代无线网卡都需要内核驱动和独立的固件文件。检查设备识别将HAT板插到树莓派上并开机。首先使用lspci命令查看PCIe设备列表。如果一切正常你应该能看到一个新的网络控制器例如“Intel Corporation Wi-Fi 6 AX200”。如果看不到说明硬件连接有问题需要回头检查焊接和电源。安装驱动对于AX200Linux内核自带的iwlwifi驱动通常已经支持。但可能需要更新到较新的内核版本。对于树莓派OS可以运行sudo rpi-update来更新内核和固件有一定风险建议先备份。安装固件驱动负责控制硬件固件则是运行在网卡芯片内部的“小系统”。AX200的固件文件通常位于/lib/firmware目录下。你需要确保固件文件存在且版本匹配。可以从Linux内核的官方固件仓库git.kernel.org下载对应的.ucode文件并放入指定目录。一个常见大坑固件文件名或路径错误会导致网卡初始化失败在dmesg系统日志中会看到“firmware: failed to load iwlwifi-xxx.ucode”之类的错误。4.2 网络管理器配置驱动加载成功后使用ip link或iwconfig命令应该能看到一个新的网络接口比如wlan0或wlx...。连接Wi-Fi如果你使用图形界面如树莓派OS的桌面可以直接在任务栏点击网络图标连接。在命令行下可以使用nmcliNetworkManager命令行工具或编辑/etc/wpa_supplicant/wpa_supplicant.conf文件来配置。# 使用 nmcli 示例 nmcli device wifi list # 扫描网络 nmcli device wifi connect 你的SSID password 你的密码蓝牙配置AX200的蓝牙部分通过USB总线连接。加载驱动后需要安装并启动bluetooth服务。sudo apt install bluez bluez-tools sudo systemctl enable bluetooth sudo systemctl start bluetooth然后可以使用bluetoothctl命令进行配对和管理。4.3 性能测试与优化连接成功后可以进行一些基本测试验证性能和稳定性。速度测试在局域网内使用iperf3工具进行吞吐量测试。作为客户端向服务器发送数据iperf3 -c 服务器IP。对比使用板载Wi-Fi和AX200 HAT的速度差异你会看到明显的提升。信号强度使用iw dev wlan0 link命令可以查看当前连接的信号强度RSSI、传输速率等信息。驱动参数调优对于iwlwifi驱动可以通过模块参数进行一些调整。例如可以尝试禁用电源管理以获得更稳定的性能但会增加功耗echo options iwlwifi power_save0 | sudo tee /etc/modprobe.d/iwlwifi.conf sudo reboot5. 避坑指南与进阶玩法那些我踩过的“坑”回顾整个项目从设计到调试有几个地方特别容易出问题5.1 硬件层面的“坑”电源不稳导致模块反复重置现象是系统日志里网卡不断被识别、断开。这极有可能是1.8V DCDC电路设计不当或电感选型错误导致带载能力不足或噪声过大。解决方案用示波器测量1.8V电源在上电和网卡高负载时的波形看是否有大幅跌落或振铃。确保输出电容容值足够电感饱和电流余量充足。PCIe设备无法识别首先检查所有PCIe差分对是否连接正确有无短路/断路。然后重点检查PERST#复位信号。该信号在上电初期应由主机保持为低电平复位状态然后拉高。如果它一直为低网卡就不会工作。用逻辑分析仪或万用表测量其时序。Wi-Fi信号极差或频繁断连这几乎肯定是射频走线或天线的问题。检查IPEX连接器是否焊牢射频走线宽度是否符合50Ω设计走线旁边是否有高速数字线平行走过。一个简单的验证方法直接用一根已知良好的IPEX延长线绕过板载走线直接将网卡的天线引脚连接到外置天线如果信号立刻变好问题就出在板载射频通路上。5.2 软件与配置的“坑”固件加载失败这是最常见的问题。务必根据dmesg日志中提示的固件文件名去下载完全一致的文件。不同子型号的网卡如AX200和AX201所需的固件可能不同。蓝牙与Wi-Fi的共存干扰Wi-Fi和蓝牙共用2.4GHz频段可能存在干扰。如果发现蓝牙设备连接时Wi-Fi速度下降可以尝试在路由器后台将Wi-Fi固定在5GHz频段或者调整蓝牙的AFH自适应跳频设置在/etc/bluetooth/main.conf中。国家代码Regulatory Domain问题无线网卡的发射功率和可用信道受国家法规限制。如果设置不正确可能导致无法扫描到网络或功率不足。使用sudo iw reg set CN假设是中国命令设置并确保生效。5.3 进阶玩法探索这块HAT板的功能远不止接一张Wi-Fi网卡。双频段并发与软AP像AX200这样的网卡支持2.4G和5G同时工作。你可以配置一个频段连接互联网另一个频段作为热点软AP用树莓派打造一个便携式路由器或信号扩展器。无线监控模式配合aircrack-ng套件可以将网卡置于监控模式捕获周围的无线数据包用于学习无线网络安全协议或进行简单的网络诊断请仅在合法授权的网络中进行。连接蜂窝网络模块有些M.2 E Key模块是4G/5G蜂窝网卡。通过这块HAT你可以让树莓派在无有线网络的地方接入互联网非常适合物联网边缘设备或移动应用。多卡协作理论上你可以设计一个有多路PCIe切换开关的复杂HAT同时连接多张无线网卡实现更高级的功能如无线Mesh回程、负载均衡等但这需要更深入的硬件和驱动知识。设计并制作“PCIE TO M.2 E KEY HAT”的过程是一次完整的硬件开发实践。它串联起了电路设计、PCB布局、信号完整性、电源管理、射频基础、驱动调试等多个领域的知识。当最终看到树莓派成功识别出高性能的Wi-Fi 6网卡并且网络测速远超板载网卡时那种成就感是无可替代的。这张小小的板子不仅扩展了硬件的边界更打开了一扇通往更广阔无线世界的大门。如果你也对此感兴趣不妨拿起EDA工具从绘制自己的第一版原理图开始。

相关新闻

ESP32-C3 USB与UART下载机制详解:从原理到实战排错指南

ESP32-C3 USB与UART下载机制详解:从原理到实战排错指南

1. 项目概述:为什么ESP32-C3的下载方式值得深究 拿到一块ESP32-C3开发板,第一件事就是给它“烧录”程序。这听起来像是单片机开发里最基础的一步,但恰恰是这一步,让不少朋友,尤其是刚从Arduino或传统STM32转过来的开发…

2026/10/17 6:36:33 阅读更多 →
DockDoor终极指南:3步快速掌握macOS窗口管理神器

DockDoor终极指南:3步快速掌握macOS窗口管理神器

DockDoor终极指南:3步快速掌握macOS窗口管理神器 【免费下载链接】DockDoor Window peeking, alt-tab and other enhancements for macOS 项目地址: https://gitcode.com/gh_mirrors/do/DockDoor DockDoor是一款革命性的macOS窗口管理工具,它重新…

2026/10/15 12:49:38 阅读更多 →
ABAP同步与异步调用深度解析:从核心原理到实战优化

ABAP同步与异步调用深度解析:从核心原理到实战优化

1. 项目概述:同步与异步,ABAP程序设计的核心抉择 在SAP ABAP开发领域,无论你是刚入门的新手,还是摸爬滚打多年的老手,“同步调用”和“异步调用”这两个概念都是绕不开的核心议题。这不仅仅是两个技术名词,…

2026/10/16 21:08:17 阅读更多 →

最新新闻

Python+DeepSeek-R1农作物产量预测全链路实战:从爬虫到可视化推荐

Python+DeepSeek-R1农作物产量预测全链路实战:从爬虫到可视化推荐

“Python DeepSeek-R1大模型做农作物产量预测,还带爬虫、可视化、推荐系统”——这段时间被问得最多的毕设题目就是它。先直接说结论:这个题目看起来模块多、内容杂,其实底层逻辑非常清晰,一句话概括就是“用爬虫拿到数据&#x…

2026/10/17 6:35:58 阅读更多 →
YTSage 快速上手:三步完成 YouTube 视频下载、音频提取与批量处理

YTSage 快速上手:三步完成 YouTube 视频下载、音频提取与批量处理

YTSage 快速上手:三步完成 YouTube 视频下载、音频提取与批量处理 【免费下载链接】YTSage Modern YouTube downloader with a clean PySide6 interface. Download videos in any quality, extract audio, fetch subtitles, sponsorBlock, and view video metadata.…

2026/10/17 6:35:58 阅读更多 →
Claude Code模板实战:用CLAUDE.md与斜杠命令打造高效AI编程助手

Claude Code模板实战:用CLAUDE.md与斜杠命令打造高效AI编程助手

在终端里折腾 Claude Code 的这大半年,我慢慢意识到一个事儿:真正决定 AI 编程助手是“玩具”还是“同事”的,往往不是模型本身,而是你怎么给它交代工作。Claude Code 提供了一套非常灵活的环境控制机制,比如项目级的 …

2026/10/17 6:35:58 阅读更多 →
VMware虚拟机双网卡配置详解:从网络模式到路由冲突解决

VMware虚拟机双网卡配置详解:从网络模式到路由冲突解决

VMware里给虚拟机加块网卡,点几下鼠标的事。但真正用起来,双网卡踩坑的人太多了:明明两块网卡都亮了,外网不通;或者虚拟机两块网卡互相抢路由,业务IP能通,管理IP死活连不上。这篇东西我从底层网络模式讲起&…

2026/10/17 6:35:58 阅读更多 →
x-planner事件级规划:破解长程多步骤机器人操作误差累积难题

x-planner事件级规划:破解长程多步骤机器人操作误差累积难题

1. 从"走一步看一步"到"先想清楚再动手":x-planner 要解决的真问题机器人做长程多步骤操作,最容易翻车的地方往往不是单个动作做不出来,而是"做完这一步,下一步该干嘛"没想明白。我接触过不少做机械…

2026/10/17 6:35:58 阅读更多 →
FAB工程师谈副业:哪些方向真正可行

FAB工程师谈副业:哪些方向真正可行

一、痛点背景:从一次真实的生产事故说起FAB工程师谈副业:哪些方向真正可行这个问题,在FAB里不是一天两天了。我见过太多工程师踩坑:要么是方法用错导致数据误判,要么是工具选型失误导致项目延期,要么是流程…

2026/10/17 6:34:58 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →