input type="text" 无法实现多行,因其在html规范中严格定义为单行元素,rows或cols属性被浏览器忽略;真正支持自然换行、保留换行符、可拖拽缩放的只有textarea。

为什么不能用 input type="text" 加 rows 实现多行?
根本不行——input 元素在 HTML 规范里就是单行的,加了 rows 或 cols 属性浏览器直接忽略。你看到的“换行”要么是错觉(比如 CSS 强行撑高但内容被裁剪),要么是用户按 Enter 后文本溢出滚动,实际还是单行流。真正能自然换行、保留 \n、支持拖拽缩放的,只有 textarea。
textarea 的 rows 和 cols 到底管什么?
它们只是初始尺寸提示,不是硬约束:
-
rows="4"表示大概显示 4 行文字高度,但字体大小、line-height、内边距都会影响真实高度 -
cols="50"按等宽字体估算宽度,实际输入超长行不会自动折行(除非wrap开启) - 用户仍可拖拽右下角调整大小,除非用 CSS 设
resize: none - 屏幕阅读器会读出“4 行文本框”,保留它对可访问性有帮助
怎么让换行符提交后不丢?关键看 wrap 属性
默认情况下,用户按 Enter 输入的换行符会保留在 .value 中,但视觉换行是否转成真实 \r\n 提交,取决于 wrap:
-
wrap="soft"(默认):显示时自动换行,提交值里只保留用户手动按 Enter 的\n,超长行不截断 -
wrap="hard":显示换行处,浏览器自动在提交值里插入\r\n,适合邮件正文等格式敏感场景 -
wrap="off":禁用自动换行(横向滚动),但用户 Enter 输入的换行依然存在并提交
别误以为 wrap="off" 能去掉所有换行——它只关掉软换行,手动换行照常生效。
使用 PptxGenJS 和 Python 解析,将结构化的 HTML/CSS 幻灯片内容转换为原生、可编辑的 PowerPoint(.pptx)演示文稿。
placeholder 为啥不换行?得靠 CSS 强制
placeholder 属性值里的 \n 在 HTML 解析阶段就被忽略,所以写成:
<textarea placeholder="第一行\n第二行"></textarea>
完全无效。真要多行提示,必须用 CSS:
textarea::placeholder { white-space: pre-line; }
或者更稳妥地,把提示文字拆成多个 <br> 并用 JS 动态注入——但注意:这会让 placeholder 失去原生语义和可访问性支持,慎用。
最省事也最可靠的做法:别在 placeholder 里塞换行,用简洁单行文案,比如“请输入反馈(支持换行)”。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










