textarea是替换元素,其行高需直接设在textarea上(如line-height: 1.5),外部td的line-height对其无效;整行高度应通过td的padding、min-height及display: flex统一控制。

text-area 在表格里不等于 td,别直接套用 line-height
HTML 表格中没有叫“文本域”的原生单元格类型——你实际要处理的是 常见错误是给 你真正需要的不是“文本域行高”,而是“含 React/Vue 列表中插入带
实际最稳的组合是: 元素被放在 里的情况。这时候行高问题本质是:** textarea 是替换元素,它的高度由自身 height 或 rows 控制,line-height 对它完全无效**。td 设 line-height: 24px,指望里面的 textarea 文字行距变大,结果毫无反应。因为 textarea 内部行高由其 font-size 和浏览器默认行框逻辑决定,外部 line-height 不穿透。
textarea 内部文字行距?必须直接设在 textarea 上:textarea { line-height: 1.5; font-size: 14px; }
line-height 只影响用户输入的多行文本显示(换行后各行间距),不影响整体控件高度textarea 的容器高度(即它在 td 里占多少空间)仍由 height、min-height、padding 和 td 的 vertical-align 共同决定textarea 被设了 rows="3",它的默认高度≈3行 × 行高 + 垂直内边距,但这个计算不可靠,建议显式设 height 或 min-height
textarea 放在 td 里时,怎么让整行视觉高度统一
textarea 的表格行看起来整齐”。这得拆成两层控制:
textarea 自身高度:用 min-height: 60px(比 rows 更可靠),配 box-sizing: border-box 防止 padding 溢出td 中的对齐:设 td { vertical-align: top; },避免默认 baseline 导致上下错位;如果想居中,用 display: flex; align-items: center; 替代老式 vertical-align
tr 设 height——Chrome 会忽略,Firefox 行为不一致;改用 td { padding: 12px 8px; } 提供基础留白td 和 textarea td,它们高度不一致,就统一用 min-height + padding + display: flex 对齐,而不是硬塞 height
为什么 textarea 的 rows 值经常不准
rows 属性只是个提示值,浏览器按当前字体、字号、行高、内边距估算高度,但不同 UA 渲染差异大。比如 rows="4" 在 Chrome 可能高 92px,在 Safari 可能只有 86px。
rows 下实际高度比思源黑体高 5–8pxfont-size: 14px 后,rows="4" 理论应≈4 × 14px × 1.4 ≈ 78px,但加上默认 padding: 2px 4px 和边框,最终常达 90px+rows,改用 min-height: 88px(预留 2px 容错),并加 resize: vertical 允许用户拉伸min-height: clamp(60px, 4rem, 100px),比媒体查询更简洁动态渲染时 textarea 行高跳变怎么防
textarea 的表格行,初始加载时高度忽高忽低,通常不是 CSS 问题,而是:
textarea 所在行初始高度按空内容计算,图片加载后重排textarea 父 td 设 min-height: 88px,同时加 font-display: swap 和图片 width/height 占位height——布局抖动明显;CSS 的 min-height + contain: layout 更轻量textarea { min-height: 88px; line-height: 1.5; font-size: 14px; box-sizing: border-box; padding: 8px 12px; } + td { padding: 0; vertical-align: top; }。复杂点在于:你得接受 textarea 是个独立盒子,不能靠 td 的 line-height “顺带”控制它。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











