phpmyadmin 5.0+ 左侧导航树宽度固定且不可拖拽,因内联样式写死 width 值(如 240px),$cfg['navigationtreewidth'] 配置已被移除;可通过修改 navigation.css 或注入 js 强制重设宽度并防止文本截断。
左侧数据库树宽度固定、文字被截断或图标挤成一团,不是 css 被覆盖就是容器尺寸被硬编码限制了;根本原因通常是自定义主题、浏览器缩放、或 phpmyadmin 版本升级后默认样式未适配,而非配置项可调。
为什么 navigation tree 宽度无法拖拽或响应式收缩?
phpMyAdmin 的左侧导航树(#pma_navigation)在 5.0+ 版本中使用固定宽度(如 240px),且未启用 resize 句柄。它不响应窗口缩放,也不读取用户 CSS 偏好——所有宽度逻辑写死在 navigation.css 或内联 style 中。
- 常见现象:表名过长显示为
user_...,数据库名缩略成prod...,鼠标悬停无提示 - 根本限制:DOM 结构里
#pma_navigation的width是内联设置(例如style="width: 240px"),优先级高于外部 CSS - 版本差异:phpMyAdmin 4.x 允许通过
$cfg['NavigationTreeWidth']配置,但该选项在 5.0+ 中已被移除,文档也明确标注为“deprecated”
直接修改 CSS 强制加宽导航树(推荐)
最稳妥的方式是覆盖内联 width,并确保子元素能撑开。需编辑 phpMyAdmin 根目录下的 css/navigation.css(或通过自定义主题注入):
- 找到类似
#pma_navigation { width: 240px; }的规则,改为width: 320px !important; - 追加一行:
#pma_navigation .block_title, #pma_navigation .block_content { white-space: nowrap; }防止文本换行破坏布局 - 若使用深色主题或自定义 CSS 文件,把上述规则加到
custom.css并确认它在navigation.css之后加载 - 注意:修改后需清空浏览器缓存(Ctrl+F5),否则旧 CSS 仍生效
用 JS 动态重设宽度(兼容低权限环境)
若无法修改服务器文件(如共享主机),可在 config.inc.php 末尾注入一段 JS,在 DOM 加载后修正宽度:
- 在
config.inc.php最底部添加:
if (isset($_SERVER['HTTP_USER_AGENT'])) {
echo '<script>document.addEventListener("DOMContentLoaded", function() {
const nav = document.getElementById("pma_navigation");
if (nav) nav.style.width = "300px";
const titles = document.querySelectorAll("#pma_navigation .block_title");
titles.forEach(el => el.style.overflow = "visible");
});</script>';
}
- 该脚本仅在页面渲染完成时执行,不影响初始加载性能
- 不依赖 jQuery,兼容所有现代 phpMyAdmin 版本(4.9–5.2)
- 若发现宽度又被重置,说明有其他 JS(如 theme loader)在后续覆盖,可把
setTimeout(..., 500)包一层增强鲁棒性
容易被忽略的干扰因素
加宽后仍显示异常?大概率是以下某一项在捣鬼:
-
font-size被浏览器缩放强制放大(如 Chrome 设置为 125%),导致文字溢出——临时解决:按Ctrl+0重置缩放 - 某些安全插件(如 NoScript)阻止了
navigation.js执行,造成 DOM 结构未完整渲染,此时加宽无效 - 使用了第三方主题(如
pma-material),其 CSS 里写了更具体的 selector(如.theme-dark #pma_navigation),需针对性覆盖 - MySQL 数据库名本身含不可见 Unicode 字符(如零宽空格),导致前端计算宽度错误——可用
SELECT SCHEMA_NAME FROM information_schema.SCHEMATA检查原始值
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











