当前位置:首页 > JavaScript

js实现写字

2026-01-31 21:24:21JavaScript

使用 Canvas 实现写字效果

通过 HTML5 的 Canvas API 可以动态绘制文字,结合动画效果模拟手写过程。

const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const text = "Hello World";
let index = 0;

function draw() {
    ctx.clearRect(0, 0, canvas.width, canvas.height);
    ctx.font = "30px Arial";
    ctx.fillText(text.substring(0, index), 10, 50);

    if(index < text.length) {
        index++;
        setTimeout(draw, 100);
    }
}

draw();

使用 SVG 动画写字

SVG 的路径动画可以更精确地模拟手写笔画效果。

js实现写字

<svg width="400" height="100">
  <path id="path" d="" fill="none" stroke="black" stroke-width="2"/>
</svg>

<script>
const text = "Hello";
const path = document.getElementById('path');
const length = text.length * 20; // 估算路径长度

path.setAttribute('stroke-dasharray', length);
path.setAttribute('stroke-dashoffset', length);

const animate = () => {
    path.style.strokeDashoffset = '0';
    path.style.transition = 'stroke-dashoffset 2s ease-in-out';
};

setTimeout(animate, 500);
</script>

使用 CSS 动画模拟打字

纯 CSS 方案通过控制文字显示范围和动画时间实现打字效果。

js实现写字

<style>
.typewriter {
    overflow: hidden;
    border-right: 3px solid #000;
    white-space: nowrap;
    animation: typing 3s steps(30, end), blink-caret 0.5s step-end infinite;
}

@keyframes typing {
    from { width: 0 }
    to { width: 100% }
}

@keyframes blink-caret {
    from, to { border-color: transparent }
    50% { border-color: #000 }
}
</style>

<div class="typewriter">This text will appear typed.</div>

使用第三方库实现

现成的 JavaScript 库如 TypeIt 或 Typed.js 提供更丰富的写字动画功能。

// 使用 Typed.js
new Typed('#element', {
    strings: ["First sentence.", "Second sentence."],
    typeSpeed: 30,
    backSpeed: 20,
    loop: true
});

逐笔划绘制汉字

对于复杂汉字,可以分解为 SVG 路径逐笔绘制。

// 示例:使用 hanzi-writer 库
HanziWriter.create('target', '汉', {
    width: 300,
    height: 300,
    showOutline: true,
    strokeAnimationSpeed: 2
}).animate();

标签: js
分享给朋友:

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现百叶窗

js实现百叶窗

使用CSS和JavaScript实现百叶窗效果 通过CSS动画和JavaScript事件监听可以实现百叶窗效果。核心思路是将内容区域分割为多个条状元素,通过控制它们的展开/折叠状态来模拟百叶窗。 &…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…