textarea 设置 resize: none 未生效,主因是未同步设置 overflow: auto/hidden(css 要求 resize 仅在 overflow 非 visible 时生效),且动态插入的元素需内联样式或高优先级选择器确保覆盖。

textarea 设置 resize: none 为什么没生效
写了 resize: none 却还能拖,大概率不是语法错,而是样式根本没作用到真实 textarea 元素上。Layui 表格里用 edit 函数返回的 textarea 是动态插入的,它不继承你写在全局 CSS 里的规则,除非选择器精准匹配、优先级足够高。
更关键的是:CSS 规范要求 resize 只在 overflow 不是 visible 时才起效。而 textarea 默认 overflow: visible,所以即使写了 resize: none,浏览器也会直接忽略。
- 必须同时设置
overflow: auto(推荐)或overflow: hidden - 内联样式最稳:
<textarea style="resize: none; overflow: auto;"></textarea> - 如果用 class 控制,检查开发者工具的「Computed」面板,确认
resize和overflow两项最终值都是none和auto - 第三方 UI 库(如 Ant Design)可能带
!important的resize: vertical,得用resize: none !important覆盖
layui 表格中 edit 函数返回的 textarea 怎么禁拖拽
Layui 表格的 edit 字段不支持自动填充 + 原生控件逻辑,你返回的 textarea 完全脱离 layui 编辑流程,所以所有样式和行为都得自己兜底。
常见错误是只写 style="height: 80px;",漏掉 resize 和 overflow —— 这会导致双击后出现一个能随意拉伸的文本框,瞬间撑乱表格行高。
- 模板字符串里必须显式写全:
'<textarea class="layui-textarea" style="height: 80px; resize: none; overflow: auto;">' + (d.desc || '') + '</textarea>' -
class="layui-textarea"不能省,否则边框、圆角、字体等基础样式丢失 - 别依赖列配置里的
width或minWidth控制宽度,textarea默认 100% 宽,拉伸只发生在高度方向 - 如果用了固定列(
fixed: 'left'),建议加max-width: 100%防止宽度溢出
移动端 Safari 下 textarea 还能拖拽怎么办
iOS Safari(尤其 iOS 16+)存在系统级绕过:即使 resize: none 生效,长按 + 拖动仍可能触发缩放手势,表现为文本框轻微位移或界面卡顿。这不是 CSS 失效,而是浏览器把操作识别成了页面缩放。
- 在
中确保有:<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> - 给表格区域加防手势捕获:
table .layui-table-body, table .layui-table-header { -webkit-user-select: none; user-select: none; } - 不要指望 JS 拦截
mousedown坐标来禁用右下角——Safari 的手势不走这个事件流 - 真要强控尺寸,配合
min-height: 80px和max-height: 120px,再设overflow-y: auto,让内容滚动而非容器拉伸
为什么禁用 resize 后表格布局还是错乱
禁拖拽只是去掉了右下角小方块,但没解决高度适配问题。用户输入换行、粘贴大段文字后,textarea 内容溢出,若没配好 overflow 和 height,就会出现滚动条遮挡文字、行高被撑开、相邻单元格对不齐等情况。
-
height: 80px是初始高度,不是最大高度;想限制最大展开范围,得加max-height: 120px+overflow-y: auto - 表格行高由
line-height和内容高度共同决定,textarea的padding和border会额外增加空间,统一用box-sizing: border-box - 双击编辑后,记得在
done回调里给新插入的textarea手动.focus(),否则用户还得点第二下才能输 - 如果列启用了
fixed,禁用 resize 后可能出现表头/表体列宽不一致,此时应去掉所有列的width配置,让 Layui 自动均分
resize: none,而是得确认它作用在哪个节点、有没有被覆盖、overflow 是否同步生效、以及禁用之后内容溢出怎么收口——这些细节不补全,禁拖拽就只是把问题从“能拖”变成了“拖不了但更难看”。











