DEV Community

Cover image for Netflix intro animation - Pure CSS
Claudio Bonfati
Claudio Bonfati

Posted on

182 54

Netflix intro animation - Pure CSS

Hey everyone,

Recently I've cloned the Netflix's intro animation using only CSS and I got some great feedback about it, so I thought it would be great to share a bit about the development process of the animation step-by-step.

So here we go!

HTML Structure

First I mapped the letters in Netflix's logo, and separated they so I could use it as a base reference for positioning the HTML elements later.

Netflix logo

In the HTML, I've created a container with 4 subdivs named helpers, each helper is designated to be a 'side' of the animated letter, for example, animating the N letter, 3 helpers are going to be used, because the N is divided in 3 individual parts, like this 👉 I\I

That being said, considering that in the container div we have an attribute named 'letter', I've used the image we export in the previous step, and it placed exactly where the helper divs should be for each value in the 'letter' attribute, wich supports all letters from the 'NETFLIX' name.

Separated letters from Netflix's logo

The Animation

Netflix intro

Now it's time to focus on the animation part. The animation is composed by three main steps, the first one is when the letter is fading each one of its sides, until it came to the second part, that is mainly composed by lots of vertical 'lights' with different widths and colors that emerge from the last side of the letter while it's also fading away. The third part is the camera movement applied while the lights are going away - but that is the easiest part.

The first part (fading away)

Fading away

The fading effect has a clear similarity to a paintbrush "unpainting" the letter. In order to clone this effect, we must acknowledge that a paintbrush doesn't have an uniform tip, some brush tips are made of nylon and polyester.
To do this, we have to build an 'irregular' gradient effect. Using photoshop I've made this brush effect:

Paintbrush gradient effect

Later I've created each little piece of the gradient into HTML helpers elements, this pieces was named as a 'fur', each one being a single 'span' tag. And, as it can be seen in the image, each fur has a different gradient effect, that was also replicated in the CSS file.

With this irregular gradient created, I made they move using simple CSS key-frame animation, each helper having its own delay setting to start one after another.

The second part (colorful lights)

Colorful lights from Netflix animation

The idea behind the lights is similar to the paintbrush. But, instead of each little piece being a fur with a gradiente background, each light has a random solid color as background and a box shadow for the illumination effect.

In order to make the lights "avoid the camera" while its getting closer, it was created a random movement with key-frame animation that make them move sideways, opening an empty gap in the middle of the lights.

The third part (camera movement)

Camera movement

The camera movement was replicated also using key-frame animation, but this time the css property manipulated was the scale of the main HTML container, so it looks like the camera is zooming in the letter while all the other animations are playing at the same time.

Conclusion

The hardest part was to conciliate all animations to be played at exactly the time they should be, so 'animation-delay' plays a big role in these scenarios. The approach I toke in the animations was to make sure that the animation could be played with a different background color and even with a different letter color, just changing the SASS variable and all the animation would still work as it should.
The code can still be optimised in many ways, so feel free to play with it if you like.

Thats all guys. I hope this post can help someone in some way. =)

Image of Docusign

Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (24)

Collapse
 
ben profile image
Ben Halpern •

Whoa

Collapse
 
juanpumpkinpie profile image
juanpumpkinpie •

such a heavy work!

Collapse
 
cayde profile image
CAYDE •

🤩🤩🤩

Collapse
 
vivirenremoto profile image
Miquel Camps •

This is Awesome! Good job đź‘Ź

Collapse
 
tomeraitz profile image
Tomer Raitz •

It's amazing! can I ask how long it took you to complete it all?

Collapse
 
claudiobonfati profile image
Claudio Bonfati •

Hey, glad you liked it.
It took me about 7 hours of work, one hour a day, one week in total.

Collapse
 
crudeboy profile image
Jazz_Baba •

it might take me a year...lol

Collapse
 
tomeraitz profile image
Tomer Raitz •

cool, it's pretty fast to something that complex. nice job

Collapse
 
nikhilmwarrier profile image
nikhilmwarrier •

This a whole another level of awesomeness!!!
Mindblown!!!

Collapse
 
akshajsaini profile image
AkshajSaini •

Love it bro

Collapse
 
emanoellopes profile image
Emanoel Lopes •

Awesome bro!

Collapse
 
victoor profile image
Víctor Falcón •

Good job! Don't know that it's even possible.

Collapse
 
olegzhermal profile image
Oleg Zhermal •

Love it!

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more