DEV Community

Cover image for 😡 Fine...you want CSS art you got it! 💪 My first ever CSS art.
InHuOfficial
InHuOfficial

Posted on

😡 Fine...you want CSS art you got it! 💪 My first ever CSS art.

In my last post I recreated an image in SVG to prove how easy it is compared to CSS.

All the CSS fans came to shout at me for bashing CSS or not using it...so now I have built the same image in CSS, hopefully that makes everybody happy! 😉

Original image

Livai Ackerman

CSS version

See, CSS art is easy too! 😉

 

 


OK wow, how did you do that?

In the previous post I cheated and created an SVG of the image.

This post is no different, I cheated again!

All I did was write a little script (well, actually it was quite a monstrous script as you can't have curves in polygons!) that converted the SVG <path> information into polygon() coordinates that CSS can understand.

The script also had to grab the styling information and generate the HTML and CSS.

So we have 977 <divs>, each with auto generated IDs...that correspond to CSS rules...that are all using clip paths...to draw shapes and with classes to set the colours. Talk about excessively complicated! 🤣

additional: as @afif pointed out in the comments you should never just copy and paste CSS…I was miles into coding this (with hard coded spaghetti code!) before I realised I didn’t need pseudo elements to create the clip-paths…sometimes my brain just doesn’t work!

You happy now?

All the CSS mega fans will now be happy that I have finally drawn my first piece of CSS art...can I go back to my precious SVGs now? 😋🤣

As always, this was just a bit of fun, I am only kidding, CSS art is cool, especially when done with skill rather than cheating like me!

Have a great weekend everybody!

Discussion (26)

Collapse
danbamikiya profile image
Dan Bamikiya

Can you share your monstrous script?
Thanks!

Collapse
danbamikiya profile image
Dan Bamikiya

if i wanted to attempt this which i wouldn't cause...waste of time. i would've used a single div(just to flex) and applied a whole bunch of gradients on the background-image property (something like this: github.com/danBamikiya/movie-finde...) [that styling is generated] and if I want to go further and animate (like an eye wink or something) I'll apply an animation property that animates the background-position and background-size

Collapse
inhuofficial profile image
InHuOfficial Author

Someone beat us both too it!

dev.to/posandu/comment/1i9jk

Thread Thread
danbamikiya profile image
Dan Bamikiya

That's WILD! He inlined it!
I guess the next war is a 0 div war. Only styling the html element.

Thread Thread
inhuofficial profile image
InHuOfficial Author • Edited

The real pros don’t use any CSS, HTML, images, JS at all! (Firefox only) 😉

In fact if you like abusing the web you might like that whole series! 🤣

Collapse
adam_cyclones profile image
Adam Crockett • Edited

SVG because that makes sense

Collapse
inhuofficial profile image
InHuOfficial Author

@afif and @alvaromontoro , you both happy now, I did the CSS thing...can we be friends again please? 😋

Collapse
afif profile image
Temani Afif

Collapse
inhuofficial profile image
InHuOfficial Author

The sheer length of that GIF made me laugh! It seems my post had the desired affect! 🤣

Thread Thread
afif profile image
Temani Afif

by the way, you don't have to use all those pseudo elements (I know you copied my code structure 😒). Applying the clip-path to the main element is enough. I used pseudo element to reduce the need of the html code and because I have to apply a filter to the parent element

Thread Thread
inhuofficial profile image
InHuOfficial Author

Yeah I did just grab the code structure, it was only when I was half way through I realised it was not necessary (I did think it was needed and then my brain finally worked after about 2 hours!), but I had already hard coded it into about 15 different places and I couldn't be arsed to remove it...so I just left it 🤣

Serves me right for copying without thinking! I also realised I didn't need loads of other properties as I was using vw units, so I could have just used them throughout and work as if the whole screen was the canvas....would have made the calculations a lot easier as I could have divided by 10 instead of 9.77 when calculating the positions as percentages!

Hence why this is not a tutorial...I made many many blunders! lol!

Thread Thread
inhuofficial profile image
InHuOfficial Author

I don’t know why I don’t ask you to just look at stuff I am working on with CSS…would save me loads of faffing as you spot stuff so quickly ❤️!

Collapse
link2twenty profile image
Andrew Bone

Single div next?

Collapse
inhuofficial profile image
InHuOfficial Author

LMFAO - the only way I can think to do that is to cheat with a gradient per pixel. I am sure @afif can do something very impressive with a single div and conic-gradients though!

Anyway single div is for noobs, the no div challenges are the ones the pros do! 😋🤣

Collapse
davidamunga profile image
David Amunga

And here I am struggling to center a div 😁

Collapse
inhuofficial profile image
InHuOfficial Author

Don’t worry, without cheats I also struggle to centre a div! 🤣😜

Collapse
prakh_r profile image
Prakhar Yadav

This is insane 🔥🔥🔥

Collapse
hamdysaad20 profile image
Hamdy Saad

wooooooooooowww!!

Collapse
rikiyadav profile image
RikiYadav

Even I have done that with python+Html+css within 22 sec😂😂

Collapse
inhuofficial profile image
InHuOfficial Author

I would love to see the script you used to convert the paths, perhaps I made it too complicated if you can do it so easily as it took me ages to convert curves to polygons!

Is there some simple approximation you can use that I missed that doesn't involve calculating the curve first?

How did you do it so quickly?

Collapse
hashimdev profile image
Hasheem ✪| Founder Your Creative Hike

👍😂😂

Collapse
mastermind profile image
MasterMind

why 🤣

Collapse
inhuofficial profile image
InHuOfficial Author

Must one have a purpose behind everything? 😜🤣

Collapse
auroratide profile image
Timothy Foster

So now my brain's thinking... if we use Illustrator to trace the CSS art image, then reapply your script, and iterate that several times... 😈

Collapse
inhuofficial profile image
InHuOfficial Author

Oh dear...I can only imagine what monstrosity would come out of that! 🤣

Collapse
jashgopani profile image
Jash Gopani

Too good!!! 🤩🤩🤩 Hats off brother