Skip to content

Textarea 文本域 ​

新粗野主义风格多行文本输入框,支持变体、尺寸和 v-model。

预览 ​

Preview

变体

尺寸

状态

v-model 绑定

值:

安装 ​

pnpm dlx brutx-vue@latest add textarea

用法 ​

vue
<script setup>
import { ref } from 'vue'
import { Textarea } from 'brutx-ui-vue'

const message = ref('')
</script>

<template>
    <Textarea v-model="message" placeholder="Type your message here..." />
</template>

带标签 ​

vue
<script setup>
import { ref } from 'vue'
import { Textarea, Label } from 'brutx-ui-vue'

const bio = ref('')
</script>

<template>
    <div class="space-y-2">
        <Label for="bio">Bio</Label>
        <Textarea id="bio" v-model="bio" placeholder="Tell us about yourself..." />
    </div>
</template>

禁用状态 ​

vue
<script setup>
import { Textarea } from 'brutx-ui-vue'
</script>

<template>
    <Textarea disabled placeholder="Disabled textarea" />
</template>

只读状态 ​

通过 readonly 属性设置只读文本域。只读状态下文本域不可编辑但可聚焦选择文本,光标样式为 cursor-default,不会降低透明度(区别于 disabled)。

vue
<script setup>
import { ref } from 'vue'
import { Textarea } from 'brutx-ui-vue'

const content = ref('这是一段只读内容,用户可以选中和复制文本,但无法修改。适用于展示协议条款、历史记录等场景。')
</script>

<template>
    <Textarea v-model="content" readonly />
</template>

错误消息 ​

通过 variant="error" 和 errorMessage 属性显示错误消息。错误消息使用 role="alert" 确保屏幕阅读器自动播报。

vue
<script setup>
import { ref } from 'vue'
import { Textarea } from 'brutx-ui-vue'

const message = ref('')
</script>

<template>
    <Textarea
        v-model="message"
        variant="error"
        error-message="消息内容不能为空"
        placeholder="请输入消息..."
    />
</template>

变体 ​

变体说明
default标准边框
error危险色边框,主色聚焦阴影
success成功色边框,辅助色聚焦阴影

通过 variant 属性设置不同的边框样式:

vue
<template>
    <Textarea variant="default" placeholder="Default variant" />
    <Textarea variant="error" placeholder="Error variant" />
    <Textarea variant="success" placeholder="Success variant" />
</template>

尺寸 ​

尺寸内边距字体大小
smpx-3 py-2text-sm
defaultpx-4 py-3text-base
lgpx-5 py-4text-lg

通过 size 属性设置不同的尺寸:

vue
<template>
    <Textarea size="sm" placeholder="Small size" />
    <Textarea size="default" placeholder="Default size" />
    <Textarea size="lg" placeholder="Large size" />
</template>

程序化控制 ​

通过 ref 访问组件实例后可调用以下方法:

vue
<script setup>
import { ref } from 'vue'
import { Textarea } from 'brutx-ui-vue'

const textareaRef = ref(null)

function handleFocus() {
    textareaRef.value?.focus()
}
</script>

<template>
    <Textarea ref="textareaRef" placeholder="Click button to focus" />
    <button @click="handleFocus">Focus Textarea</button>
</template>

API 参考 ​

Textarea — 属性
名称类型默认值说明
modelValue
string | undefined
undefined
文本域的字符串值,通过 v-model 同步。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Textarea.vue:11

packages/ui/src/components/textarea/Textarea.vue

variant
"default" | "error" | "success" | undefined
"default"
文本域的边框和状态样式;error 配合非空 errorMessage 显示错误提示。
详情

声明类型

NonNullable<"default" | "success" | "error" | null | undefined> | undefined

字面量

  • "default"
  • "error"
  • "success"

默认值详情

解析值
"default"

来源

Textarea.vue:12

packages/ui/src/components/textarea/Textarea.vue

size
"default" | "lg" | "sm" | undefined
"default"
文本域的尺寸变体,控制高度、内边距和文字大小。
详情

声明类型

NonNullable<"default" | "lg" | "sm" | null | undefined> | undefined

字面量

  • "default"
  • "lg"
  • "sm"

默认值详情

解析值
"default"

来源

Textarea.vue:13

packages/ui/src/components/textarea/Textarea.vue

resize
"both" | "horizontal" | "none" | "vertical" | undefined
"none"
浏览器允许用户拖动调整文本域尺寸的方向。
详情

声明类型

NonNullable<"vertical" | "horizontal" | "none" | "both" | null | undefined> | undefined

字面量

  • "both"
  • "horizontal"
  • "none"
  • "vertical"

默认值详情

解析值
"none"

来源

Textarea.vue:14

packages/ui/src/components/textarea/Textarea.vue

disabled
boolean | undefined
false
禁用原生文本域,阻止聚焦和编辑。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

Textarea.vue:15

packages/ui/src/components/textarea/Textarea.vue

readonly
boolean | undefined
false
保留聚焦、文本选择与复制能力,同时阻止用户编辑。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
false

来源

Textarea.vue:16

packages/ui/src/components/textarea/Textarea.vue

placeholder
string | undefined
undefined

运行时回退:未提供时使用 textarea.placeholder 语言文案。

文本域为空时显示的提示文本。
详情

声明类型

string | undefined

默认值详情

解析值
undefined
运行时回退
未提供时使用 textarea.placeholder 语言文案。

组件在说明的运行条件下采用此回退值。

来源

Textarea.vue:17

packages/ui/src/components/textarea/Textarea.vue

errorMessage
string | undefined
undefined
variant 为 error 且文本非空时,在文本域下方通过 role="alert" 显示的错误消息。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Textarea.vue:19

packages/ui/src/components/textarea/Textarea.vue

ariaLabel
string | undefined
undefined
传给原生文本域的无障碍名称。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Textarea.vue:21

packages/ui/src/components/textarea/Textarea.vue

ariaLabelledby
string | undefined
undefined
为原生文本域提供标签的元素 ID。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Textarea.vue:23

packages/ui/src/components/textarea/Textarea.vue

ariaDescribedby
string | undefined
undefined
描述元素的 ID;未提供且显示错误提示时自动关联错误消息。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Textarea.vue:25

packages/ui/src/components/textarea/Textarea.vue

ariaInvalid
boolean | undefined
undefined
显式设置无效状态;未提供且显示错误提示时为真。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
undefined

来源

Textarea.vue:27

packages/ui/src/components/textarea/Textarea.vue

ariaErrormessage
string | undefined
undefined
错误消息元素的 ID,同时用作内置错误消息的 ID;未提供时内置消息使用自动生成的 ID。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Textarea.vue:29

packages/ui/src/components/textarea/Textarea.vue

ariaRequired
boolean | undefined
undefined
向辅助技术声明文本域的必填状态。
详情

声明类型

boolean | undefined

字面量

  • false
  • true

默认值详情

解析值
undefined

来源

Textarea.vue:31

packages/ui/src/components/textarea/Textarea.vue

class
string | undefined
undefined
合并到原生 textarea 元素的自定义 CSS 类。
详情

声明类型

string | undefined

默认值详情

解析值
undefined

来源

Textarea.vue:32

packages/ui/src/components/textarea/Textarea.vue

Textarea — 事件
名称签名或类型说明
@update:modelValue
[value: string]
用户输入时发出新的字符串值;输入法组合期间不发出中间值,组合结束时提交最终值。
详情

声明类型

[value: string]

来源

Textarea.vue

packages/ui/src/components/textarea/Textarea.vue

Textarea — 暴露成员
名称签名或类型说明
focus
() => void | undefined
将焦点移到原生文本域。
详情

声明类型

() => void | undefined

来源

Textarea.vue:84

packages/ui/src/components/textarea/Textarea.vue

blur
() => void | undefined
从原生文本域移除焦点。
详情

声明类型

() => void | undefined

来源

Textarea.vue:85

packages/ui/src/components/textarea/Textarea.vue

select
() => void | undefined
选中原生文本域中的文本。
详情

声明类型

() => void | undefined

来源

Textarea.vue:86

packages/ui/src/components/textarea/Textarea.vue

ref
Ref<HTMLTextAreaElement | null, HTMLTextAreaElement | null>
内部原生文本域引用;Vue 会在公开组件实例上解包顶层 Ref,可通过实例的 ref 读取 HTMLTextAreaElement。
详情

声明类型

Ref<HTMLTextAreaElement | null, HTMLTextAreaElement | null>

字面量

  • null

来源

Textarea.vue

packages/ui/src/components/textarea/Textarea.vue

可访问性 ​

  • ARIA 属性:支持 aria-label、aria-labelledby、aria-describedby、aria-invalid、aria-required 属性,便于辅助技术(如屏幕阅读器)正确朗读
vue
<script setup>
import { ref } from 'vue'
import { Textarea } from 'brutx-ui-vue'

const bio = ref('')
</script>

<template>
    <Textarea
        v-model="bio"
        aria-label="个人简介"
        aria-required="true"
        aria-invalid="false"
        placeholder="请输入个人简介..."
    />
</template>

样式定制 ​

Textarea 默认设置了 resize-none。如需允许调整大小,可通过自定义 class 覆盖:

vue
<script setup>
import { Textarea } from 'brutx-ui-vue'
</script>

<template>
    <Textarea class="resize-y" placeholder="Resizable textarea" />
</template>

蛮力铸就。