Backstory alert!!
When I joined Twitter, I came across people who were posting CSS illustrations and I was extremely intrigued and confused at the same time. It was not until a month later that I took a deep dive into CSS and started experimenting, that I actually felt like I had achieved a good enough understanding of CSS art. In this post, I've tried to list out all the important things that I've learnt and also some resources that I use frequently.
What is CSS art anyways? π€
Making CSS art boils down to manipulating the shapes of HTML elements ( mostly divs or spans ) using CSS properties and getting them to look the way you want by gluing them together using CSS positioning.
With me till now? Great, now let's have a look at some CSS properties that I use the MOST while making CSS art and also some resources that will hopefully help you better visualize them.
Border radius
This property helps us round the corners of an otherwise rectangular-shaped div or span. I've tried to give you an overview of how this property works in the following image.
Through these numbers, we tell CSS how much of each side it should take to round a given corner.
Here's a tool that helps in visualizing how border-radius works : 8 point border radius
Flexbox
I use flexbox heavily to center elements and for easy positioning of elements. In the following image, I applied a display of flex, flex-direction of column, justify-content center and align-items center to the container on the right side. On doing so, I could skip the extra positioning that I would have to do if I hadn't used Flexbox, like in the left container.
Personally, I learnt flex box from the Freecodecamp curriculum. Here are some other tools that are very useful to help gain a better grip on Flexbox:
1) Flexbox visualizer by Paul Trone
2) Flexbox froggy
Clip-path
Clip-path helps us create almost any polygon that we want. Using this, we can specify a given area on the div or span that we want to show rather than showing its entire rectangular shape.
Bennett Feely's clip path maker is an extremely handy tool that I use frequently to visualize and work with this property.
View port dimensions
Something that I realized recently is to use view port dimensions ( vw, vh, vmin, vmax ) to make the illustrations responsive. View port dimensions help us declare lengths in terms of the view port width or height. The most important among these, at least in the context of CSS art, is the vmin unit.
It helps us declare the widths and heights of our HTML elements in terms of the minimum value among the view port width and the view port height. This way we can ensure that no matter what device you view the illustration on, it looks exactly the same.
Relative and absolute positioning
When we give a relative position to an HTML element, we move it with respect to itself. But when we talk about absolute positioning, we position the element with respect to its parent. In this case the parent should have relative positioning.
The following image illustrates what I'm talking about.
If I add right:10px; to the inner box in the CSS stylesheet, here is how the result would differ based on whether the inner box is positioned relatively or absolutely.
Pseudo elements
These refer to the ::before and ::after elements. Don't worry if you haven't heard of them or haven't used them before. Here is a series on YouTube by Kevin Powell, that does an amazing job at explaining the ins and outs of pseudo elements.
Part one, Part two and Part three.
Extras β¨
Some other CSS properties that you could use to add depth and definition to your illustrations :
Box-shadow
Here is an article from CSS Tricks which when read along with the MDN docs on box-shadow can help clear up a lot things about how box-shadows work.
You can use this Box shadow generator to visualize how these work.
Gradients ( linear and radial )
Here's one of my favorite articles on CSS gradients from CSS tricks.
Brag alert‡οΈβ€΅οΈβ€΅οΈππ
Here is a small collection of illustrations that I made using CSS.
That's it folks! Thank you for reading till the endππ I really hope you had something to take way. If this helped you in any way, I'd love to hearπ from you. You can catch me on Twitter or Codepen π
Have a great day( or night )!!ππ
Top comments (32)
Good job with the images, they look great! As an idea for your next article I'd suggest showing step by step the image progress, or showing the CSS itself. This article here is like a typical drawing article.
Yeah I was thinking about the same thing. I'll do thatπ
Have a look here
βSecrets of drawing with CSS and a single DIVβ by pandaquests link.medium.com/wQrKu8V4Wbb
Nice write up, you can also check out the following articles:
The Beauty of CSS
Habdul Hazeez γ» Jul 13 γ» 5 min read
Image manipulation with CSS
Habdul Hazeez γ» Jul 20 γ» 9 min read
If you are a visual learner and you'd like to dive deeper into CSS positioning you can read Learn CSS Positioning by Ahmad Shadeed.
Thank you so much for sharingπ
Or thus one (sorry don't want to spam. But you might like it)
βSecrets of drawing with CSS and a single DIVβ by pandaquests link.medium.com/wQrKu8V4Wbb
Thanks for sharing, i need to need to work on clip paths and viewport units
You're welcomeπ Let me know if I can help you in any way!!
I will
Good one Manaswini. Superb explanation.
Thanks a lot Ashwin π
Thank you for sharing!
Clip-path maker is a cool stuff! Bookmarked it
You're welcome! It is very cool indeed!
Thanks, visualization will help to have deeper understanding of CSS.
This is cool. Thanks for sharing.
You're welcomeπ
This is a very insightful post will brilliant examples Manaswini. π
Thanks Mayank π
LOVE the things you made, great work! π€©ππ»
Thank you so much Sarahπ
Great Article Manaswini!
Keep Going
Thank you Sai π