Ich möchte, dass dieses Wort mit einer Animation gezeichnet wird, sodass die Seite das Wort auf die gleiche Weise "schreibt", wie wir es tun würden
Canvas-Version
Dadurch werden einzelne Zeichen eher so gezeichnet, als würde man von Hand schreiben. Es wird ein langes Strichmuster verwendet, bei dem die Ein / Aus-Reihenfolge im Laufe der Zeit pro Zeichen vertauscht wird. Es hat auch einen Geschwindigkeitsparameter.
Beispielanimation (siehe Demo unten)
Um den Realismus und das organische Gefühl zu erhöhen, habe ich zufällige Buchstabenabstände, einen y-Delta-Versatz, Transparenz, eine sehr subtile Drehung und schließlich eine bereits "handgeschriebene" Schriftart hinzugefügt. Diese können als dynamische Parameter zusammengefasst werden, um eine breite Palette von "Schreibstilen" bereitzustellen.
Für ein noch realistischeres Aussehen wären die Pfaddaten erforderlich, die nicht standardmäßig vorhanden sind. Dies ist jedoch ein kurzer und effizienter Code, der sich dem handgeschriebenen Verhalten annähert und einfach zu implementieren ist.
Wie es funktioniert
Durch Definieren eines Strichmusters können wir marschierende Ameisen, gepunktete Linien usw. erstellen. Wenn Sie dies ausnutzen, indem Sie einen sehr langen Punkt für den "Aus" -Punkt definieren und den "Ein" -Punkt schrittweise erhöhen, entsteht die Illusion, die Linie beim Streichen zu zeichnen, während Sie die Punktlänge animieren.
Da der Off-Punkt so lang ist, ist das sich wiederholende Muster nicht sichtbar (die Länge hängt von der Größe und den Eigenschaften der verwendeten Schrift ab). Der Pfad des Buchstabens hat eine Länge, daher müssen wir sicherstellen, dass jeder Punkt mindestens diese Länge abdeckt.
Bei Buchstaben, die aus mehr als einem Pfad bestehen (z. B. O, R, P usw.), wie einer für den Umriss, einer für den hohlen Teil, scheinen die Linien gleichzeitig gezeichnet zu sein. Wir können mit dieser Technik nicht viel dagegen tun, da der Zugriff auf jedes Pfadsegment separat ausgeführt werden müsste.
Kompatibilität
Für Browser, die das Canvas-Element nicht unterstützen, kann eine alternative Möglichkeit zum Anzeigen des Texts zwischen den Tags platziert werden, z. B. ein gestalteter Text:
<canvas ...>
<div class="txtStyle">STROKE-ON CANVAS</div>
</canvas>
Demo
Dies erzeugt das animierte Live-Stroke-On ( keine Abhängigkeiten ) -
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>