Skip to content

CyberInput 输入框

赛博朋克风格的输入框组件,支持多种主题配色、尺寸、清除按钮、密码可见切换、前后缀插槽以及故障特效。

基础用法

vue
<template>
  <cyber-input v-model="value" placeholder="请输入内容"></cyber-input>
</template>

<script setup>
import { ref } from 'vue'
const value = ref('')
</script>

可清除

设置 clearable 后,输入框有内容时会显示清除按钮。

vue
<cyber-input v-model="value" placeholder="输入内容" clearable></cyber-input>

密码输入

type="password" 配合 show-password 可显示密码可见切换按钮。

vue
<cyber-input v-model="pw" type="password" placeholder="请输入密码" show-password></cyber-input>

不同主题

支持 5 种赛博朋克主题配色:primarysuccesswarningdangerinfo

vue
<template>
  <cyber-input theme="primary" placeholder="Primary"></cyber-input>
  <cyber-input theme="success" placeholder="Success"></cyber-input>
  <cyber-input theme="warning" placeholder="Warning"></cyber-input>
  <cyber-input theme="danger" placeholder="Danger"></cyber-input>
  <cyber-input theme="info" placeholder="Info"></cyber-input>
</template>

不同尺寸

提供 largedefaultsmall 三种尺寸。

vue
<cyber-input size="large" placeholder="大尺寸"></cyber-input>
<cyber-input size="default" placeholder="默认尺寸"></cyber-input>
<cyber-input size="small" placeholder="小尺寸"></cyber-input>

前缀 / 后缀插槽

使用 #prefix#suffix 插槽在输入框前后插入图标或文字。

🔍
@cyber.io
vue
<cyber-input v-model="value" placeholder="搜索">
  <template #prefix>🔍</template>
</cyber-input>

<cyber-input v-model="value" placeholder="域名">
  <template #suffix>@cyber.io</template>
</cyber-input>

禁用与只读

vue
<cyber-input disabled placeholder="禁用状态"></cyber-input>
<cyber-input readonly model-value="只读内容"></cyber-input>

输入类型

支持 HTML 标准输入类型:textpasswordnumberemailtelurlsearch

vue
<cyber-input type="email" placeholder="邮箱地址"></cyber-input>
<cyber-input type="number" placeholder="数字输入"></cyber-input>
<cyber-input type="tel" placeholder="电话号码"></cyber-input>

最大长度限制

vue
<cyber-input :maxlength="10" placeholder="最多10个字符"></cyber-input>

特效控制

可通过 glitch-effectscanline-effect 属性控制故障特效和扫描线特效的开关。

vue
<!-- 关闭故障特效 -->
<cyber-input :glitch-effect="false" placeholder="无故障特效"></cyber-input>

<!-- 关闭扫描线 -->
<cyber-input :scanline-effect="false" placeholder="无扫描线"></cyber-input>

<!-- 关闭全部特效 -->
<cyber-input :glitch-effect="false" :scanline-effect="false" placeholder="纯净模式"></cyber-input>

API

Props

参数说明类型可选值默认值
modelValue / v-model绑定值string | number''
type输入框类型stringtext / password / number / email / tel / url / searchtext
placeholder占位文本string'请输入...'
disabled是否禁用booleanfalse
readonly是否只读booleanfalse
maxlength最大输入长度string | number
autocomplete自动完成stringon / offoff
name原生 name 属性string
size尺寸stringlarge / default / smalldefault
theme主题配色stringprimary / success / warning / danger / infoprimary
glitchEffect故障特效booleantrue
scanlineEffect扫描线特效booleantrue
clearable可清除按钮booleanfalse
showPassword密码可见切换booleanfalse

Events

事件名说明回调参数
update:modelValue绑定值变化时触发(value: string | number)
input输入时实时触发(value: string)
change值改变且失焦时触发(value: string | number)
focus获取焦点时触发(event: FocusEvent)
blur失去焦点时触发(event: FocusEvent)
keyup键盘抬起时触发(event: KeyboardEvent)
keydown键盘按下时触发(event: KeyboardEvent)
clear点击清除按钮时触发

Slots

插槽名说明
default默认插槽(无实际用途)
prefix输入框前缀内容,通常放置图标
suffix输入框后缀内容,通常放置文字或图标

Methods

通过 ref 调用组件实例方法:

方法名说明参数
focus()获取焦点
blur()失去焦点
select()选中输入框文本
clear()清空输入并触发 change

示例代码

完整演示示例见:test/src/conponents/input.vue

Relcased under the Mit Lincense.