Saya ingin kata ini dibuat dengan animasi, sehingga halaman "menulis" kata dengan cara yang sama seperti yang kita inginkan
Versi kanvas
Ini akan menarik karakter tunggal lebih seperti yang akan ditulis dengan tangan. Ini menggunakan pola dash panjang di mana pesanan on / off ditukar dari waktu ke waktu per karakter. Ini juga memiliki parameter kecepatan.
Contoh animasi (lihat demo di bawah)
Untuk meningkatkan realisme dan nuansa organik, saya menambahkan spasi huruf acak, offset y delta, transparansi, rotasi yang sangat halus dan akhirnya menggunakan font yang sudah "tulisan tangan". Ini dapat dibungkus sebagai parameter dinamis untuk menyediakan berbagai "gaya penulisan".
Untuk tampilan yang lebih realistis, data jalur akan diperlukan yang tidak secara default. Tetapi ini adalah potongan kode yang pendek dan efisien yang mendekati perilaku tulisan tangan, dan mudah diimplementasikan.
Bagaimana itu bekerja
Dengan mendefinisikan pola tanda hubung, kita dapat membuat semut berbaris, garis putus-putus, dan sebagainya. Mengambil keuntungan dari ini dengan mendefinisikan titik yang sangat panjang untuk titik "off" dan secara bertahap meningkatkan titik "on", itu akan memberikan ilusi menggambar garis ketika dibelai sambil menggerakkan panjang titik.
Karena titik mati begitu panjang, pola berulang tidak akan terlihat (panjangnya akan bervariasi dengan ukuran dan karakteristik jenis huruf yang digunakan). Jalur surat akan memiliki panjang sehingga kita perlu memastikan bahwa kita memiliki setiap titik setidaknya mencakup panjang ini.
Untuk huruf yang terdiri dari lebih dari satu jalur (mis. O, R, P dll.) Karena satu untuk garis besar, satu untuk bagian berongga, garis-garis akan tampak digambar secara bersamaan. Kami tidak bisa berbuat banyak tentang itu dengan teknik ini karena akan membutuhkan akses ke setiap segmen jalur untuk dibelai secara terpisah.
Kesesuaian
Untuk browser yang tidak mendukung elemen kanvas cara alternatif untuk menampilkan teks dapat ditempatkan di antara tag, misalnya teks gaya:
<canvas ...>
<div class="txtStyle">STROKE-ON CANVAS</div>
</canvas>
Demo
Ini menghasilkan animasi stroke-on langsung ( tidak ada ketergantungan ) -
var ctx = document.querySelector("canvas").getContext("2d"),
dashLen = 220, dashOffset = dashLen, speed = 5,
txt = "STROKE-ON CANVAS", x = 30, i = 0;
ctx.font = "50px Comic Sans MS, cursive, TSCu_Comic, sans-serif";
ctx.lineWidth = 5; ctx.lineJoin = "round"; ctx.globalAlpha = 2/3;
ctx.strokeStyle = ctx.fillStyle = "#1f2f90";
(function loop() {
ctx.clearRect(x, 0, 60, 150);
ctx.setLineDash([dashLen - dashOffset, dashOffset - speed]); // create a long dash mask
dashOffset -= speed; // reduce dash length
ctx.strokeText(txt[i], x, 90); // stroke letter
if (dashOffset > 0) requestAnimationFrame(loop); // animate
else {
ctx.fillText(txt[i], x, 90); // fill final letter
dashOffset = dashLen; // prep next char
x += ctx.measureText(txt[i++]).width + ctx.lineWidth * Math.random();
ctx.setTransform(1, 0, 0, 1, 0, 3 * Math.random()); // random y-delta
ctx.rotate(Math.random() * 0.005); // random rotation
if (i < txt.length) requestAnimationFrame(loop);
}
})();
canvas {background:url(http://i.imgur.com/5RIXWIE.png)}
<canvas width=630></canvas>