phpMyAdmin编辑页输入框宽度被固定,需修改CSS中.edit_row input和.edit_row textarea规则,将width: 200px改为max-width: 500px并加flex-shrink: 0,配合媒体查询适配移动端。
phpMyAdmin 编辑页面输入框宽度被固定死,怎么改?
phpmyadmin 的数据编辑页(比如点击某行后的「编辑」)里,<input> 和 <textarea> 默认宽度由 css 类 .edit_row input 和 .edit_row textarea 控制,且多数主题硬编码了 width: 200px 或类似值。这不是浏览器默认行为,是 phpmyadmin 自身样式层叠的结果。
直接在浏览器开发者工具里改 style.width 无效——因为后续 JS 可能重置、或者媒体查询在响应式断点下覆盖。真正生效的方式是覆盖其 CSS 规则,并确保优先级足够高(但不用 !important):
- 定位到对应 CSS 文件:通常是
phpmyadmin/css/common.css或主题专属的css/theme.css,搜索.edit_row input和.edit_row textarea - 将固定宽度改为弹性值:
width: 100%或max-width: 500px(推荐后者,避免窄屏溢出) - 如果父容器是
flex布局(如新版 phpMyAdmin 的编辑表单),必须加flex-shrink: 0,否则拉宽后会被压缩 - 移动端需补媒体查询:
@media (max-width: 768px) { .edit_row input { width: 100%; } }
textarea 高度太小,SQL 或 TEXT 字段根本没法看全
编辑页里的 <textarea>(例如 TEXT 类型字段)默认只有 2 行高,粘贴一段带缩进的子查询后,第一眼根本看不出括号是否匹配。这不是“不够美观”,是直接卡住调试流程。
关键不是设 height,而是用组合策略让高度随内容自然撑开,同时保留用户手动调整权:
- HTML 层加属性:
rows="8"(比默认 2 更合理,覆盖常见 cte + join 场景) - CSS 加:
min-height: 120px; max-height: 400px; resize: vertical; overflow-y: auto; - 务必声明:
white-space: pre-wrap;(保留换行和空格,又允许长行折行)和tab-size: 4;(否则粘贴进来的缩进塌成 2 字符) - 若该
textarea在 Modal 或折叠面板内,JS 初始化后需手动触发一次textarea.style.height = textarea.scrollHeight + 'px';,否则初始渲染不拉伸
拖拽调整宽度后刷新就复位,localStorage 没起作用?
phpMyAdmin 5.x 确实支持通过 localStorage 记住左侧导航栏宽度,但它**没为编辑页的输入框实现同套逻辑**。所以你手动拖动 <textarea> 右下角拉大,刷新后必然回到默认尺寸——这不是 bug,是功能压根没做。
立即学习“PHP免费学习笔记(深入)”;
如果真需要持久化编辑框尺寸,得自己补 JS(放在 config.inc.php 的 $cfg['Servers'][$i]['extension'] 后或自定义 JS 文件中):
- 监听
resize事件(仅对textarea,input不支持原生 resize) - 存时用:
localStorage.setItem('editTextareaHeight', textarea.style.height) - 读时在
DOMContentLoaded后执行:const saved = localStorage.getItem('editTextareaHeight'); if (saved) textarea.style.height = saved; - 注意:不要存
scrollHeight,它含滚动条,会导致每次加载都变高;应存用户最终拖出来的style.height
为什么改了 CSS 还是不生效?检查这几个地方
常见失效原因不是代码写错,而是被更高优先级规则或 JS 覆盖:
- 检查是否启用了第三方主题:很多主题(如
metro、bootstrap)会重载整个.edit_row样式,优先改主题 CSS 而非common.css - 确认没有 JS 动态注入内联样式:用开发者工具选中元素,看
Styles面板里element.style是否有width,若有,说明某处 JS(如navigation.js)在初始化时强行设置了 - phpMyAdmin 5.1+ 使用了更严格的 CSP 策略,若你通过
<script>标签注入样式,可能被拦截;应把自定义 CSS 放入css/custom.css并在config.inc.php中启用:$cfg['CustomCSS'] = 'css/custom.css'; - 缓存问题:改完 CSS 后清浏览器缓存,同时确认 phpMyAdmin 的模板缓存已关(
$cfg['TempDir']目录下文件是否被生成)



















