phpmyadmin 5.1 导航栏宽度失效、字体不生效及小屏错位问题,根源在于弹性布局覆盖内联样式、多层动态css优先级冲突及响应式规则缺失;须修改navigation.php渲染逻辑或注入高优先级css,并同步调整config.inc.php与清空缓存。

导航栏宽度被强制重置,拖拽后刷新就失效
根本不是 JS 没保存设置,而是 phpMyAdmin 5.1 的导航框架在渲染时会主动覆盖 style.width——尤其当父容器是 display: flex 时,内联 width 会被弹性布局拉回。直接改 common.css 不起作用,必须从 DOM 渲染源头干预。
实操建议:
- 打开
phpMyAdmin/libraries/classes/Navigation/Navigation.php,搜索getHtml()或类似渲染逻辑,在生成左侧导航 HTML 前插入固定宽度控制(如给.navigation加style="width: 260px !important;") - 更稳妥的做法是覆盖 CSS 的层叠优先级:在自定义主题的
css/common.css中,用.navigation { width: 260px !important; min-width: 260px; },并确保该 CSS 在所有默认样式之后加载 - 若使用 Nginx/Apache 虚拟主机,可配合
add_header Content-Security-Policy "style-src 'self' 'unsafe-inline'";避免内联样式被拦截
字体大小改了但没生效,或只局部变化
phpMyAdmin 5.1 使用多层字体控制:全局根字号、导航文字、SQL 输入框、结果表格各走不同 CSS 规则,且部分样式由 PHP 动态注入(如 common.css.php),缓存和优先级容易出错。
实操建议:
- 修改
themes/pmahomme/css/common.css.php中的html { font-size: ... }行,设为固定值(如14px),不要依赖$_SESSION['PMA_Theme']->getFontSize() - 单独强化导航文字:追加规则
.navigation a, .navigation .database, .navigation .table { font-size: 13px !important; } - 清空浏览器缓存 + 强制重载(Ctrl+F5),或访问时加 URL 参数
?v=2绕过 CSS 缓存
小屏下导航栏换行错位、数据库名截断
5.1 默认媒体查询 @media (max-width: 768px) 仍保留 float: left,导致导航容器内部布局崩溃,不是字体问题,是 Flex 布局缺失。
实操建议:
- 在自定义 CSS 中补全三处关键声明:
.navigation { flex-wrap: wrap; justify-content: flex-start; }- 所有含
float: left的类(如.left,.right)统一改为display: block; width: 100%; -
.navigation .container { white-space: nowrap; overflow-x: auto; }—— 这能让长数据库名横向滚动,不换行也不截断
配置永久生效,而不是“仅本次会话”
界面里点“保存设置”只写入 session,不会触达 config.inc.php,所以每次重启浏览器或超时就还原。真正起效必须改服务端配置。
实操建议:
- 编辑
config.inc.php,添加:$cfg['LeftFrameDBTree'] = false;(禁用树形分组)、$cfg['NavigationTreeEnableGrouping'] = false;(5.x 后等效项) - 字体与宽度这类 UI 设置无法通过
$cfg控制,只能靠 CSS 注入;但要让 CSS 生效范围覆盖所有用户,需将自定义 CSS 放入themes/pmahomme/css/并确保$cfg['ThemeDefault']指向它 - 改完务必重启 Web 服务(如
systemctl restart apache2)或至少清空 phpMyAdmin 的临时缓存目录(tmp/下的cache_*文件)
common.css.php 中的 PHP 逻辑仍在运行,静态 CSS 覆盖不住它动态输出的样式。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











