Brief-by-Brief text Aussehen, die animation mit CSS
Ich habe eine <div>
mit text.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ich würde gerne den text in diesem <div>
erscheint auf der Seite ein Zeichen zu einem Zeitpunkt:
L Lo Lor ... und so weiter, bis der gesamte text sichtbar ist
Akzeptable alternative: machen, dass ein Wort in einer Zeit, vermeiden Sie Probleme mit HTML-entities und jumpy Worte, durch weiche Silbentrennung.
Wenn der Benutzer klickt auf den <div>
sollte es Abbrechen, die animation und die Anzeige der vollständige text sofort.
Kurz: ich möchte, zu imitieren, eine animation, die Häufig in der japanischen-Stil-adventure-Spiele. (Ich denke, dass dies wird manchmal als eine Schreibmaschine oder teletype-Effekt.) Hier ist ein gutes Beispiel:
http://www.youtube.com/watch?feature=player_detailpage&v=SasgN0lim7M#t=418
Natürlich kann ich ein Skript für die animation mit JavaScript — nur einen timer einrichten und anfügen von Buchstaben (oder Worte) one-by-one.
Aber ist es möglich, das zu tun, was ich brauche mit CSS in den modernen Browsern? (Natürlich bräuchte ich mindestens ändern-element-Klasse in der onclick
mit JS, aber das ist OK.)
Update: Zu klären, auf Zeichen vs. Buchstaben und Probleme mit HTML-entities:
Mein text ist übersät mit HTML:
Lo­rem <i>ip­sum</i>.
Naive Ansatz mit dem anfügen von text an das innerHTML
Charakter-by-Charakter nicht funktionieren würde:
L Lo Lo& ...Doh!
Gut, eine Sache ist, der browser weiß besser über das, was ein Brief ist und was nicht als JS-code würde ich schreiben.
Tun Sie einfach jeden Charakter eher als einen Brief, ich denke, das ist eine normale Erfahrung
Nein, ein character-by-character-animation ist nicht möglich, mit CSS. Sie können nur animieren das umschließende Rechteck des Textes zu wachsen, aber das nicht mit einer Schreibmaschinen Effekt.
Wenn Sie wollen, dass es geschieht über css dann warum Sie tagged javascript?
InformationsquelleAutor Alexander Gladysh | 2013-11-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider kann man nicht das auch mit CSS machen, so haben Sie, um wieder zu einer reinen JS-Ansatz.
Ihre Kommentare erklärt haben, Sie verlangen, dass Ihr text enthalten einige HTML-markup so würde ich vorschlagen, eine Wort-für-Wort-animation wird der einfachste Weg, damit umzugehen. So etwas wie dieses:
Hier ist ein funktionierendes Beispiel
HINWEIS: Dieser code kann wahrscheinlich erheblich re-einkalkuliert werden effizienter und prägnant, aber es soll zeigen, das Konzept in vollem Umfang.
Ich auch erstellt einen letter-by-letter Beispiel. Obwohl es nicht die Unterstützung, die Sie html-markup muss, es sieht schöner, also vielleicht können Sie es anpassen, um die Arbeit für Sie.
InformationsquelleAutor musefan
Können Sie erreichen dies mit ein bisschen jQuery.
Check out my fiddle: http://jsfiddle.net/kA8G8/7/
HTML
JS
InformationsquelleAutor Charles Ingalls
Es ist eine Reine CSS-trick, dies zu tun.
Verwenden Sie eine Maske-element, noch ein pseudo-element
p:before
oderp:after
mit einem höheren z-index als deine text-element. Geben Sie die gleiche Farbe wie der text, der hintergrund und die Höhe einer Zeile. Legen Sie Sie mit der absoluten position nur über dem text.Dann haben Sie nur animieren es zu machen, bewegen Sie es nach rechts, entlarvenden Brief.
Es ist nur ein workaround, denn wenn Sie haben einen komplexen hintergrund unter dem text, wie ein Bild, dann wird dieser trick ist schwer zu reproduzieren, da haben Sie, um die Karte hintergrund-Bild auf der Maskierung element.
InformationsquelleAutor user2451013