DEV Community

Cover image for A Multi-line CSS only Typewriter effect

A Multi-line CSS only Typewriter effect

Temani Afif on September 02, 2021

After the scalable one-line typewriter and the crazy "scrabble"-writer let's do another one: The multi-line typewriter. A CSS-only solution of cou...
Collapse
 
grahamthedev profile image
GrahamTheDev • Edited

Love this one, I can't spot it but on iPhone (again...damned apple) it only shows the first two lines and then stops? Is it the background clip not behaving itself?

I only think that as the cursor position works correctly, I could be wrong!

Collapse
 
afif profile image
Temani Afif

yes it's the background-clip:text working only for the first line of the span. Safari and IOS have a lot of issues with background-clip:text

Collapse
 
shyam3050 profile image
Shyam3050

so how can we do for safari and IOS.

Thread Thread
 
pheels profile image
Oliver McPheely

Did you ever find a fix for this? experiencing the same issue

Collapse
 
kayaks2fish profile image
kayaks2fish

This one's really helpful and I will surely try this, the explanation was also great.

Collapse
 
maenon profile image
Luca • Edited

Hey! This is great. I have been trying to implement it on text under a tag, but I am having some difficulties. That's the best I got: codepen.io/Luca-Marco-Pappalardo/p.... Basically the link text is not animated in sequence, the other best outcome I had was for the text to remain black and not be animated at all. Any idea on how ti fix this?

Collapse
 
santiagoesmeral profile image
Santiago Esmeral

Hi @afif , thank you very much for this guide. It was really useful!

I'm trying to implement a version of this in a personal project, and i needed a responsive, multi-line typewriter effect, and this fits very nicely.

However, i am having a bit of a problem. I am not sure if this is a bug or me not having understood your guide well enough, but when i try to do it the steps dont seem to match the characters. Characters get chopped up weirdly.

I made a sandbox with an example implementation of my code. I tried even hardcoding the text length, the time and the text to display and the bug is still there. Its more visible on longer texts.

If you could take a look at it and see if you can spot the bug, i would really appreciate it. n.n

here's the sandbox: codesandbox.io/s/buggy-typewriter-...

Collapse
 
afif profile image
Temani Afif

You are changing the animation, this won't work. Check my code to see the background-size definition I am using. It depends on the text length background-size:calc(var(--n)*1ch) 200%; You need to keep this. Same for the duration, it look like this: calc(var(--n)*.3s)

Collapse
 
santiagoesmeral profile image
Santiago Esmeral • Edited

Thanks for replying Afif!

I re-implemented the background and the calcs, but that was not the problem.

It turns out that the problem were my modification to the animations.

I wrote:
@keyframes typeText {
from {
background-size: 0 200%;
}
to {
background-size: 100% 200%;
}
}

and commenting out the to{} fixed it. I seem to have misunderstood what the animation does exactly.

additionally, another bug is that i was using japanese characters or emojis, which seem to not work very well with monospace fonts...

Anyways, thanks again for the typewriter effect! i love it

Collapse
 
jliter profile image
John Liter

So I messed around with your code as it would just print everything on a single line and not create a new line depending on the size of the window, so I added work-break: break-all to the bottom of the .type id and now it automatically prints to the next line regardless of window size. I hope this helps to improve upon your non-JS CSS typewriter creation

Collapse
 
bbln profile image
bbln

Respect!

Collapse
 
ribosomatic profile image
Jesus Liñan

Nice! Good job!

Collapse
 
guscarpim profile image
Gustavo Scarpim

Good, how do you link the posts?

Collapse
 
afif profile image
Temani Afif

by creating a serie. You can find this setting next to the publish button

Collapse
 
alvaromontoro profile image
Alvaro Montoro

Oooh! I need to make mine a series too... next one coming this evening.

Collapse
 
guscarpim profile image
Gustavo Scarpim

Nice, tks!

Collapse
 
alvaromontoro profile image
Alvaro Montoro

Nice. I really like this one and the whole explanation. A+.

Collapse
 
eronalves1996 profile image
EronAlves1996

This can be great if you use it with javascript to calculate the length of text and update the variable. The code can be simple.