textarea在表格中垂直对齐失效是因基线不一致,应改用flex布局:td设display: flex; align-items: center;,textarea设margin: 0; height: auto; min-height: 80px;,并统一box-sizing和padding。

textarea 在表格中垂直对齐失效的典型表现
把 <textarea></textarea> 直接塞进 <td>,文字看起来“悬在半空”或“贴着底部”,和旁边的 <code><input>、<label></label> 完全不在一条线上。这不是 bug,是 <textarea></textarea> 默认按第一行文本基线(baseline)对齐,而 <input> 按内部可编辑区域基线算,<label></label> 又按普通内联文本基线——三者基准不一致,视觉上必然错位。
用 flex 替代 vertical-align 才真正可控
vertical-align 在表格单元格里行为不可靠,尤其当 <td> 内容高度不均时,它只作用于行内盒,且受父级 <code>line-height 干扰严重。真正稳的解法是让 <td> 自己变成 flex 容器:
<ul><li>给 <code><td> 加 <code>display: flex; align-items: center;,强制内容垂直居中
<textarea></textarea> 必须设 margin: 0; height: auto; min-height: 80px;,避免默认高度挤压或撑开box-sizing: border-box; 和 padding: 0.375rem 0.75rem;
valign 属性和 vertical-align 声明——它们在 flex 容器里无效,还可能触发意外重排多行输入的宽度、换行与响应式控制
<textarea></textarea> 在表格里容易被压缩变形,尤其小屏下。关键不是调 cols 或硬写 width,而是用 CSS 约束其行为:
- 设
width: 100%; max-width: none;,让它填满<td> 但不受父容器最大宽限制 <li>加 <code>resize: vertical;禁用水平拉伸,防止用户拖宽破坏表格布局 - 用
white-space: pre-wrap;和word-break: break-word;确保粘连长文本(如 URL、日志)能正常折行 - 移动端需额外加
min-width: 200px;防止被缩得太窄,同时配合@media (max-width: 480px)把<td> 设为 <code>flex-direction: column;,让 label 和 textarea 垂直堆叠表格语义不能丢,但结构要松耦合
用
<table> 包裹表单,本意是保持数据行列关系(比如配置项列表、参数对比表),不是为了栅格布局。所以别为了“对齐”强行合并单元格或嵌套 <code><div> —— 这会让屏幕阅读器困惑,也破坏语义。<p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p> <p>真正该做的:保留 <code><tr>/<code><td> 结构,但把样式控制权完全交给 CSS;<code><textarea></textarea>的rows属性只作初始行数提示,实际高度由min-height+height: auto动态撑开;所有间距用gap或padding控制,彻底抛弃cellpadding和cellspacing。



















