如何让Sphinx/reStructuredText内容适配窗口宽度?升级后固定宽度问题求助
这种版本迭代后布局突然变固定的情况,我之前帮同事排查过类似的,大概率是Sphinx的classic主题在版本更新中调整了核心容器的宽度控制逻辑,给你几个具体的排查思路:
检查classic.css的核心容器宽度规则
直接用浏览器开发者工具(按F12)选中页面主内容区域,查看.document或.bodywrapper这类核心容器的CSS属性。Sphinx 1.7.x的classic主题默认可能给主容器加了max-width限制(比如max-width: 940px),而1.1.3版本的主题是没有这个固定上限的。重点看computed样式里的width和max-width属性,对比新旧版本的差异。排查自定义html_style.css的冲突
虽然你说没做其他更改,但升级后新版classic.css的样式优先级可能和你旧的html_style.css里的规则冲突了。比如旧版你可能写过自适应宽度的自定义规则,但新版主题的CSS权重更高,把你的设置覆盖了。可以临时移除html_style.css,重新构建文档看看页面是否恢复自适应,先排除自定义样式的影响。确认conf.py里的主题配置项
Sphinx 1.7.x的classic主题新增了控制页面宽度的配置参数,比如body_max_width。旧版本1.1.3没有这个配置,升级后可能默认启用了固定宽度值。你可以在conf.py里尝试添加以下配置,然后重新构建:html_theme_options = { 'body_max_width': None }这个配置会强制主题不限制主内容的最大宽度,看看能不能解决问题。
对比HTML结构的变化
版本升级后,Sphinx生成的HTML页面结构可能有调整,比如新增了外层容器(比如.page),这些新容器带了固定宽度限制。用开发者工具对比新旧版本的HTML嵌套结构,找到新增的限制宽度的容器,针对性调整CSS。临时验证修复思路
如果暂时找不到根源,可以先在html_style.css里加个强制覆盖的规则快速验证:.document { max-width: none !important; width: 100% !important; }要是添加后页面恢复自适应,就说明确实是
max-width属性导致的固定宽度问题,再回头找具体是哪个CSS文件里的规则在起作用。
内容的提问来源于stack exchange,提问作者rezroo

