Bootstrap3侧边导航栏实战:响应式折叠布局与避坑指南
简介本资源是一份基于Bootstrap 3框架实现的响应式侧边导航栏完整示例面向前端初学者与Web开发人员解决在传统网页中快速构建结构清晰、适配多端尤其移动端折叠交互的垂直导航组件问题。压缩包共9个文件包含1个核心HTML页面sidebar.html、2个JS依赖jquery-3.0.0.min.js与bootstrap.min.js、1个CSS样式文件bootstrap.min.css及5种字体文件woff2/ttf/woff/svg/eot完整支撑Glyphicons图标渲染与Bootstrap基础功能运行整体仅170KB轻量易集成。已有5178人学习下载资源即开即用无需额外配置不仅提供标准navbar-inverse侧边栏结构、data-toggle折叠逻辑与.active状态标记等关键实现还内置了字体资源与兼容性处理可直接部署调试或作为教学范例深入理解Bootstrap 3导航组件的HTML语义、CSS定制逻辑与jQuery交互原理。1. Bootstrap3 侧边导航栏不是“加个 sidebar class”就能用的响应式布局黑匣子你是不是也试过直接把 Bootstrap 3 官方文档里那段.sidebar示例代码复制进项目结果在小屏上导航栏直接消失、大屏上内容被压扁、点击菜单没反应、甚至整个页面横向滚动条莫名出现这不是你 CSS 功底差而是 Bootstrap 3 的侧边导航栏根本就不是开箱即用的组件——它没有内置sidebar类官方从未提供完整可运行的侧边栏布局方案。所谓“Bootstrap3 侧边导航栏”实际是开发者基于其栅格系统.col-md-3.col-md-9、折叠插件collapse、按钮触发逻辑和少量定制 CSS 拼出来的轻量级解决方案。它适合快速搭建内部管理后台、文档站点或教学 Demo对移动端适配要求不高、不依赖复杂状态管理、且能接受手动控制显示/隐藏逻辑的场景。如果你正卡在“导航栏不跟随滚动”“折叠后内容区域没重排”“小屏下 hamburger 图标点不动”这类问题上这篇笔记就是为你拆解真实工程中反复验证过的最小可行实现不讲原理图只给能粘贴、能改、能 debug 的代码块和血泪排查记录。2. 从零构建可折叠侧边导航栏HTML 结构 栅格布局 折叠逻辑三件套2.1 HTML 骨架必须包含的三个容器与两个关键 IDBootstrap 3 的侧边栏本质是 DOM 结构 CSS 布局 JS 行为的组合体。以下结构是经过多次翻车后确认的最小可靠骨架缺一不可!DOCTYPE html html langzh-CN head meta charsetutf-8 meta http-equivX-UA-Compatible contentIEedge meta nameviewport contentwidthdevice-width, initial-scale1 titleBootstrap3 侧边导航栏示例/title !-- Bootstrap 3.4.1 CSSCDN -- link relstylesheet hrefhttps://cdn.jsdelivr.net/npm/bootstrap3.4.1/dist/css/bootstrap.min.css !-- 自定义侧边栏样式必须 -- link relstylesheet hrefsidebar.css /head body !-- 1. 全局容器包裹所有内容用于控制整体宽度 -- div classcontainer-fluid !-- 2. 导航栏触发区仅小屏显示 -- div classnavbar-header visible-xs-block button typebutton classnavbar-toggle collapsed >/* sidebar.css */ /* ✅ 正确侧边栏默认隐藏仅在中屏及以上显示 */ .sidebar-menu { display: none; } media (min-width: 992px) { .sidebar-menu { display: block; } } media (min-width: 1200px) { .sidebar-menu { width: 200px; /* 大屏下固定宽度避免文字撑开 */ } } /* ❌ 错误示例绝对不要写 */ /* .sidebar-menu.col-xs-12 { display: block; } —— 这会让小屏下侧边栏强行占满整行破坏折叠逻辑 */参数说明display: none/block是比col-xs-*更底层的控制方式它绕过栅格计算直接控制 DOM 可见性避免collapse插件与栅格类冲突。media (min-width: 992px)对应md断点是 Bootstrap 3 侧边栏的“启用阈值”低于此宽度侧边栏由collapse控制显隐高于此宽度侧边栏常驻显示。width: 200px在lg断点下生效防止长菜单项如“系统日志审计配置”导致侧边栏无限拉宽影响 UI 一致性。实测中180–220px 是中文菜单最舒适宽度。2.3 折叠插件初始化手动触发show()的必要性与时机Bootstrap 3 的collapse插件默认只响应>// sidebar.js $(document).ready(function() { // 获取当前窗口宽度 var windowWidth $(window).width(); // 小屏下992px确保折叠状态初始为 closed if (windowWidth 992) { $(#sidebar-collapse).removeClass(in); // 移除 in 类Bootstrap 3 展开态标识 } // 中屏及以上≥992px强制展开侧边栏 else { $(#sidebar-collapse).addClass(in).attr(aria-expanded, true); } // 监听窗口大小变化动态调整防横屏/缩放 $(window).resize(function() { var newWidth $(window).width(); if (newWidth 992 !$(#sidebar-collapse).hasClass(in)) { $(#sidebar-collapse).addClass(in).attr(aria-expanded, true); } else if (newWidth 992 $(#sidebar-collapse).hasClass(in)) { $(#sidebar-collapse).removeClass(in).attr(aria-expanded, false); } }); });逻辑说明$(.in)是 Bootstrap 3collapse插件的内部状态类addClass(in)等价于调用.collapse(show)但更底层、更可控。aria-expanded是无障碍属性必须与视觉状态同步否则屏幕阅读器无法正确播报。resize事件监听是必须的用户旋转手机、浏览器缩放、分屏窗口都会触发断点变化不处理会导致状态错乱如横屏后侧边栏仍隐藏。注意此脚本必须放在 Bootstrap JS 之后加载否则$().collapse方法未定义。3. 样式精修让侧边栏不“飘”、菜单不“挤”、滚动不“卡”3.1 固定定位与滚动跟随CSSposition: fixed的边界条件很多教程直接给.sidebar-menu加position: fixed结果发现内容区文字被侧边栏遮盖、滚动时侧边栏卡在顶部不动、或者小屏下 fixed 元素脱离文档流导致布局崩溃。Bootstrap 3 的栅格系统与 fixed 定位天然互斥必须用“伪固定”方案/* sidebar.css */ .sidebar-menu { position: relative; /* 默认相对定位兼容栅格 */ background-color: #f5f5f5; border-right: 1px solid #ddd; padding: 15px 0; min-height: 100vh; /* 视口高度非 100%100% 依赖父容器高度 */ } /* 中屏及以上启用 fixed 定位但需补偿 top 值 */ media (min-width: 992px) { .sidebar-menu { position: fixed; top: 50px; /* 补偿顶部 navbar 高度Bootstrap 3 navbar 默认 50px */ left: 0; bottom: 0; overflow-y: auto; /* 允许内部滚动避免侧边栏过高 */ width: 250px; /* 显式设宽避免 fixed 下宽度塌陷 */ } /* 同时内容区需增加左外边距腾出侧边栏空间 */ .main-content { margin-left: 250px; } } /* 大屏优化微调宽度与内边距 */ media (min-width: 1200px) { .sidebar-menu { width: 200px; } .main-content { margin-left: 200px; } }参数说明min-height: 100vh是关键vh单位基于视口确保侧边栏至少撑满屏幕高度避免内容区背景色“漏出来”。top: 50px必须精确匹配你项目中顶部导航栏navbar的高度。若你自定义了 navbar 高度如height: 60px此处必须同步修改否则侧边栏会覆盖 navbar 或留白。overflow-y: auto是滚动保障当菜单项超过视口高度时侧边栏内部出现滚动条而非拖动整个页面。margin-left作用于.main-content而非.sidebar-menu这是规避 fixed 定位导致内容区“上移”的标准做法。3.2 菜单项样式强化解决文字截断、悬停失效、激活态丢失三大玄学Bootstrap 3 的nav-stacked默认样式在侧边栏中表现不佳长文字换行错乱、悬停无反馈、当前页高亮不明显。以下是生产环境验证过的修复 CSS/* sidebar.css */ .sidebar-menu .nav li a { padding: 12px 15px; white-space: nowrap; /* 强制单行避免换行挤压 */ overflow: hidden; text-overflow: ellipsis; /* 超长文字显示 ... */ color: #333; border-left: 3px solid transparent; /* 左侧激活条预留空间 */ } .sidebar-menu .nav li a:hover, .sidebar-menu .nav li a:focus { background-color: #e8e8e8; color: #2c3e50; border-left-color: #3498db; /* 悬停时左侧条变蓝 */ } .sidebar-menu .nav li.active a { background-color: #3498db; color: #fff; border-left-color: #fff; /* 激活态左侧条为白色更醒目 */ font-weight: bold; } /* 修复小屏下折叠菜单的 padding 和字体大小 */ media (max-width: 991px) { .sidebar-menu .nav li a { padding: 10px 15px; font-size: 14px; } }逻辑说明white-space: nowraptext-overflow: ellipsis是处理中英文混合长菜单如“数据导出CSV/Excel”的标准组合避免文字折行导致行高不一致。border-left替代背景色高亮视觉更轻量且在深色主题下兼容性更好。:hover和.active的样式必须分开定义因为 Bootstrap 3 的active类不会自动触发:hover状态二者逻辑独立。小屏媒体查询中缩小padding和font-size是为了在窄屏幕上提升点击热区密度和可读性。3.3 滚动行为优化scroll-behavior: smooth的兼容性补丁现代浏览器支持scroll-behavior: smooth实现平滑滚动但 Bootstrap 3 默认不启用且 IE 完全不支持。为保证所有浏览器下锚点跳转如点击“用户管理”跳到#users体验一致需手动添加 JS 平滑滚动// sidebar.js续 $(a[href^#]).on(click, function(e) { e.preventDefault(); var target $($(this).attr(href)); if (target.length) { $(html, body).animate({ scrollTop: target.offset().top - 50 // 减去 navbar 高度避免被遮挡 }, 300); } });参数说明scrollTop: target.offset().top - 50中的50是顶部 navbar 高度必须与.sidebar-menu的top值一致否则锚点定位偏移。300是动画时长毫秒200–500ms 是人眼感知流畅的合理区间300ms 是平衡速度与体验的常用值。此代码仅作用于href以#开头的链接不影响外部跳转安全无副作用。4. 避坑指南五个真实踩过的坑与当场可执行的修复命令4.1 现象小屏下汉堡图标点击无反应控制台无报错原因jQuery 版本与 Bootstrap 3 不兼容。Bootstrap 3.4.1 要求 jQuery 1.9.1–3.4.1但很多项目误引入 jQuery 3.6其on()方法签名变更导致>!-- 替换原 jQuery 引入 -- script srchttps://cdn.jsdelivr.net/npm/jquery1.12.4/dist/jquery.min.js/script验证在浏览器控制台执行$.fn.jquery返回1.12.4即成功。4.2 现象中屏下侧边栏显示但内容区被压缩到右侧极窄区域文字堆叠原因.main-content的栅格类未与.sidebar-menu的col-md-*互补。例如侧边栏用col-md-3内容区却用了col-md-12导致总列数超 12。解决严格按栅格数学计算执行以下 CSS 强制修正media (min-width: 992px) { .main-content { flex: 0 0 auto; /* 关闭 flex 布局干扰 */ width: calc(100% - 250px); /* 手动计算宽度绕过栅格错误 */ } }验证用浏览器开发者工具检查.main-content的 computed width应为calc(100% - 250px)且数值正确。4.3 现象侧边栏在大屏下滚动时菜单项文字闪烁、背景色跳变原因position: fixed元素在某些 GPU 加速场景下触发渲染 bug尤其在 Chrome 旧版本中。解决为.sidebar-menu添加硬件加速提示.sidebar-menu { transform: translateZ(0); -webkit-transform: translateZ(0); }验证刷新页面快速滚动侧边栏文字应稳定无闪烁。4.4 现象点击菜单项后URL 地址栏出现#xxx但页面未滚动到对应锚点原因Bootstrap 3 的scrollspy插件未启用或>body>// sidebar.js续 $(body).scrollspy({ target: #sidebar-collapse, offset: 50 });验证滚动页面观察侧边栏中对应菜单项是否自动添加active类。4.5 现象部署到 Nginx 后小屏下汉堡图标点击后侧边栏闪一下就消失原因Nginx 默认不支持 HTML5 History API#锚点跳转被当作新请求触发 404 后页面重载导致 collapse 状态重置。解决在 Nginx 配置中添加try_files指令将所有前端路由 fallback 到index.htmllocation / { try_files $uri $uri/ /index.html; }验证在浏览器地址栏手动输入http://yourdomain.com/#settings页面应正常加载且侧边栏定位到“系统设置”。5. 进阶技巧为侧边栏添加图标、权限过滤与懒加载菜单5.1 图标集成用 Glyphicons 官方图标库零成本增强识别度Bootstrap 3 自带 Glyphicons 字体图标无需额外 CDN。只需在菜单项a标签内插入span classglyphicon即可ul classnav nav-pills nav-stacked li classactivea href#homespan classglyphicon glyphicon-home/span 首页/a/li lia href#usersspan classglyphicon glyphicon-user/span 用户管理/a/li lia href#productsspan classglyphicon glyphicon-th-list/span 商品列表/a/li lia href#settingsspan classglyphicon glyphicon-cog/span 系统设置/a/li /ul参数说明glyphicon-home等类名必须与 Glyphicons 官方文档 严格一致拼写错误图标不显示。图标与文字间默认有空隙如需紧贴添加margin-right: 5px到.glyphicon。所有图标均支持:hover和.active状态继承无需额外 CSS。5.2 权限控制服务端渲染时动态生成菜单项Node.js Express 示例真实项目中菜单需按用户角色显示不同项。服务端如 Express应在渲染前过滤菜单数据// server.jsExpress 后端 app.get(/dashboard, (req, res) { const userRole req.session.role; // 假设 session 中存有角色 const menuItems [ { path: #home, label: 首页, icon: home, roles: [admin, user] }, { path: #users, label: 用户管理, icon: user, roles: [admin] }, { path: #products, label: 商品列表, icon: th-list, roles: [admin, editor] }, { path: #settings, label: 系统设置, icon: cog, roles: [admin] } ]; // 过滤出当前用户有权限的菜单 const filteredMenu menuItems.filter(item item.roles.includes(userRole)); res.render(dashboard, { menu: filteredMenu }); });!-- dashboard.ejs模板 -- ul classnav nav-pills nav-stacked % menu.forEach(function(item) { % lia href% item.path % span classglyphicon glyphicon-% item.icon %/span % item.label % /a/li % }); % /ul逻辑说明权限过滤必须在服务端完成避免前端通过审查元素伪造请求。roles字段是数组支持一个用户多个角色如[admin, editor]includes()方法简洁高效。模板中% %是 EJS 语法其他模板引擎如 Pug、Handlebars写法不同但过滤逻辑一致。5.3 懒加载菜单点击展开二级菜单减少首屏渲染压力当菜单层级加深如“系统设置 日志管理 查看日志”一次性渲染所有 DOM 会拖慢首屏。用 Bootstrap 3 的collapse实现二级菜单懒加载li classdropdown a href# classdropdown-toggle>.sidebar-menu .dropdown-menu { position: static; /* 取消 absolute避免脱离侧边栏容器 */ float: none; width: 100%; margin: 0; border-radius: 0; box-shadow: none; }从那以后我每次新建 Bootstrap 3 侧边栏项目都强制走一遍这五步① 检查 jQuery 版本② 验证栅格列宽加总是否为 12③ 在sidebar.css顶部写死media (min-width: 992px)断点④ 用console.log($(#sidebar-collapse).hasClass(in))打印初始状态⑤ 部署前在本地起一个 Nginx 测试#锚点。这五步花不了三分钟但能避开 90% 的线上翻车。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

AI辅助学术写作全流程:从选题到返修的人机协作实战指南

AI辅助学术写作全流程:从选题到返修的人机协作实战指南

写论文这件事,真正经历过的人才会明白,难点从来不只是“写”这个动作。从选题到文献调研,从初稿到反复打磨,再到选刊投稿、应付审稿人的质疑,每一个环节都在消耗精力,而且很多都是重复劳动。最近这一年&…

2026/10/17 3:27:52 阅读更多 →
MoUI —— 用 MoonBit 写一次 UI,跑遍桌面、Web、手机和终端

MoUI —— 用 MoonBit 写一次 UI,跑遍桌面、Web、手机和终端

MoUI 是一个 MoonBit 语言的多平台声明式 GUI 框架。应用逻辑用一套 TEA(The Elm Architecture)模型编写,macOS、Windows、Linux、Web 和移动端共用同一份代码,平台目录里只有很薄的入口接线。 为什么值得看一眼 真正的类型安全 UI。 建立在 MoonBit 之上…

2026/10/17 3:27:52 阅读更多 →
从补码到整数溢出:理解计算机中的二进制位模式与类型解释

从补码到整数溢出:理解计算机中的二进制位模式与类型解释

1. 先从一次“诡异”的减一操作聊起大概很多人在写倒计时逻辑时都遇到过这种见鬼的事:一个普通的整数变量,减到 0 之后继续减,下一瞬间变成了 4294967295。第一次看到这个数字时我还以为程序算错了,甚至怀疑是内存被改。后来静下心…

2026/10/17 3:26:50 阅读更多 →

最新新闻

低质量手指静脉图像分割实战:区域生长算法的原理与实现

低质量手指静脉图像分割实战:区域生长算法的原理与实现

1. 这个毕设选题,为什么专挑"低质量"手指静脉图像下手手指静脉识别在生物特征识别圈子里一直有"最难造假"的称号。跟指纹、人脸这种暴露在体表的特征不同,静脉藏在皮肤下面,活体采集时才有信号,复印件、照片、…

2026/10/17 4:07:01 阅读更多 →
Qt Widgets与Qt Quick混合编程实战:C++与QML通信架构全解析

Qt Widgets与Qt Quick混合编程实战:C++与QML通信架构全解析

简介:这是一套围绕《QT和QT Quick实战》整理的源码与配套学习资源包,面向桌面应用、嵌入式及跨平台界面开发者,适合正在系统学习Qt框架、希望从传统控件编程过渡到QML声明式开发的读者。包内共535个文件,压缩包约58.53MB&#xff…

2026/10/17 4:07:01 阅读更多 →
本地AI视频生成实战:单卡15秒出片的配置与推理加速

本地AI视频生成实战:单卡15秒出片的配置与推理加速

最近老有朋友问我,本地跑AI视频生成到底要什么配置。市面上那些云端方案确实省事,但用多了就明白,排队、限速、按秒计费和隐私问题,每一条都让人脑壳疼。我自己折腾本地部署有一段时间了,真正让我觉得“这工具可以认真…

2026/10/17 4:07:01 阅读更多 →
光束法区域网平差VC++实现:原理、代码与二次开发

光束法区域网平差VC++实现:原理、代码与二次开发

简介:一份面向摄影测量与计算机视觉学习者的VC光束法区域网平差实现代码,旨在通过最小二乘原理解算像片外方位元素,提升多视图三维重建精度,可应用于无人机测绘、遥感图像处理等场景。压缩包共32个文件,以头文件与C源文…

2026/10/17 4:07:01 阅读更多 →
中国风AI绘画提示词指南:四套可直接照抄的中式美学配方

中国风AI绘画提示词指南:四套可直接照抄的中式美学配方

把“中国风”三个字喂给AI,十个朋友里至少八个会失望。要么出来的是景区纪念品同款红金配色,要么是“古风”和“影楼写真”之间反复摇摆的尴尬产物,偶尔还得附赠六根手指。真正能让人眼前一亮的中国风AI图片,靠的从来不是运气&…

2026/10/17 4:07:01 阅读更多 →
Flink源码导入IntelliJ IDEA完整流程与高频踩坑排查指南

Flink源码导入IntelliJ IDEA完整流程与高频踩坑排查指南

说实话,把 Apache Flink 源码成功弄进 IntelliJ IDEA 并稳定跑起来,这件事我前后折腾了三四天。中间踩过的坑包括 JDK 版本匹配、Maven 镜像超时、Lombok 插件缺失、flink-python 模块的 Python 环境错位……直到最后能在 IDE 里对着源码打上断点&#x…

2026/10/17 4:06:00 阅读更多 →

日新闻

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 阅读更多 →