phpMyAdmin浏览器缩放后菜单错位如何修复

P粉602998670

P粉602998670

2026-08-04

654人浏览

原创

缩放后左侧菜单宽度失控是因为js未在缩放后重新读取localstorage值并应用,导致计算值与渲染尺寸不一致;应监听resize和domcontentloaded事件,用css变量+setproperty动态更新--nav-width,并确保#serverlinks节点存在且未被主题css覆盖。

为什么缩放后左侧菜单宽度失控? phpMyAdmin 5.x 的左侧导航栏(#serverlinks)宽度由 JS 动态控制,但它的逻辑依赖于 DOMContentLoaded 时读取 localStorage.getItem('navWidth') 并立即设到 DOM 上。如果页面在缩放状态下加载,或缩放后触发了重排但没刷新 JS 变量,就会导致宽度计算值与实际渲染尺寸不一致——表现为菜单突然变窄、塌陷、甚至被右侧内容挤出视口。
  • 缩放后拖拽调整宽度 → 刷新即复位:不是 bug,是 JS 没在缩放后重新读取并应用 localStorage 值
  • 左侧数据库列表不随窗口缩放响应:说明 resize 事件未触发宽度重算逻辑
  • #serverlinks 宽度固定为 200px 或 0px:常见于主题 CSS 覆盖了原始 inline style,或 JS 找不到该节点

如何让菜单宽度适配缩放后的视口? 核心思路是:不让 JS 依赖静态像素值,改用 CSS 变量 + 动态 setProperty,并监听 resizeDOMContentLoaded 双事件。
  • 在自定义主题 CSS 开头加入:
    :root { --nav-width: 200px; }
    ,然后把 #serverlinks 的 width 改为 width: var(--nav-width);
  • 修改 phpMyAdmin 的 JS(如 navigation.js),将原 element.style.width = width + 'px' 替换为:
    document.documentElement.style.setProperty('--nav-width', width + 'px');
  • 添加 resize 监听(防抖 100ms):
    window.addEventListener('resize', () => { clearTimeout(resizeTimer); resizeTimer = setTimeout(() => { const w = localStorage.getItem('navWidth') || '200'; document.documentElement.style.setProperty('--nav-width', w + 'px'); }, 100); });
  • 确保该逻辑在 DOMContentLoaded 后立即执行一次,否则首次加载不生效

第三方主题引发的排版错位怎么快速定位? 很多主题直接重写 .tablinks#serverlinks 的 display/flex/float,却忽略 phpMyAdmin 5.1 的 DOM 绑定强依赖。
  • 打开 DevTools → Elements 面板 → 选中 #serverlinks,看 Computed 中 widthfloatdisplay 是否被意外覆盖
  • 检查 .tablinks li 是否残留 float: left 但父容器已设 display: flex,造成换行错位
  • 若发现主题用了 all: unset 或全局 * { box-sizing: border-box },立刻删掉——phpMyAdmin 5.1 大量布局依赖默认 box-sizing: content-box 和 margin 行为
  • 常见错误样式示例:
    #serverlinks { display: block; } /<em> 缺少 width 和 float,导致塌陷 </em>/

JS 初始化失败导致菜单无交互怎么办? 部分主题修改了 DOM 结构(比如把 #serverlinks 包进新 <div>),导致 phpMyAdmin 原生 JS 找不到节点,整个折叠/展开逻辑失效。 <ul> <li>查看 Console 是否报错:<code>Cannot read property 'style' of nullgetElementById('serverlinks') is null
  • 检查 HTML 中 #serverlinks 是否还存在,ID 是否被改名、是否被移入其他容器、是否被注释掉
  • 若必须改结构,需同步修改所有调用处:document.getElementById('serverlinks')document.querySelector('.navigation #serverlinks') 或类似更鲁棒的选择器
  • 不要删除或重命名 navigation.js 中绑定事件的 target 元素,尤其是 .navigation.dblist.tablelist 这些 class 名
  • 缩放错位问题表面是 CSS,根子常在 JS 与 DOM 的耦合太紧;改 CSS 只能治标,补监听、保节点、用 CSS 变量才是治本。

    Comet AI 浏览器
    Comet AI 浏览器

    下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。

    下载

    php免费学习视频:立即使用
    踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

    相关文章

    PHP速学教程(入门到精通)
    PHP速学教程(入门到精通)

    PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

    下载

    相关标签:

    浏览器 php phpmyadmin

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    相关专题

    更多
    php文件怎么打开
    php文件怎么打开

    打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

    2023.09.01

    5433

    6

    php怎么取出数组的前几个元素
    php怎么取出数组的前几个元素

    取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

    2023.10.11

    3588

    5

    php反序列化失败怎么办
    php反序列化失败怎么办

    php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

    2023.10.11

    1786

    5

    php怎么连接mssql数据库
    php怎么连接mssql数据库

    连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

    2023.10.23

    2272

    4

    php连接mssql数据库的方法
    php连接mssql数据库的方法

    php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

    2023.10.23

    2783

    6

    html怎么上传
    html怎么上传

    html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

    2023.11.03

    1999

    9

    PHP出现乱码怎么解决
    PHP出现乱码怎么解决

    PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

    2023.11.09

    3030

    8

    php文件怎么在手机上打开
    php文件怎么在手机上打开

    php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

    2023.11.13

    2312

    8

    sprintf函数用法详解
    sprintf函数用法详解

    sprintf函数的用法:1、格式化字符串;2、指定输出宽度和精度;3、返回值。更多关于sprintf函数用法详解的内容,大家可以阅读下面的文章。

    2023.11.27

    10930

    4

    热门下载

    更多
    网站特效
    /
    网站源码
    /
    网站素材
    /
    前端模板

    精品课程

    更多
    相关推荐
    /
    热门推荐
    /
    最新课程
    phpMyAdmin 常见问题
    phpMyAdmin 常见问题

    共0课时 | 0人学习

    phpMyAdmin 配置文档
    phpMyAdmin 配置文档

    共0课时 | 0人学习

    phpMyAdmin 安装文档
    phpMyAdmin 安装文档

    共0课时 | 0人学习