News for hackers. Stuff that matters.
Re:Yahoo reinvented inline styles through classes by scrollaway on Sunday July 23, 2017 @03:01PM (#14833819)
That site is a bit light on the "Why?".
Re:Yahoo reinvented inline styles through classes by djedr on Sunday July 23, 2017 @05:49PM (#14834594)
Another project, which also uses the idea of atomic CSS classes is Styletron [0]. Perhaps their "introductory blog post" [1] better explains the "why".

All in all this has some interesting performance benefits.

It may look insane, but as long as you don't have to manually make and use these atomic classes this is not such a bad idea.

I think the things such as atomic CSS, CSS-in-JS, CSS Modules, styled-components, inline styles, etc. are all symptoms of something being seriously wrong with CSS and at the same time attempts to fix these problems. They are pushing in the positive direction.

I recommend checking out [2] if somebody is interested in these topics. That's where I found out about Styletron.

Cheers.

[0] https://github.com/rtsao/styletron [1] https://ryantsao.com/blog/virtual-css-with-styletron [2] https://medium.com/seek-blog/a-unified-styling-language-d0c2...

Re:Yahoo reinvented inline styles through classes by Mikhail_Edoshin on Monday July 24, 2017 @04:45AM (#14836819)
I have a desktop publishing background and I'd say that CSS is way less convenient than the common desktop publishing styling model. In desktop publishing you assign styles to certain classes of page elements (paragraphs, character runs, graphics, tables, etc.) and you can base a style on another style, that's all. There's no element-element inheritance, only style-to-style inheritance. This is not ideal, I think, but you never get any surprises that are so common in CSS.

If I were to design a better styling model, I'd take that desktop-publishing model and added multiple inheritance (something you can model in XSL-FO with XSLT attribute templates) and maybe tried to have pattern-based rules, but not hierarchical as in CSS. What you normally need is to be able to specify that "add that much space between a table and a paragraph", "remove first line indent if the paragraph comes after a picture", "do not add space if the paragraph is at the top of the page", and so on. All this seems to be based on a particular arrangement of sibling elements, not of parent-child relationship. The only exception I can think of are tables, but they seem to be special anyway.

Re:Yahoo reinvented inline styles through classes by ninjaranter on Sunday July 23, 2017 @03:11PM (#14833871)
Yeah, they showcase how much better it is than using inline styles (which it is, of course) but I don't see "the headache of managing stylesheets" problem this supposedly solves. Not sure who the target audience is for this one.

It's funny how they say "The lower specificity of classes also allows for easier overrides" -- that's true, but what on earth would I want to override a class called "P(20px)" to do instead? :)

Re:Yahoo reinvented inline styles through classes by lylepstein on Sunday July 23, 2017 @03:45PM (#14834006)
Size. Using styles like this lead to a small decrease in page size, which over time on a very high traffic site leads to a notable bandwidth savings.

... or at least, that was the argument. In practice, most teams didn't adopt it unless mandated from above; because it sucks to use, has an infinitesimal decrease in individual page load time, and the bandwidth savings certainly don't outweigh the lost developer time.

But hey, all you gotta do is convince some VP that your niche approach is the right one, and you'll get some adoption in a large company like Yahoo.

Re:Yahoo reinvented inline styles through classes by troels on Sunday July 23, 2017 @04:26PM (#14834212)
Where have you heard that argument? That is absolutely bonkers. Why didn't they just use css as intended and collect all these inline styles into generic classes? Or turn on gzip-compression?
Re:Yahoo reinvented inline styles through classes by lylepstein on Sunday July 23, 2017 @04:41PM (#14834266)
I worked in an org at Yahoo that required all development to use Atomic, and that was essentially the reasoning as presented. The Atomic authors put a lot of effort [1] put into proving the size point, enough that it was pretty difficult to argue with. The stylistic issues were sort of swept aside; less size == faster page loads == more revenue.

If you believe the size argument, and care more about short term revenue over developer productivity or happiness, it makes sense, I guess.

[1] https://acss.io/frequently-asked-questions.html#what-are-the...

Re:Yahoo reinvented inline styles through classes by intoverflow2 on Monday July 24, 2017 @06:55AM (#14837358)
> Why didn't they just use css as intended

Too many engineers and not enough actual problems.

Re:Yahoo reinvented inline styles through classes by anotheryou on Monday July 24, 2017 @06:43AM (#14837303)
I recently botched a badly written site with loads of inline styles in to something responsive, you can override inline styles. It's not pretty, but it works:

  *[style*="text-align:justify"]{ 
       text-align: left !important;
  }
Re:Yahoo reinvented inline styles through classes by Kpourdeilami on Sunday July 23, 2017 @03:49PM (#14834034)
> but what on earth would I want to override a class called "P(20px)" to do instead? :)

lol maybe you might want to express the sizes in another base /s

    .P(20px) {
      font-size: 10px; // 20px in base 5 is 10px in base 10
    }
Re:Yahoo reinvented inline styles through classes by germainelol on Sunday July 23, 2017 @11:49PM (#14835775)
Someone already posted styletron which to me is a lot better, but anywho the point of it is to minify your CSS a lot more. If you have something like `margin: 10px` in several different places, it will refactor it out into a new class and apply it to all of those elements. In a big project, it saves a lot of space and you end up with a pretty small CSS file.

Admittedly, I have no idea how well this performs with code splitting though. I like the fact that with code splitting, each page will just load the assets that it needs for that page to render and function.