vTyping
vTyping
指令用于创建打字机效果,使文本内容逐字显示,就像正在被输入一样。
基础用法
世界上有太多孤独的人,害怕先踏出第一步。———《绿皮书》
使用 v-typing
指令可以为任何包含文本的元素添加打字效果。
代码
世界上有太多孤独的人,害怕先踏出第一步。———《绿皮书》
进阶用法
这是一个展示 v-typing 进阶用法的示例。当打字开始、进行中和结束时,会触发相应的回调函数。
这是一个带有主题色背景的打字效果展示。
console.log('这是一个代码风格的打字效果展示');
代码
vue
<template>
<div class="typing-demo">
<div class="demo-container">
<div
v-typing="{
speed: 100,
onStart: handleStart,
onTyping: handleTyping,
onFinish: handleFinish
}"
class="typing-text"
>
这是一个展示 v-typing 进阶用法的示例。当打字开始、进行中和结束时,会触发相应的回调函数。
</div>
<div
v-typing="{
speed: 150
}"
class="typing-text typing-text-primary"
>
这是一个带有主题色背景的打字效果展示。
</div>
<div
v-typing="{
speed: 80
}"
class="typing-text typing-text-code"
>
console.log('这是一个代码风格的打字效果展示');
</div>
</div>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { vTyping } from '@cp-vuedir/core'
import { Message } from '@arco-design/web-vue'
function handleStart() {
Message.info('打字效果开始')
}
function handleTyping(text, percent) {
const progress = Math.floor(percent)
if (progress % 25 === 0) {
Message.info(`打字进度: ${progress}%`)
}
}
function handleFinish() {
Message.success('打字效果完成')
}
</script>
<style scoped>
.typing-demo {
margin: 20px 0;
}
.demo-container {
border: 1px solid #ddd;
border-radius: 8px;
padding: 20px;
background-color: #f9f9f9;
display: flex;
flex-direction: column;
gap: 20px;
}
.typing-text {
min-height: 60px;
padding: 15px;
border-radius: 6px;
background-color: #fff;
border: 1px solid #eee;
line-height: 1.6;
transition: all 0.3s ease;
}
.typing-text:hover {
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
transform: translateY(-2px);
}
.typing-text-primary {
background-color: var(--vp-c-brand-light);
color: white;
border: none;
}
.typing-text-code {
background-color: #282c34;
color: #abb2bf;
font-family: 'Fira Code', monospace;
border: none;
padding: 20px;
position: relative;
}
.typing-text-code::after {
content: '';
display: inline-block;
width: 2px;
height: 1.2em;
background-color: #bdbdbd;
margin-left: 2px;
vertical-align: middle;
animation: blink 1s step-end infinite;
}
.typing-text-code:hover {
background-color: #2c313c;
}
@keyframes blink {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0;
}
}
@media (max-width: 640px) {
.demo-container {
padding: 10px;
}
.typing-text {
padding: 10px;
min-height: 50px;
}
}
</style>
配置选项
属性名 | 说明 | 类型 | 是否必选 | 默认值 |
---|---|---|---|---|
speed | 打字速度,单位为毫秒/字符 | number | 100 | |
onStart | 打字开始时的回调函数 | function | () => {} | |
onTyping | 打字过程中的回调函数,参数为当前文本和进度百分比 | function | (text, percent) => {} | |
onFinish | 打字结束时的回调函数 | function | () => {} |
注意事项
- 确保目标元素包含初始文本内容
- 打字过程中避免直接修改元素文本
- 指令会自动清理相关定时器
- 通过 speed 参数可以实现暂停/继续效果