Skip to content

Textarea 多行文本输入框

多行文本输入框组件,用于接收多行文本输入。

注意:Textarea 组件只负责输入框本身,错误消息需要由使用者自行渲染,以获得最大的布局灵活性。

基础用法

v-model 绑定

自定义行数

设置 rows 属性控制默认显示行数。

自动高度

如需内容自适应高度,推荐使用 CSS field-sizing 属性(Chrome 123+ 支持):

兼容性提示:field-sizing 是较新的 CSS 属性,Chrome 123+、Edge 123+ 支持。如需兼容旧浏览器,请自行实现 JS 方案。

尺寸

错误状态

error 属性仅控制输入框的边框和聚焦环样式,不渲染错误消息。

错误消息(用户自行控制)

禁用与只读

控制拖拽行为

默认情况下,用户可以垂直拖拽调整大小。可通过 CSS 覆盖:

vue
<!-- 禁用拖拽 -->
<Textarea class="resize-none" />

<!-- 允许水平拖拽 -->
<Textarea class="resize-horizontal" />

<!-- 允许双向拖拽 -->
<Textarea class="resize-both" />
css
.resize-none {
  resize: none;
}
.resize-horizontal {
  resize: horizontal;
}
.resize-both {
  resize: both;
}

API

Props

属性类型默认值说明
modelValuestring''输入框的值(v-model)
placeholderstring''占位文本
disabledbooleanfalse是否禁用
readonlybooleanfalse是否只读
size'sm' | 'md' | 'lg''md'尺寸
rowsnumber3显示行数
errorbooleanfalse错误状态(仅控制样式)

Events

事件参数说明
update:modelValue(value: string)输入时触发(v-model)
input(event: Event)原生 input 事件
change(event: Event)原生 change 事件
focus(event: FocusEvent)获得焦点时触发
blur(event: FocusEvent)失去焦点时触发

注意事项

  • 文本域默认宽度 100%,填满父容器
  • 默认支持垂直方向调整大小(resize: vertical
  • error 属性仅控制样式,不渲染错误消息
  • 错误消息需要用户自行渲染,以获得最大的布局灵活性
  • 聚焦时显示主题色边框和聚焦环,错误状态下聚焦环变为错误色
  • 原生属性(idname 等)通过 v-bind="$attrs" 自动透传
  • 如需自动高度功能,推荐使用 CSS field-sizing: content

Released under the MIT License