怎样在HTML中显示多行文本框

说白了,textarea就是用来写多行文本的,简单粗暴。
其实很简单,就俩标签一包,但里面门道不少。

先说最重要的,cols和rows是控制大小的基础,去年我们跑那个项目,客户要求固定4 00px宽,直接写cols="4 00"就行,但行数要根据内容自适应,rows="5 "只是默认值。
另外一点,浏览器渲染是有延迟的,当你看到输入框突然出现滚动条的时候,其实DOM还没渲染完,用setTimeout+动态监听DOM变化能解决9 0%的问题。
还有个细节挺关键的,textarea的placeholder属性别忘了加,比如placeholder="请输入内容"——这个去年踩坑,光写cols rows直接傻等,发现用户连框在哪都不知道。
说实话挺坑的。

我一开始也以为固定rows就够了,后来发现不对,用户总得能继续写,行数得动态调整。
等等,还有个事,用行话说叫雪崩效应,其实就是前面一个小延迟把后面全拖垮了,比如你嵌套了太多JS操作textarea,直接卡死。
建议先写基础结构,再慢慢加交互。

试试把cols设成"9 9 9 ",看看效果有多爽?

如何用HTML创建一个多行文本框? textarea标签教程

说白了,创建HTML中的多行文本框,核心就是使用<textarea>标签。
其实很简单,它的语法结构是<textarea></textarea>,但为了增强功能,通常需要添加一些属性。

先说最重要的,name属性是必须的,因为它定义了文本框的名称,这样服务器在处理表单提交时才能通过这个名称获取数据。
去年我们跑的那个项目,因为遗漏了这个属性,导致提交的数据无法正确识别。

另外一点,rows和cols属性可以控制文本框的初始大小。
比如,rows="5 "表示初始显示5 行,cols="5 0"表示初始宽度大约为5 0个字符。
还有个细节挺关键的,placeholder属性提供了提示文本,帮助用户了解输入的目的。

我一开始以为<textarea>和<input type="text">没什么区别,后来发现不对。
其实,《textarea>专门用于多行文本输入,而<input type="text">只支持单行。
这个点很多人没注意,但它决定了你该在什么场景下使用哪个标签。

至于控制初始大小和调整行为,你可以通过HTML属性来设置,比如rows和cols,也可以通过CSS来调整,比如width和height。
如果你想禁止调整大小,可以在CSS中设置resize:none;。

等等,还有个事。
使用<textarea>时,要注意一些常见陷阱,比如遗漏name属性、未设置尺寸导致用户体验差等。
最佳实践是配对