可执行文件图标修改全攻略:从原理到Python、C#、Qt实战
这次我们来看一个非常实际的问题如何更改一个可执行文件.exe的图标。这不仅是美化软件界面的需求更是开发者发布产品、区分版本、建立品牌标识的关键一步。无论是你用 Python、C#、Qt 还是其他语言开发的程序最终打包成 exe 后默认的图标往往不够专业或不符合产品定位。这篇文章将彻底解决这个问题。我们会从原理讲起覆盖 Python、C#、Qt 等主流开发语言的图标修改方案并提供从图标设计、格式转换到最终嵌入的完整操作流程。无论你是想替换 PyInstaller 打包的 exe 图标还是为 WinForm 程序定制托盘图标或是解决 Qt 程序打包后图标丢失的难题这里都有对应的答案。1. 核心能力速览图标修改的几种路径在动手之前先明确你的技术栈和目标这决定了你该走哪条路。能力项说明与适用场景修改目标替换已编译的.exe文件的图标资源。核心原理修改可执行文件内部的图标资源.rsrc 段或是在编译/打包阶段指定图标文件。主要方法1.编译/打包时指定最推荐、最干净的方法。在源代码或构建脚本中指定图标。2.使用资源编辑工具对已生成的 exe 进行“外科手术”如 Resource Hacker、Restorator。3.反编译后重打包风险高、复杂仅作为最后手段如无源码时。图标格式要求必须是.ico格式。通常需要包含多个尺寸如 16x16, 32x32, 48x48, 256x256以适配不同显示场景。影响范围更改主程序图标、任务栏图标、窗口图标、文件资源管理器缩略图等。工具依赖根据方法不同可能需要图标编辑/转换工具、资源编辑器、特定语言的打包工具如 PyInstaller。适合场景软件发布、产品美化、多版本区分、修复打包后图标丢失问题。简单来说如果你有源代码优先在构建阶段解决如果只有最终的 exe 文件再考虑使用资源编辑工具进行修改。2. 适用场景与使用边界2.1 谁需要更改 exe 图标独立开发者/小团队为自己的工具软件打造专业形象。Python 脚本开发者使用 PyInstaller、Py2exe、Nuitka 等工具打包后替换默认的“黑窗口”图标。C# / .NET 开发者为 WinForm、WPF 应用程序设置独特的窗口和任务栏图标。Qt/C 开发者在打包发布时确保应用程序图标正确嵌入避免显示为默认图标。软件维护人员需要为不同版本如专业版、免费版的同一程序更换图标以示区分。2.2 能解决什么问题品牌化让软件拥有独一无二的视觉标识。用户体验美观的图标能提升软件质感方便用户在任务栏或桌面快速定位。问题修复解决因打包配置错误导致的图标显示为默认、空白或错误的问题如“wps卸载后图标变白”、“git不显示图标”等现象部分原因与图标资源缓存或损坏有关。功能实现为程序添加或修改系统托盘图标Tray Icon实现后台通知功能。2.3 不适合什么场景与风险提示版权风险严禁直接盗用他人拥有版权的图标、商标或形象。请使用原创设计、购买正版授权或使用明确声明可免费商用的图标资源。系统文件绝对不要尝试修改系统核心的 exe 文件如explorer.exe,svchost.exe的图标这可能导致系统不稳定或安全软件报警。加壳/加密的 exe被强壳保护或加密的 exe 文件其资源段可能被压缩或混淆常规资源编辑器无法直接修改。期望“一键转换”将.xls、.txt等非可执行文件通过某些“转换器”变成带图标的 exe这类工具往往捆绑恶意软件或功能受限需极其谨慎。3. 环境准备与前置条件在开始操作前请确保你的环境满足以下基本要求。3.1 通用准备操作系统Windows 7/10/11。本文方法主要针对 Windows 平台的可执行文件。图标文件准备一个或多个.ico格式的图标文件。这是必须的。备份在修改任何 exe 文件前务必先复制一份备份。误操作可能导致程序无法运行。3.2 根据方法选择工具方法A打包时指定图标Python安装 PyInstaller (pip install pyinstaller)C#Visual Studio 或 .NET SDKQtQt Creator 及对应的编译套件方法B使用资源编辑工具推荐工具Resource Hacker下载 Resource Hacker 。这是一个免费、轻量且强大的 Windows 资源编辑器。方法C图标设计与转换在线转换工具如 ConvertICO , ICOConvert专业设计软件Adobe Illustrator, Photoshop (需插件导出ico)免费工具GIMP (开源图像编辑器)配合插件可导出ico。4. 图标设计与格式转换详解“工欲善其事必先利其器”。一个合格的图标是成功的第一步。4.1 图标 (.ico) 文件的特点.ico文件是一种容器格式它可以包含多个不同尺寸和色深如 256色、32位真彩色的图像。Windows 会根据使用场景桌面图标、任务栏、AltTab 预览自动选择最合适的尺寸显示。推荐包含的尺寸256x256,128x128,64x64,48x48,32x32,24x24,16x16。至少应包含256x256,48x48,32x32,16x16这四种。4.2 如何获取或创建 .ico 文件方案一在线转换最快如果你已有 PNG/JPG 格式的 logo访问一个可靠的在线转换网站如 convertio.co。上传你的 PNG 图片。选择输出格式为.ico。在高级设置中通常可以勾选“生成多个尺寸”。下载生成的.ico文件。方案二使用 GIMP免费、可控安装 GIMP。创建一个256x256像素的新图像设计你的图标。完成设计后需要安装一个名为gimp-plugin-ico的插件Windows 版 GIMP 可能已内置。点击文件 - 导出为在保存对话框中手动将文件扩展名改为.ico例如myapp.ico。点击“导出”会弹出 ICO 导出选项窗口。关键步骤在这里勾选“保存颜色深度”下的所有尺寸从 1x1 到 256x256并确保“压缩 (PNG)”被选中以获得更好质量。然后导出。方案三专业软件使用 Photoshop 配合 ICO 格式插件或使用专业的图标制作软件如 Axialis IconWorkshop、IcoFX 等它们能提供最精细的控制。5. 实战演练各平台 exe 图标修改指南下面我们分场景从最推荐到最应急的方法逐一讲解。5.1 场景一Python 打包时指定图标PyInstaller这是最规范的方法。你需要在打包命令或 spec 文件中指定图标。操作步骤假设你的主脚本是main.py图标文件myicon.ico放在同一目录。打开命令行进入该目录。执行打包命令使用-i或--icon参数指定图标pyinstaller -F -w -i myicon.ico main.py-F: 打包成单个 exe 文件。-w: 禁用命令行窗口对于 GUI 程序。-i myicon.ico: 指定图标文件。打包完成后在dist文件夹下生成的main.exe就会使用你指定的图标。进阶使用 spec 文件对于复杂项目通常会先生成 spec 文件进行配置pyinstaller main.py这会生成main.spec。用文本编辑器打开它找到exe EXE(...)部分在coll参数之前添加iconmyicon.icoexe EXE(pyz, a.scripts, a.binaries, a.zipfiles, a.datas, [], namemain, debugFalse, bootloader_ignore_signalsFalse, stripFalse, upxTrue, upx_exclude[], runtime_tmpdirNone, consoleFalse, # 如果是GUI程序这里为False iconmyicon.ico, # 在这里指定图标路径 disable_windowed_tracebackFalse, target_archNone, codesign_identityNone, entitlements_fileNone )然后运行pyinstaller main.spec重新构建。5.2 场景二C# WinForm 项目Visual Studio在 Visual Studio 中这是可视化操作。操作步骤在解决方案资源管理器中右键点击你的项目 -属性。切换到“应用程序”选项卡。在“资源”部分你会看到“图标和清单”。点击“图标”旁边的浏览按钮 (...)选择你的.ico文件。保存属性设置。重要还需要为主窗体设置图标。打开你的主窗体如Form1的设计视图。在属性窗口中找到Icon属性点击下拉箭头选择“项目资源文件”然后选择你刚刚为项目设置的图标。重新编译项目 (生成 - 重新生成解决方案)。新的 exe 将包含你设置的图标。修改任务栏托盘图标 (NotifyIcon)如果你的程序有系统托盘图标需要修改NotifyIcon控件的Icon属性方法同上在设计器中选择对应的图标资源。5.3 场景三Qt 项目Qt CreatorQt 程序的图标涉及两方面应用程序图标和窗口图标。操作步骤A. 设置应用程序图标 (Windows)在项目根目录下准备一个.ico文件例如appicon.ico。在项目根目录创建一个名为app.rc的文本文件内容如下IDI_ICON1 ICON DISCARDABLE appicon.ico在你的.pro项目文件中添加一行RC_FILE app.rc重新编译 (qmake然后make/nmake或使用 Qt Creator 构建)。生成的 exe 在资源管理器中就会显示新图标。B. 设置窗口图标在代码中为主窗口设置图标这会影响窗口标题栏的图标。// 例如在 main.cpp 或主窗口的构造函数中 #include QIcon MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { setWindowIcon(QIcon(:/images/windowicon.ico)); // 使用资源文件 // 或者使用绝对路径 // setWindowIcon(QIcon(C:/path/to/windowicon.ico)); }注意.ico文件需要添加到 Qt 的资源系统 (.qrc文件) 中或者使用绝对/相对路径。5.4 场景四通用方法 - 使用 Resource Hacker 修改已有 exe当你没有源代码或者打包工具未能成功嵌入图标时这是最有效的补救方法。操作步骤备份复制一份你要修改的original.exe为original_backup.exe。运行Resource Hacker。点击File - Open打开你的original.exe。在左侧资源树中展开Icon分组。你会看到现有的图标资源通常有一组ID 为1。删除旧图标右键点击Icon分组下的第一个资源如1: 1033选择Delete Resource。不要删除整个 Icon 文件夹只删除里面的资源。重复此步骤删除 Icon 组下所有现有图标资源。添加新图标右键点击左侧资源树的根目录即[你的exe文件名]。选择Add a new Resource...。点击Open file with new resource...按钮选择你准备好的.ico文件。在弹出的“Add a new resource”对话框中Resource Type填写ICONResource Name填写1这是主图标的常见ID。点击Add Resource。保存点击File - Save。Resource Hacker 会创建一个新文件默认命名为original_modified.exe。你也可以点击File - Save As...另存为其他名字。验证关闭 Resource Hacker去查看新生成的 exe 文件图标是否已更改。重要提示某些 exe 可能经过压缩或加壳Resource Hacker 可能无法打开或保存。此时需要先脱壳这已超出本文范围。修改系统文件或大型商业软件 exe 可能违反许可协议并触发杀毒软件警报。6. 疑难杂症与深度问题排查在实际操作中你可能会遇到一些棘手的情况。这里提供排查思路。6.1 图标修改后不生效这是最常见的问题。请按顺序检查Windows 图标缓存Windows 会缓存 exe 的图标。修改后需要刷新缓存。方法一重启资源管理器。按CtrlShiftEsc打开任务管理器找到Windows 资源管理器右键重新启动。方法二清除图标缓存。删除以下目录中的文件需显示隐藏文件%localappdata%\IconCache.db%userprofile%\AppData\Local\Microsoft\Windows\Explorer\iconcache*(一系列 db 文件) 删除后重启电脑或重启资源管理器。图标ID是否正确使用 Resource Hacker 等工具时主图标资源的 ID 通常是1。如果添加到了其他 ID如2可能不会被系统识别为主图标。确保替换或添加的是 ID 为1的图标资源。图标格式问题确保.ico文件是有效的并且包含了必要的尺寸特别是32x32和16x16。可以用 Resource Hacker 打开这个.ico文件本身检查内部包含的图像。文件路径/资源嵌入问题针对 Qt/C# 等Qt检查.rc文件路径是否正确.pro中RC_FILE配置是否正确以及是否重新执行了qmake和构建。C#检查项目属性中设置的图标文件是否已正确添加到项目资源中。有时需要将图标文件的“生成操作”属性设置为“嵌入的资源”尽管对于应用程序图标通常不是必须的。6.2 PyInstaller 打包后图标仍是默认的检查图标路径确保-i参数后的路径是有效的。使用绝对路径最保险。检查图标文件PyInstaller 对.ico文件有一定要求。尝试用前面提到的工具重新生成一个标准的、多尺寸的.ico文件。使用 spec 文件对于复杂情况使用 spec 文件并明确指定icon参数更可靠。查看构建日志运行 PyInstaller 时注意看命令行输出是否有关于图标文件的警告或错误信息。6.3 如何为不同场景设置不同图标文件关联图标当你的程序关联了某种文件类型时需要修改注册表中该文件类型的默认图标值指向你的 exe 文件以及图标资源 ID通常是0或1。这通常是在程序安装时完成的。不同尺寸/状态图标一个.ico文件内可以包含多个图像Windows 会自动选择。对于系统托盘图标你可能需要准备不同状态正常、激活、警告的图标并在代码中动态切换NotifyIcon.Icon(C#) 或QSystemTrayIcon.setIcon(Qt) 的属性。6.4 遇到“设备和驱动器有个空白图标删不掉”或“git绿色图标显示”等问题这类问题通常不是通过修改 exe 图标能解决的它们与 Windows Shell 扩展、Overlay Icon重叠图标或缓存损坏有关。空白图标/无法删除的图标可能是第三方软件如旧版杀毒、虚拟光驱、网盘客户端残留的 Shell 扩展导致。需要清理注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers和HKEY_CURRENT_USER\...下的相关项。操作注册表风险极高务必先备份。Git 状态图标这是 Git for Windows 或 TortoiseGit 等工具提供的 Shell 扩展用于在文件图标上显示版本控制状态如已修改、已暂存。如果不想显示可以在对应 Git 客户端的设置中禁用 Shell 扩展。7. 自动化与批量处理思路如果你需要为多个 exe 或频繁的构建过程修改图标可以考虑自动化。7.1 使用命令行工具Resource Hacker 提供了命令行版本ResourceHacker.exe可以编写脚本进行批量替换。# 示例将 icon.ico 替换到 program.exe 中并保存为 program_new.exe ResourceHacker.exe -open program.exe -save program_new.exe -action addoverwrite -res icon.ico -mask ICONGROUP,1,你需要查阅 Resource Hacker 的文档来了解详细的命令行参数。7.2 集成到构建脚本中Python在setup.py或使用pyinstaller的 hook 中确保图标参数被正确传递。CI/CD 管道在 Jenkins、GitLab CI 或 GitHub Actions 的构建步骤中加入图标替换的脚本命令作为发布流程的一环。8. 最佳实践与安全建议源优先原则始终优先在源代码和构建配置中设置图标这是最可维护的方式。图标管理将图标文件.ico,.png源文件纳入版本控制系统如 Git。多尺寸测试制作完成的图标后在桌面、任务栏、开始菜单、AltTab 切换器等多种场景下预览确保在所有尺寸下都清晰可辨。版权合规再次强调确保你使用的图标拥有合法的版权。对于商业软件这点至关重要。修改第三方 exe 要合法仅修改你拥有版权或明确授权修改的软件。修改他人软件的外观并重新分发可能涉及侵权。防病毒误报使用 Resource Hacker 等工具修改 exe 后某些敏感的杀毒软件可能会将其标记为“可疑”或“被修改”。对于自己发布的软件这通常需要你向杀毒软件厂商提交白名单申请。更改 exe 图标是一个从“能用”到“好用”的细节打磨过程。对于个人工具它提升的是使用时的愉悦感对于商业软件它则是品牌专业度的直接体现。掌握编译时指定和 Resource Hacker 修改这两种核心方法你就能应对绝大多数场景。记住图标是软件给用户的第一印象值得你花些时间把它做好。如果在实践中遇到本文未覆盖的特定框架如 Electron、Delphi的图标问题其核心思路依然是相通的找到资源嵌入的配置点或使用资源编辑工具。

相关新闻

智能软开关在配电网中的优化配置与改进灵敏度分析

智能软开关在配电网中的优化配置与改进灵敏度分析

1. 项目背景与核心价值在分布式能源大规模接入的背景下,有源配电网的运行控制面临前所未有的挑战。传统配电网的"被动式"管理模式已难以应对光伏、风电等间歇性电源带来的电压波动和潮流变化。智能软开关(Soft Open Point, SOP)作为…

2026/10/19 17:05:22 阅读更多 →
CC-Switch:统一管理多AI模型,解决大语言模型“降智”问题

CC-Switch:统一管理多AI模型,解决大语言模型“降智”问题

最近在折腾各种大语言模型时,你是不是也遇到过这样的烦恼:用着用着,感觉模型突然“变笨”了,回答质量断崖式下跌,上下文理解能力也时好时坏?尤其是在使用一些第三方客户端或集成工具时,GPT、Cla…

2026/10/18 7:05:59 阅读更多 →
特征融合模块对比:FPN、PANet、BiFPN、SPP 与 SPPF

特征融合模块对比:FPN、PANet、BiFPN、SPP 与 SPPF

tags: [YOLO, 特征融合, FPN, PANet, BiFPN, SPP, SPPF] aliases: [特征融合模块选型] 特征融合模块对比:FPN、PANet、BiFPN、SPP 与 SPPF[!abstract] 核心问题 特征融合要在高分辨率细节与低分辨率语义之间取得平衡,以兼顾小目标和大目标检测。模块信息…

2026/10/18 11:01:00 阅读更多 →

最新新闻

RAG知识库文档处理实操:解析、切分与检索效果全面调优

RAG知识库文档处理实操:解析、切分与检索效果全面调优

“收藏备用!RAG知识库文档处理实操”,这个标题我第一眼看到就想点头。做RAG知识库的人,谁没被文档处理折磨过?模型选型、Prompt优化这些话题都是热热闹闹的技术高地,结果真正把项目拖死的,往往是最朴素的一…

2026/10/19 17:06:26 阅读更多 →
知网AIGC检测升级:2026降AI率实操方法与底层逻辑

知网AIGC检测升级:2026降AI率实操方法与底层逻辑

知网AIGC检测升级这件事,今年把不少人打了个措手不及。去年还在用的某些“降AI率”套路,现在直接失效,甚至会让重复率一并飙升。我自己的几个文档在升级后重新送审,反馈回来的AIGC标注位置和之前完全不同,有些段落明明…

2026/10/19 17:06:26 阅读更多 →
1390张罂粟检测数据集:VOC/YOLO格式转换与YOLOv8训练实战

1390张罂粟检测数据集:VOC/YOLO格式转换与YOLOv8训练实战

1. 项目概览:1390张双格式数据集到底能做什么最近在整理目标检测训练样本,手头正好有一份“罂粟检测数据集1390张VOCYOLO格式”。这个数字乍一看不算大,但做算法验证和流程测试完全够用。整份数据由三部分构成:原始图片、VOC格式的…

2026/10/19 17:06:26 阅读更多 →
open-code-review实践:让代码评审从走形式变为聚焦逻辑与架构

open-code-review实践:让代码评审从走形式变为聚焦逻辑与架构

1. 代码评审这件事,为什么总在"走形式"和"挑刺"之间反复横跳我是从2022年下半年开始认真对待code review的。在此之前,我和大多数研发团队一样,把评审当成走流程:开了PR,挂两天没人看,…

2026/10/19 17:06:26 阅读更多 →
大模型如何补上物联网的认知短板:智能家居、工业与流程自动化实战

大模型如何补上物联网的认知短板:智能家居、工业与流程自动化实战

1. 从三个真实场景切入:大模型到底给物联网补上了哪块短板物联网这个概念喊了这么多年,真正落地时卡住的地方往往不是传感器不够便宜,也不是网络不够快,而是数据上来了没人会看、设备连上了不会决策。我做过几个从传感器到云端的完…

2026/10/19 17:06:26 阅读更多 →
CBAM注意力机制与CNN故障检测:从原理到PyTorch实战全指南

CBAM注意力机制与CNN故障检测:从原理到PyTorch实战全指南

1. 项目整体设计与需求拆解1.1 这个课题到底要解决什么问题先说结论:这个题目给的场景很“标准”,但特别容易做偏。很多同学一拿到“机器学习基于CBAM-CNN的故障汽车检测”这种题目,第一反应是去找个宝马、奥迪的图片数据集,然后闷…

2026/10/19 17:05:21 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →