vue-hangul-typing
v1.0.2
Published
A Vue.js component that provides a typing effect for Hangul.
Downloads
7
Maintainers
Readme
Hangul Typing Component
https://github.com/user-attachments/assets/31338d1b-fcae-4be1-996a-9043d6d2a3f4
한글 자음 모음 결합에 타이핑 효과를 제공하는 Vue.js 컴포넌트로, 커스터마이징 가능한 타이핑 속도, 사람처럼 보이는 타이핑 간격, 텍스트 추가, 애니메이션 반복, 사용자 정의 스타일 및 클래스를 지원합니다.
특징
- 커스터마이징 가능한 타이핑 속도 및 간격
- 사람처럼 보이는 타이핑 효과
- 애니메이션 반복
- 사용자 정의 스타일 및 클래스 적용
- 백스페이스 및 줄바꿈("\b", "\n") 지원
- 타이핑 종료 후 커서 유지 옵션
설치
컴포넌트를 설치하려면 npm을 사용할 수 있습니다.
npm i vue-hangul-typing
Props
|Prop|Type|Default|Description| |---|---|---|---| |text|String|null|표시할 텍스트입니다. 제공되지 않으면 지정된 선택기의 텍스트를 사용합니다.| |intervalType|Number|120|각 문자를 타이핑하는 간격입니다. |humanize|Number⎪Function|null|간격을 랜덤화하여 사람처럼 보이도록 합니다. Number가 제공되면 0부터 해당 숫자 사이의 랜덤 값을 간격에 추가합니다. Function이 제공되면 기본 간격을 인수로 받고 새로운 간격을 반환해야 합니다. |selector|String|null|텍스트 내용을 사용할 요소를 선택하는 CSS 선택기입니다. |customClass|String|""|타이핑 요소에 적용할 사용자 정의 클래스입니다. |customStyle|Object|{}|타이핑 요소에 적용할 사용자 정의 스타일입니다. |showCursor|Boolean|false|타이핑 동안 커서를 표시할지 여부를 설정합니다. |cursorAfterTyping|Boolean|false|타이핑 종료 후 커서를 유지할지 여부를 설정합니다. |repeat|Boolean|false|타이핑 애니메이션을 반복할지 여부를 설정합니다.
Events
이 컴포넌트는 타이핑 상태와 관련된 몇 가지 이벤트를 제공합니다. 이 이벤트들은 컴포넌트 외부에서 타이핑 과정에 반응하기 위해 사용할 수 있습니다.
|Events|Description| |---|---| |typing-start| 타이핑이 시작될 때 발생합니다.| |typing-end| 타이핑이 완료될 때 발생합니다.|
이벤트는 다음과 같이 사용할 수 있습니다.
<template>
<div class="example-container">
<h2>Typing Effect with Time Tracking</h2>
<div class="typing-box">
<HangulTyping
text="이 예제는 타이핑 소요 시간을 계산합니다."
:showCursor="true"
@typing-end="handleTypingEnd"
@typing-start="handleTypingStart"
/>
</div>
<p class="computed-time" v-if="typingCompleted">
타이핑 완료: {{ typingTime }}초 소요되었습니다!
</p>
</div>
</template>
<script setup lang="ts">
import { ref } from "vue";
import HangulTyping from 'vue-hangul-typing';
const typingCompleted = ref(false);
const typingTime = ref(0);
let startTime = 0;
const handleTypingStart = () => {
console.log("타이핑 시작됨"); // 디버깅을 위한 로그 출력
startTime = Date.now();
typingCompleted.value = false;
};
const handleTypingEnd = () => {
console.log("타이핑 종료됨"); // 디버깅을 위한 로그 출력
if (startTime === 0) {
console.error("타이핑이 시작되지 않았습니다.");
return;
}
const endTime = Date.now();
typingTime.value = parseFloat(((endTime - startTime) / 1000).toFixed(2));
typingCompleted.value = true;
startTime = 0; // reset
};
</script>
Usage
프로젝트에서 컴포넌트를 import하여 사용합니다.
기본 사용법
<template>
<div class="example-container">
<h2>Basic Typing Effect</h2>
<div class="typing-box">
<HangulTyping
text="안녕하세요.\n기본 예제입니다."
/>
</div>
</div>
</template>
타이핑 효과 중간에 일시정지 및 재개
<template>
<div class="example-container">
<h2>Typing Effect with Pause and Resume</h2>
<div class="typing-box">
<HangulTyping
ref="HangulTyping"
text="타이핑 효과를 일시정지하고 다시 시작합니다."
:intervalType="50"
:humanize="20"
:showCursor="true"
/>
</div>
<div class="button-group">
<button @click="pauseTyping">Pause</button>
<button @click="resumeTyping">Resume</button>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from "vue";
import HangulTyping from 'vue-hangul-typing';
const pauseTyping = () => {
HangulTyping.value.pauseTyping();
};
const resumeTyping = () => {
HangulTyping.value.resumeTyping();
};
</script>
컴포넌트 외부의 특정 요소에서 텍스트를 선택하여 타이핑 효과를 적용
<template>
<div class="example-container">
<h2>Typing Effect with Selector</h2>
<div class="source-text" id="source-text">
이 텍스트는 외부 요소에서 가져와 타이핑 됩니다.
</div>
<div class="typing-box">
<HangulTyping
selector="#source-text"
:intervalType="100"
:showCursor="true"
:cursorAfterTyping="true"
/>
</div>
</div>
</template>
Contributing
이 프로젝트에 기여하고 싶다면, GitHub 저장소에서 issue나 pull request를 제출해주세요.
License
This project is licensed under the MIT License.