如何在Furo Sphinx主题的侧边栏导航TOC中实现下拉菜单?
实现Furo主题侧边栏TOC带下拉箭头的方案
一、利用Furo原生功能+自定义CSS
Furo主题本身支持侧边栏TOC的层级折叠/展开,只是默认箭头样式可能不够明显,通过自定义CSS可以强化箭头效果:
- 在项目的
_static目录下创建custom.css(没有该目录则新建)。 - 修改
conf.py,引入自定义样式文件:
html_static_path = ['_static'] html_css_files = [ 'custom.css', ]
- 在
custom.css中添加以下样式,自定义箭头的外观和交互:
/* 调整侧边栏TOC箭头的基础样式 */ .furo-sidebar-tree .toctree-l1 > a > svg, .furo-sidebar-tree .toctree-l2 > a > svg, .furo-sidebar-tree .toctree-l3 > a > svg { fill: #555; width: 14px; height: 14px; margin-right: 4px; transition: transform 0.2s ease; } /* 展开状态下的箭头旋转效果 */ .furo-sidebar-tree .toctree-l1.expanded > a > svg, .furo-sidebar-tree .toctree-l2.expanded > a > svg, .furo-sidebar-tree .toctree-l3.expanded > a > svg { transform: rotate(90deg); } /* 调整目录层级缩进,让箭头更突出 */ .furo-sidebar-tree .toctree-l2 { padding-left: 12px; } .furo-sidebar-tree .toctree-l3 { padding-left: 24px; }
二、配置Furo主题的导航选项
确保conf.py中的主题配置正确开启折叠功能:
html_theme_options = { "collapse_navigation": True, # 默认开启,非当前页面的目录会折叠 "navigation_with_keys": True, # 支持键盘导航展开/折叠 }
开启后,点击目录项即可展开/折叠子目录,配合上面的CSS就能实现带箭头的下拉效果。
三、关于sphinxcontrib.fulltoc的兼容性问题
这个扩展的渲染逻辑和Furo主题的侧边栏机制冲突,会导致报错,直接移除该扩展即可,用Furo原生的TOC功能完全可以满足需求。
内容的提问来源于stack exchange,提问作者user15175292
相关产品推荐
相关产品推荐

