Pure CSS – Lace(diana-adrianne.com)
diana-adrianne.com
Pure CSS – Lace
https://diana-adrianne.com/purecss-lace/
105 comments
And the interview:
https://video.vice.com/en_ca/video/this-painting-is-made-of-...
And how she actually produces this:
https://github.com/cyanharlow/purecss-francine/issues/28
https://video.vice.com/en_ca/video/this-painting-is-made-of-...
And how she actually produces this:
https://github.com/cyanharlow/purecss-francine/issues/28
Another previous discussion: https://news.ycombinator.com/item?id=17058508
Having been inured to loading 100KB-200KB of boilerplate CSS for a web project, I'm just amazed that the raw CSS for this is 43KB, un-minified:
https://github.com/cyanharlow/purecss-lace/blob/master/style...
https://github.com/cyanharlow/purecss-lace/blob/master/style...
If you open up the raw CSS file and pop open DevTools, the raw CSS is only 9.9KB after gzip. A minifier could probably make that a bit smaller too.
Developers don’t care about performance, and haven’t for multiple years now. Multi-megabyte JS packages for normal websites are visible across most of the web, and no-one tests on the actual problem devices which are low- to mid-range android phones on slow connections.
no-one tests on the actual problem devices which are low- to mid-range android phones on slow connections.
I do. But I work in healthcare for the rural and poor. Some of my target devices the kind of craptastic phones people on HN would buy as a joke burner, but for millions of people is their entire family's only connection to the internet.
I do. But I work in healthcare for the rural and poor. Some of my target devices the kind of craptastic phones people on HN would buy as a joke burner, but for millions of people is their entire family's only connection to the internet.
At the other end of the spectrum, I've worked on an ecommerce site where I was instructed to ignore that our JS payload was taking more than six seconds to parse on flagship phones (setting aside the network entirely).
Worse still, after loading that code up, only then would it request the manifest that described 90% of the above-the-fold content.
The decadence of web development today, particularly with agencies and large corporate customers, is truly boundless.
Worse still, after loading that code up, only then would it request the manifest that described 90% of the above-the-fold content.
The decadence of web development today, particularly with agencies and large corporate customers, is truly boundless.
Fascinatingly, at a previous ecommerce gig, we had a similar issue. On of the developers ran a test where on one of our main pages, he added performance improvements to get the fastest speed to a reasonable place, and then segmented traffic into buckets that deliberately slowed the server response by various, increasing amounts of time.
And wouldn't you know, it made almost no difference on our primary conversion metrics. As far as we could tell his methodology was sound, but unfortunately it got buried when it was discovered the findings could be abused to show that performance doesn't matter.
And wouldn't you know, it made almost no difference on our primary conversion metrics. As far as we could tell his methodology was sound, but unfortunately it got buried when it was discovered the findings could be abused to show that performance doesn't matter.
As this is indisputable true, who disagrees or doesn't see the value of a statement like this?
Are we so accustomed to having >100mbit bandwidth to not see the problems modern web design is bringing to people in poorer areas of the world?
I suppose that some of the downvoters of that comment upvote comments stating minorities are being discriminated. Ironically the minority is not being discriminated in this case, since most of the people on the internet are on <100mbit bandwidth worldwide (https://en.wikipedia.org/wiki/Global_Internet_usage#Broadban...).
Are we so accustomed to having >100mbit bandwidth to not see the problems modern web design is bringing to people in poorer areas of the world?
I suppose that some of the downvoters of that comment upvote comments stating minorities are being discriminated. Ironically the minority is not being discriminated in this case, since most of the people on the internet are on <100mbit bandwidth worldwide (https://en.wikipedia.org/wiki/Global_Internet_usage#Broadban...).
Its the buisness side that doesnt care. For my personal buisness i make sure everythig is fast, lightweight, and accessible, works on browsers that has below 0.1% usage, do not track users, nor store personal info. But I do not make any extra money doing it.
I think you'd be surprised how much speed matters. Google factors in page load time for SEO, and there's quite a few examples of companies seeing page speed directly relate to sales:
https://developers.google.com/web/fundamentals/performance/w...
https://developers.google.com/web/fundamentals/performance/w...
What business is this? I'm really curious how well you do the accessibility side.
A lot is cached but agree it's still a valid concern.
The author's absolutely earnt the right to call themselves a CSS expert on their personal site, I had no idea CSS could do something like this!
There's something oddly lovely about making art with such strict constraints. I've started making fun little pieces of my own with React and CSS. It's a great way to harness creativity through restrictions. Also requires some fun math on occasion. A good exercise is to make a Bauhaus or Swiss style poster, then animate it.
For those who want some background, the github repo [0] has more info.
Money quote: "All elements must be typed out by hand"
[0]: https://github.com/cyanharlow/purecss-lace
Money quote: "All elements must be typed out by hand"
[0]: https://github.com/cyanharlow/purecss-lace
.iris {
display: none;
}
:)Even make her perform a very awkward wink.
setInterval(() => {var style = document.getElementsByClassName("iris")[0].style; style.display = style.display != 'none' ? 'none':'block'}, 2000)
setInterval(() => {var style = document.getElementsByClassName("iris")[0].style; style.display = style.display != 'none' ? 'none':'block'}, 2000)
[deleted]
Better wink:
setInterval(() => {var style = document.getElementsByClassName("eye")[0].style; style.display = style.display != 'none' ? 'none':'block'}, 2000)
setInterval(() => {var style = document.getElementsByClassName("eye")[0].style; style.display = style.display != 'none' ? 'none':'block'}, 2000)
This is just awesome, lmao!
Voldemort:
document.getElementsByClassName("nose")[0].style.display = 'none';
document.getElementsByClassName("nose")[0].style.display = 'none';
.iris {
background-color: red !important;
}
My blink 7-8 years ago. Pretty crude, but was fun to learn CSS animation. For smaller mobile, use landscape mode:
https://technotarek.com/human
https://technotarek.com/human
You hacker!
What have I done?
shiver
https://imgur.com/a/fJ3j0ww
https://imgur.com/a/fJ3j0ww
Beautiful abuse of CSS. That fine line between mastery and subversion.
..also between genius and madness. It's brilliant and deserves a place in art history.
Wow, this is amazing.
I would love to watch something like this being live-coded. Heck, I assume people would probably even pay for watching it.
I would love to watch something like this being live-coded. Heck, I assume people would probably even pay for watching it.
Yeah, I would definitely spend money on a book or video series that goes through this process.
The authors How page is interested but it leaves me with a bit of a "Draw the rest of the fucking owl" feeling.
The authors How page is interested but it leaves me with a bit of a "Draw the rest of the fucking owl" feeling.
These two channels don't do nearly the quality that the original post has, but these two old youtube channels have CSS drawings and are pretty fun to watch
Sasha Tran https://www.youtube.com/watch?v=wPJrnED45RM&list=PLTHpnjV0t8...
Jeffrey Taylor https://www.youtube.com/watch?v=kSBT669yLyU&list=PLaGfdei15A...
Sasha Tran https://www.youtube.com/watch?v=wPJrnED45RM&list=PLTHpnjV0t8...
Jeffrey Taylor https://www.youtube.com/watch?v=kSBT669yLyU&list=PLaGfdei15A...
Seems like some good twitch opportunity
Not a dig, just found it interesting how this looks in Safari:
https://i.imgur.com/z2vHvND.png
https://i.imgur.com/z2vHvND.png
She mentions on the GitHub repo that she only coded for Chrome.
> Because of the artistic nature of this project I have not concerned myself with cross-browser-compatibility, so the live preview will most likely look laughable in anything other than chrome.
> Because of the artistic nature of this project I have not concerned myself with cross-browser-compatibility, so the live preview will most likely look laughable in anything other than chrome.
Works fine in Firefox except for the really nice brown iris design. I'm curious why that one part doesn't load (not that curious I would find out myself though :P).
For the curious: the artist used "repeating-conic-gradient()" which (along with conic-gradient) only works in Webkit browsers: https://developer.mozilla.org/en-US/docs/Web/CSS/repeating-c...
It looks better but still not quite right in safari on iPad. Is there a reference image somewhere?
It looks normal on mobile safari.
Is there any video where the artist talks about the process? I'm really interested in understanding how the artist approached this. Anyways, beautiful work.
Not exactly what you are asking for, but she does provide more information on the 5 key properties: https://diana-adrianne.com/how/
Each of the images without one of the key properties is oddly satisfying in a semi-abstract kind of way
While there is some commit history, it's definitely not low level enough to understand the process fully.
But I am imagining, from a quick "inspect element" looking at a few of the elements, that it is inspired by "brush movements": basically, you do a single brush movement with a single styled/transformed element (probably even more granular since a brush would give you trail-lines by default).
But I am imagining, from a quick "inspect element" looking at a few of the elements, that it is inspired by "brush movements": basically, you do a single brush movement with a single styled/transformed element (probably even more granular since a brush would give you trail-lines by default).
The eyes are extremely impressive. Playing with the properties it makes sense how she did it, but I can't imagine how long I'd have to play with transforms and gradients to recreate that from scratch.
Knowing my own frustrations with CSS, I cannot imagine any project more maddening than this.
Doesn't seem to render correctly on Safari.
> Because of the artistic nature of this project I have not concerned myself with cross-browser-compatibility, so the live preview will most likely look laughable in anything other than chrome.
But it works without a problem in FF
But it works without a problem in FF
An unfortunate side effect of abusing CSS to the boundaries of what it can do :(
tonetheman(4)
Amazing! Now I really wanna code something up that will generate this, it seems like it would be a super fun weekend project :)
I think this was on HackerNews before
https://javier.xyz/img2css/
Code: https://github.com/javierbyte/img2css/
https://javier.xyz/img2css/
Code: https://github.com/javierbyte/img2css/
Yes! Please create a higher-level abstraction so we can all be CSS painters in the Old Masters' style.
As in applying GAN on this? Could be interesting
This is great! On my tablet the perf isn't great though (no fault to the author). I'm wondering what CSS properties cause perf to degrade on a use like this? Looking at the CSS myself I'm guessing it's the box-shadow usage. But I could be wrong. Any chance some of this could be put on the GPU?
I had the Dark Reader chrome extension on and it looked awful, then realised.. This is crazy impressive.
It's very worthwhile to check out her other pure HTML+CSS artwork.
https://diana-adrianne.com/#portfolio
https://diana-adrianne.com/#portfolio
> I have not concerned myself with cross-browser-compatibility, so the live preview will most likely look laughable in anything other than chrome.
Indeed it looks much worse on Firefox than on Chrome.
Indeed it looks much worse on Firefox than on Chrome.
let's just say it's a different lady in firefox :D
In Chrome 78.0.3904.70
https://i.imgur.com/n0MoNfY.png
In Firefox 69.0.2
https://i.imgur.com/UKw3SGf.png
Much worse? She just looks a bit more sleepy!
https://i.imgur.com/n0MoNfY.png
In Firefox 69.0.2
https://i.imgur.com/UKw3SGf.png
Much worse? She just looks a bit more sleepy!
It will be great to read a blog or tutorial on how you made this.
To get a sense for how this is done, one can use the Inspect Element tool in the browser, Pick an Element from the page, and either highlight it or delete.
One of the most amazing things I have seen in a long time. The patience alone (not to mention the insane skill level) is off the charts.
I clicked on that link expecting just another CSS framework, but this is ridiculously impressive. Hats off to the author.
This is an advance version of CSS. I would like to know you did it.
What are the stab and spurt animations for?
Lol oh shit I forgot id originally been using this file to demo some shit to my team. I was demoing how to do an animated angry stabby emoji. Good catch.
I hope I have that original version saved, gonna check
Image without JS? Oh the blasphemy! /s
Does this qualify as a new ACID test?
Is it designed for chrome, not to conform to standards.
Wow, amazing work !!
Doesn't scale when the browser window is resized.
Wow impressive
wow! This is so impressive
Not responsive. Unusable. /s
I know, i know, it's awesome. But, unless it's specifically to make a point regarding the absurdity of today's web (such as eg demonstrating CSS Turing completeness), I can't help finding such hacks sad, because it just blends in to demonstrate how far we've striven from what once was a vision for a rational media architecture with a dedicated vector graphic format.
I don’t think that’s fair, exactly. The point of this exercise is to show artistic expression by pushing a medium outside of its intended use. There’s also an artist that paints in MS Excel, for example.
SVG is an incredible and underrated format. You can create illustrations in svg with modern graphics tools, yet still hack and animate them with css and js. And CSS Houdini is a really exciting development, too.
Some things about the web platform are frustrating for sure, but this sort of project isn’t any kind of statement on the effort required to build modern web graphics and illustrations because you’d never approach it this way. It’s just a fun puzzle for the artist, and every tech and medium has examples of this sort of thing.
SVG is an incredible and underrated format. You can create illustrations in svg with modern graphics tools, yet still hack and animate them with css and js. And CSS Houdini is a really exciting development, too.
Some things about the web platform are frustrating for sure, but this sort of project isn’t any kind of statement on the effort required to build modern web graphics and illustrations because you’d never approach it this way. It’s just a fun puzzle for the artist, and every tech and medium has examples of this sort of thing.
The amazing MS Excel artist mentioned can be found here:
https://pasokonga.com/
https://pasokonga.com/
You are making a claim based on what's being an extreme application of a technology. We can push any technology to its limits but that doesn't mean that average usage should suffer from the edge case problems.
We still have a rational media architecture with vector graphics support.
We still have a rational media architecture with vector graphics support.
Yeah I was hesitant to post because of the negative vibe to it, but still, if all we've achieved in the last decade or so is a replacement syntax for what was already possible 20 years ago on the web (Adobe SVG plugin) and with today's browser out of the box, we ought to search our soul what our goals are with the web platform. Because absurd CSS complexity with some 20 different layout models (or any bikeshedding on syntactial issues really) just serves to dilute any future effort for implementing parts of the web stack for no good reason other than browser lock-in.
Standards are superior to plugins I count that as a clear win. I don't thing there's a great goal other than being an application platform for the masses. New toys will come, old might go, but more likely stay with the spec (hi: <marquee>).
CSS layout had indeed evolved quite a bit (for the better), however we have great control now with flexbox and grid. They are much more than syntactic enhancements.
I wouldn't worry about browser lock-in, if you build stuff for browsers you are already "locked in" by definition.
CSS layout had indeed evolved quite a bit (for the better), however we have great control now with flexbox and grid. They are much more than syntactic enhancements.
I wouldn't worry about browser lock-in, if you build stuff for browsers you are already "locked in" by definition.
I think it's just... art. And also a hobby. She likes doing this very fiddly, impractical way of working in her spare time. She could be putting together jigsaw puzzles, she could be gardening, she could be making intricate motorized sculptures out of cardboard, she could be doing all sorts of things. But instead she takes the CSS skills that she uses for her day job and sees how far she can push them.
Hell, at this point I wouldn't be surprised if she's even had people approach her asking for CSS portrait commissions. I'm sure the number she's quoted them is pretty large, if so.
I'm a pro artist who mostly use Illustrator and I am pretty sure I could reproduce any of her pieces in a fraction of the time it took her to type them out by hand. If I did, nobody would care, because I'd be using a tool actually made for art.
Hell, at this point I wouldn't be surprised if she's even had people approach her asking for CSS portrait commissions. I'm sure the number she's quoted them is pretty large, if so.
I'm a pro artist who mostly use Illustrator and I am pretty sure I could reproduce any of her pieces in a fraction of the time it took her to type them out by hand. If I did, nobody would care, because I'd be using a tool actually made for art.
https://diana-adrianne.com/
https://cyanharlow.github.io/purecss-zigario/
https://cyanharlow.github.io/purecss-vignes/
https://cyanharlow.github.io/purecss-francine/
Previous discussions https://news.ycombinator.com/from?site=diana-adrianne.com