News for hackers. Stuff that matters.
Re:Show HN: CSS ICON, an icon set crafted by pure CSS by amelius on Monday October 17, 2016 @07:19AM (#12724054)
Why not just use SVG inside a data url? E.g., as in [1].

[1] https://en.wikipedia.org/wiki/Data_URI_scheme#Examples

Re:Show HN: CSS ICON, an icon set crafted by pure CSS by wentin on Monday October 17, 2016 @09:07AM (#12724634)
css icon has less code, the code is more editable and managable, argumentably better performance (because i haven't tested it)

in the intro youtube video I said more about that. But to be honest, I just had a lot of fun dealing with the constraints that comes with css and loved the creating process, I spent a few weekends keeping designing and coding those tiny icons and skipped a lot of sleeping and still had fun.

Re:Show HN: CSS ICON, an icon set crafted by pure CSS by pcwalton on Monday October 17, 2016 @09:25AM (#12724745)
The painting performance should be pretty similar for both CSS and SVG: they both get rasterized via the same 2D vector graphics backend in popular browser engines. Most 2D vector graphics backends go to a lot of effort to cull invisible regions.

CSS icons may be slightly slower than an optimized SVG due to the overhead of restyling and layout. Also, the browser-side painting may be a bit slower for CSS icons, because border painting involves fairly complex logic compared to drawing a path (and for example in Gecko you have to construct display list items for individual borders but not paths). But we're talking about really small differences: I highly doubt they matter in practice.

Re:Show HN: CSS ICON, an icon set crafted by pure CSS by wentin on Monday October 17, 2016 @11:39AM (#12725991)
this is awesome analyze, thanks!
Re:Show HN: CSS ICON, an icon set crafted by pure CSS by nthcolumn on Monday October 17, 2016 @03:21PM (#12728413)
What about caching - is that an advantage over inline SVG? I imagine the css would compress better too? I'd like to see animated ones. Holy geocities! I have no clue how it works. Amazing.
Re:Show HN: CSS ICON, an icon set crafted by pure CSS by pcwalton on Monday October 17, 2016 @04:04PM (#12729097)
CSS and SVG are cached the same way on disk.
Re:Show HN: CSS ICON, an icon set crafted by pure CSS by kraftman on Monday October 17, 2016 @09:50AM (#12724948)
You probably want 'arguably' here instead of 'argumentably.'
Re:Show HN: CSS ICON, an icon set crafted by pure CSS by sly010 on Tuesday October 18, 2016 @09:07AM (#12733960)
> css icon has less code

this is just not true. using svg you can have a single string describe an arbitrarily complex path.

> the code is more editable

also not true. they are both just text...

> and managable

how so? in svg you can group things, easily shuffle things around, save them in separate files and point to them.

> argumentably better performance (because i haven't tested it)

what does that even mean? loading time? rendering time? memory?

Congratulations, there is some pretty cool wizardry going on in there, and it's undoubtedly fun, I just find your rationale for it completely made up. You still got my upvote though, just please don't say such unsubstantiated silly things.

edit:formatting

Re:Show HN: CSS ICON, an icon set crafted by pure CSS by wentin on Tuesday October 18, 2016 @01:57PM (#12737023)
> css icon has less code

this is just not true. using svg you can have a single string describe an arbitrarily complex path.

reply: unless you count code by lines, but that single line of string for paths feels really really long and not readable. see below

> the code is more editable

<svg id="beard" data-name="beard 1" xmlns="http://www.w3.org/2000/svg" width="14.096" height="4.063" viewBox="0 0 14.096 4.063"><title>Untitled-1</title><path d="M10.529,0.563a2.245,2.245,0,0,0-2.972,0,1.806,1.806,0,0,0,0,2.716c1.8,1.643,4.343.514,6.539-1.63C13.461,2.269,12.136,2.032,10.529.563Z" fill="#fff"/><path d="M3.567,0.563a2.245,2.245,0,0,1,2.972,0,1.806,1.806,0,0,1,0,2.716C4.741,4.922,2.2,3.793,0,1.649,0.635,2.269,1.959,2.032,3.567.563Z" fill="#fff"/></svg> vs. in css http://cssicon.space/#/icon/mustache-solid

to change its shape you need to use illustrator for SVG vs. in css just some property change. Yes they are just text, but are you really smart enough to edit the above SVG code by hand?

> and managable

managable as you can have clean html, all you need is a div, vs. svg you have to insert the whole chunk of svg code in your html.(Using <img/> won't give you flexibility, svg has to be inline) you can have package tool to insert svg programmatically but when you just prototyping, not gonna do that whole process to just get some icon showing up. CSS ICON is grab and go icons.

> arguably better performance (because i haven't tested it)

It is not true rendering time wise, as someone else analyzed CSS need more rendering time. But you have less HTTP request comparing to icon fonts or external SVG files. Download time is faster

Re:Show HN: CSS ICON, an icon set crafted by pure CSS by wentin on Tuesday October 18, 2016 @02:05PM (#12737091)
like I said in the video, I admit it is not a replacement technique of SVG for icons, but it does have its niche use cases. When I prototype, or I need some simple icon that I want to animate when hover, CSS is easier. You can see a lot of hamburger icon out there are done by css. This is a reference so that someone else don't need to redraw the hambuger icon in css again and again.

Beyond that I have positioned it as an CSS learning tool. I spent more time making the web app than doing the icons, with angular.js, so that one can click on any icon and inspect and learn these css tricks within 10 mins or so. The easiest way to learn any programming language is to do a hands-on project, and I find cssicon is bite-sized project that give the learner some learning satisfaction within the ideal short time span. I hope this helps someone

Re:Show HN: CSS ICON, an icon set crafted by pure CSS by ysavir on Monday October 17, 2016 @01:57PM (#12727432)
SVGs also have less chance of inhering unwanted code, typically. But this can vary with your CSS writing styles.
Re:Show HN: CSS ICON, an icon set crafted by pure CSS by ravenstine on Monday October 17, 2016 @10:17AM (#12725193)
I was barely awake when just having this problem last night, but SVG sprites(a bunch of icons in 1 s SVG file) have very limited support in CSS. In Chrome, it doesn't even work to specify a sprite symbol ID as a background URL, for example, even though that would be the most straight forward way to use sprites as icons IMO. CSS icons can have the same effect of having the icons being bundled in a single request while actually working. lol
Re:Show HN: CSS ICON, an icon set crafted by pure CSS by wanda on Monday October 17, 2016 @10:32AM (#12725333)
If you escape the unsafe characters it works everywhere. I've been doing this for ages.

Source: https://codepen.io/yoksel/details/JDqvs/

Re:Show HN: CSS ICON, an icon set crafted by pure CSS by ravenstine on Monday October 17, 2016 @11:32AM (#12725918)
Ah, that's a pretty decent workaround. Though I'm not a fan of putting encoding encoded information into style sheets, I'm not exactly against it either.

Though the method I wanted to use would work if it weren't for the existing icons symbols inside of sprites, which seems to be only supported in Firefox's CSS.

For example: ``` <svg> <symbol id="helloworld">[... a bunch of paths]</symbol> <symbol id="anothersym">[...]</symbol> </svg> ```

``` label:before { background: url('/path/to/my.svg#helloworld') no-repeat; } ```

I could, of course, break the icons out of the symbol tags, as done here: https://css-tricks.com/svg-fragment-identifiers-work/

It's just disappointing that while referencing symbols works just fine with a <use xlink:href> tag, it doesn't work as a CSS url property value. I'm not sure why that would be.

EDIT: Yes, I'm sorry, I know this isn't Stack Overflow. Though I think the above(without symbol tags of course) may be the best alternative to pure-CSS icons if your graphics are more complicated.

Re:Show HN: CSS ICON, an icon set crafted by pure CSS by j4_james on Monday October 17, 2016 @01:16PM (#12727002)
If you're wanting to use fragment identifiers to refer to multiple sprites in a single SVG, that issue was fixed in Chrome in November of last year.[1] I'm not sure if the fix has propagated widely enough to be considered practical for production use, but it's at least a move in the right direction.

[1] https://bugs.chromium.org/p/chromium/issues/detail?id=128055

Re:Show HN: CSS ICON, an icon set crafted by pure CSS by rvlouie on Monday October 17, 2016 @05:14PM (#12729835)
Why do anything? Of course you can use SVG, but the point here, if I've understood it correctly, was to specifically NOT use SVG.
Re:Show HN: CSS ICON, an icon set crafted by pure CSS by microcolonel on Monday October 17, 2016 @09:10AM (#12724648)
Many of these are also standard Unicode characters (such as and all the smileys)