DEV Community

Cover image for Best CSS Frameworks in 2022

Best CSS Frameworks in 2022

ThemeSelection on September 08, 2020

Looking for Best CSS Frameworks in 2022? 🧐 Well, here we have listed down some of the best trending CSS frameworks so that you can get a detailed o...
Collapse
 
perpetual_education profile image
perpetual . education • Edited

It's 2020. These are all THE WORST. Seriously. This list should be called "the best ways to write CSS for those who are absolutely terrified to even try to learn CSS." Or "The best ways to write the worst markup."

CSS Framework users: explain yourselves.

It's not your fault. This a great list. Good research! But - these are all just sidestepping an absolute truth - that CSS is just AMAZING now / and you don't need all this crap.

JUST LEARN CSS - on the discord

Almost all layout comes down to a few lines of code

Baby talk for computers

Exploring a tailwind component

Are developers jerks (are we jerks?)

"37 and a half ways to avoid just learning a simple declarative language"

We're pushing "like" on this post - because we think the work you put into it is A+ / but if we could put a 💩x20 on the 'frameworks' vs CSS / we would.

(added this example)

tailwind madness
Which one of these is readable?
regular ol html

But if you don't want to learn CSS - then maybe frameworks are helpful? / but also if they are sooo fast and helpful - hopefully you don't bill by the hour - because doesn't that mean you'll be out of a job in the near future? Or is it the opposite?

Collapse
 
drawcard profile image
Drawcard • Edited

While I agree with the general sentiment that most frameworks suck, a handful of them are actually useful and save time (If you are an experienced developer, I am sure you are saving snippets or bootstrap files of your own to try and reduce the amount of repetition in every project. So you're writing your own framework in one way or another).

That said, lightweight and simple frameworks (written in pure CSS with no compilation required) are always the way to go. Devs should stay away from the monster frameworks that are like using a sledgehammer to put in a nail.

Collapse
 
capsule profile image
Thibaut Allender

Please, stop lying to yourself. "writing your own framework" is miles away from using a pre-made one that fits all needs (but yours, really).

A framework would never be "written in pure CSS" anyway, that would be a nightmare to maintain. You might only have access to a monolithic, pre-compiled and non configurable version of it, but it doesn't make it simpler. I would even tend to say it's worse as you can't customise it to your needs (if such a thing really exists).

Thread Thread
 
drawcard profile image
Drawcard

Here are some pure CSS frameworks that spring to mind:

Those frameworks use just a single uncompiled CSS stylesheet, so they require only 1 extra request to load, and they are extremely easy to customise (some of them use a handful of CSS variables to change the entire appearance). To me that's not much of a big deal.

If you want to go one step further, you can use a classless framework, requiring zero modification to HTML code: github.com/troxler/awesome-css-fra....

Thread Thread
 
capsule profile image
Thibaut Allender

I wouldn't call a classless framework a "framework", it's just an opinionated CSS reset.

Thread Thread
 
drawcard profile image
Drawcard • Edited

Google defines a framework as: "a basic structure underlying a system, concept, or text." or "an essential supporting structure of a building, vehicle, or object."

CSS Resets are actually frameworks by that definition: github.com/troxler/awesome-css-fra...

Many experienced developers hear the word "framework" and freak out - without really considering that there are some really useful, extremely lightweight systems out there that are helpful and fully customisable. Of course, no one is forcing you to use them, but you'll find Normalize.css on many websites for a very good reason - it's handy and it saves time.

A framework that doesn't save you time is worthless, I 100% agree with that. But I don't agree with the kneejerk reaction that "All frameworks suck!"

Thread Thread
 
perpetual_education profile image
perpetual . education

Yeah. I guess we're just kinda mad that bootstrap create 50 billions "why doesn't my CSS work" questions across the internet. It's OK. We don't have to agree. You are correct. Everything is a framework.

Thread Thread
 
capsule profile image
Thibaut Allender

If it was included the right way, Normalize should be invisible from the final CSS output tho. Either you merge it manually with your own declarations or you merge selectors with some PostCSS (although not recommended as this would potentially change the order of things). Another reason not to just throw some stuff and make an extra http call for things that you would rewrite anyway when writing your own custom CSS. Being able to tell it's used on many websites tells a lot about how much the devs responsible for them care about performance and optimisation.

Call me an old fart if you want but after close to 20 years of CSS I'm yet to find a CSS (not talking about JS here) framework that makes your life easier AND doesn't impact performance.

Thread Thread
 
roblevintennis profile image
Rob Levin

Thibaut, you should look at AgnosticUI. It does not use PostCSS, Sass, or nada. It's platform CSS. The methodology is essentially SMACSS (although I don't adhere closely; Bootstrap's style is similar with its class chaining). AgnosticUI -- look it up. It's certainly a framework, I am biased but believe it's quite maintainable.

Regarding impacting performance I generally have to agree but with the caveat that I believe it's generally because folks should be more creative in how they use frameworks! First off: at least do yourself a favor and only import modules you're actually using! Second: if you're not worried about being "upgrade safe", steal my buttons and prune the styles you're not using. I spent a lot of time getting them right and will have many bug fixes. Just take my CSS and craft it to your liking. Why reinvent the wheel completely from scratch? Leverage my pain 😄 -- I have to believe you do this anyway. Don't all us "old farts" to some degree.

But for performance, just measure and prune and use discretion. And tell the youngin's to "go learn CSS!" 💪 🍰 ⭐ 🙌

Thread Thread
 
capsule profile image
Thibaut Allender

You’re preaching to the choir. What you’ve done is some kind of universal atomic design system. I created one for the company I currently work for and it just saves so much time. The amount of work to get it up to speed is not trivial, and requires deep CSS knowledge, but once you have it running, it’s pretty much like building with LEGO. You don’t have to learn the 150 utility classes from a framework - most of them only emulating inline CSS anyway - and can’t really mess it up as the correct markup is also ready to go. LEGO vs “here’s a blank canvas and a bunch of paint buckets”

Thread Thread
 
roblevintennis profile image
Rob Levin

Yeah, sounds like we're pretty aligned on design systems aka universal component libraries (I like the atomic part though. Nice touch!).

Yes, it's not trivial to actually get these things done. I think companies are questing the ROI and it's a touchy dance with the stakeholders. I did one for ethos.com and basically before I was even to a place I felt even close to finished I was pulled off the design system to pound out more features. At some point I was asked "hey, who's managing the goals of the design system" and I'm like, wth, y'all took me off of that for your super urgent project. I bet you can relate to this reality too huh Thibaut.

If I'm super honest, I've started AgnosticUI as a survival mechanism so I can show up at a similar job with a more or less complete system that I know and feel good about in terms of a11y, code quality, etc., and I can get something branded in a month or two. Otherwise, yes, it probably takes a year to build a complete system full time dedicated very experienced developer with not just JavaScript skills, but good solid HTML and CSS and a11y skills.

You don’t have to learn the 150 utility classes from a framework

Yeah, I agree. I call this having to learn a DSL (domain specific language) + CSS. You can't really use a CSS utility library effectively in the first place if you don't know CSS. The only thing I'd admit a utility gives you is decent values perhaps. But yeah, I'm in your boat and just can't see myself doing anything but prototypes this way. Bootstrap 5 has a fair set of utilities and my colleagues have pretty much made certain sections look like we're using Tachyons or TW and then we have like 15 off canvas drawers and have some crucial h100 nested code and forget it in one place and I'm hunting down the bug lol.

Yeah, sounds like we're essentially from the same camp 💪 ⭐ 🙌

Collapse
 
perpetual_education profile image
perpetual . education

A whole handful? 😉

Yeah. We definitely have our own CSS rules and things we use on every project. But it's not really a 'framework' - and more of just some structural conventions. Our biggest problem is really just how the markup looks and the entire methodology of adding style by way of HTML. .pull-left type classes don't really make sense anymore.

Collapse
 
roblevintennis profile image
Rob Levin

So if you learn to use CSS utilities whether Tailwind, Tachyons, or others, you have to learn a DSL. On top of that, to really make these things control your stuff you DO still need to understand mostly CSS itself. So 2 languages.

I could say, "then why not inline styles using real CSS"? The main reason is TW et al do put the values on a scale e.g. it "protects you" from using inconsistent spacing or 50 shades of grey as they say. But gee, is it really that hard to come up with a sensible system yourself?

Ok, another thing is TW now prunes unused classes. Pretty killer feature.

I also understand "fighting" prebaked framework component argument.

But, I really would like folks to dig into these frameworks and CSS itself a bit more. I mean, I pretty much have to use BS at work because it was decided before I showed up. One of the first things I did was replace the href="path/to/all/of/bootstrap.css with a scss module import copied from https://github.com/twbs/bootstrap/blob/main/scss/bootstrap.scss (we're using scss so I can do this) and commented out anything unused. Then, I learn from their ideas.

Now mind you, away from job after hours I work on my own AgnosticUI framework, also write lots of custom CSS scripts, etc. Folks should be doing both! Same with JavaScript. Use more frameworks not less. Write more of your own platform based JavaScript. Then go and compare. What's amazing that the framework author did that you hadn't thought about? What's silly? Great learning resource.

For AgnosticUI, I always go look at a half dozen implementations in the wild from the big frameworks just to see if I forgot something. For example, "Hrm, why are they using this aria role here? Wait what even is that...I should google it or check MDN". Then I learn. Sometimes, wouldn't you know it, they implemented a11y wrong. Then I can feel smug for a few seconds haha. But other times I'm like "damn, I didn't even know -- good thing I didn't just release this. I would have F'd up accessibility".

Last thing. I see your example and I think -- there are broadly 3 types of CSS style:

  1. CSS utilities (shown)
  2. structure based CSS (shown and your preferred example)
  3. Class chaining, SMACSS etc. (not shown. pretty much Bootstrap uses this as does AgnosticUI and many others. It can use BEM too. Same general idea)

So, style number 2 will always look the cleanest and you can cheer about "look, no classitis". If I was to code for my personal blog, a marketing site, etc., this would work great, and I agree it's cleanest markup. But, style 3 is better and more flexible for larger projects, bigger teams where the CSS skills fluctuate greatly and lots of painful CSS regressions occur, etc.

For style number 1, I feel I must admit that I'm biased against this style but I also have to admit it's very popular and in use by many shops successfully. I've heard there are issues with parallelism having all this in your markup, debug'ability, etc. But I gravitate to "against it" arguments because of my bias. It's viable and smart folks are doing it.

I've come to start using style 2 with sprinkles of CSS utilities for things like flexbox and type when I absolutely know: 1) I'm definitely going to use the heck out of these utilities 2) I'm not going to create many of 'em because it would explode my generated CSS and I don't have some smart JIT pruning engine.

We need to stay flexible, keep learning, and use discretion 💪 ⭐ 🍰

Collapse
 
nachtfunke profile image
Thomas Semmler

Yep. That is exactly it. People just don't want to learn CSS. Companies have imbued an interest into our industry that only things that are programmatical in nature are valid (which they are, if your only interest is to cut expenses and make more money). But HTML, CSS and even JavaScript (in the context of a scripting language) were never made for "Programmers", they were made for everyone.

Collapse
 
anechol profile image
Ashley E

100% agree. CSS is in a very good place right now, especially with grid and flexbox, and with custom properties that can be manipulated with JS. CSS is VERY GOOD.

Collapse
 
edarioq profile image
Edgar Quintero

It's 2020, we don't need CSS "frameworks" anymore :)

Collapse
 
perpetual_education profile image
perpetual . education

AMEN!

Let's see a list of "things we can just do" already...

If you're making a quick MVP for a desktop-only dashboard app - and you only have a night... and you already know bootstrap from years of already using it... then great... but otherwise? Just write CSS!

Collapse
 
andrewbaisden profile image
Andrew Baisden

I always prefer CSS Grid or Flex Box before I consider using a CSS framework. And if I do use one it is because a company wants to use it for a project or something. Vanilla is more than good enough now.

Collapse
 
roblevintennis profile image
Rob Levin

I agree in terms of layout and what not and also admit that yes, I have to because employer X has already decided.

I use this term vanilla javascript and vanilla css because it's such a well-understood one. But am I being fidgety that I prefer now to say platform javascript or platform css? Vanilla has always bugged me somehow. I literally had a debate with a friend because on AgnosticUI site it says "It even works in vanilla JavaScript 😎 "; and it links out to that funny vanilla javascript page that pretends to be an actual framework. But I feel we should rename this thing. What do you think?

Collapse
 
drawcard profile image
Drawcard

Well... it depends a lot on the project... personally even though I like writing up raw CSS (making use of --var declarations to emulate what frameworks do) it is handy to have a simple scaffolding stylesheet to lean on and do a lot of the heavy lifting. When you have many projects on at once you need to find all the time you can get for delivering them, and simpler lightweight frameworks are perfect for that.

I personally try to stay away from clunky and bloated frameworks, and opt for things like Tailwind.css that you can just sprinkle here and there to help out with some of the more tedious parts of UI design. The framework shouldn't dictate the appearance too heavily (like Bootstrap does), but it should just be there to catch your fall when you need it, and let you stay in the driver's seat in terms of appearance.

This is the bit that excites me, and gives me new confidence in frameworks. More and more of them are opting to be just a single simple CSS stylesheet, mostly using --var declarations to do all of the hard work, and the result is frameworks that are more flexible and 'modern' than the old days where we'd have to override thousands of styles by hand. Tailwind is a great example of that new approach.

Collapse
 
perpetual_education profile image
perpetual . education

How is tailwind modern? It's just a ton of unreadable utility styles that you have to memorize. They've just created a new metalanguage - and now they can charge people to use 'pro.' It's like the first idea that ever happened... and then we realized it was bad - and now tailwind is doing it x100 10 years later. How is that modern?

Thread Thread
 
drawcard profile image
Drawcard

Tailwind is highly modular, and doesn't hold your hand, so it's more 'modern' than the traditional frameworks like Bootstrap that have opinionated ideas about how a card or a menu bar should look. If you have a problem trying to memorise utility styles you can always refer to documentation, so I don't think that's an argument against Tailwind.

If you want to do absolutely zero thinking when you're writing HTML, but still have the power of a framework to support it, you can always turn to classless frameworks: github.com/troxler/awesome-css-fra...

Collapse
 
capsule profile image
Thibaut Allender

You know what all these frameworks do?

They make believe junior developers know HTML and CSS. Every single time we get interns, they can't debug even debug CSS issues because they don't have the most basic knowledge. Don't know about the most critical properties like position and display, or the difference between px, rem and em.

When I show them how little code you need to write the most complex components, they are blown away.

Bring the craftsmanship back instead of pooping more useless tools that re-invent the wheel (but all they do is create a square one).

Collapse
 
chized profile image
Chiom H E Chukwu • Edited

While everyone talking about which is better, am actually surprised at some the numbers, especially "number of sites" maybe the because of the teams I have worked with. I always thought Bootstrap was the most used, due to its popularity. Well, thanks for sharing.

Collapse
 
darkwiiplayer profile image
𒎏Wii 🏳️‍⚧️ • Edited

These CSS "frameworks" are the dumbest idea people had since using tables for layout, and back then they at least had the excuse that there was no alternative method, which isn't even remotely true now.

What all these frameworks really bring to your project:

  • More code, because you apply styles to elements instead of rules
  • Worse maintainability, because you have to stile similar elements individually
  • Less readability, because the markup is cluttered with styling information
  • All websites using the same toolkit look mostly the same

In short, most of what these frameworks achieve is roll back all the benefits of CSS to write HTML like the "good old days" again.


I feel like I need to add that the article itself is very well written. I just wish it was about all the great things vanilla CSS can do and how to reduce the styling-related code instead of spreading it all over the markup.

Collapse
 
stuartaccent profile image
Stuart George

Ive always found css a bit alien so upto about 4 years ago tended to be steered towards the likes of bootstrap but rightly or wrongly found myself still adding a ton of css just to make things not look a bit samey between projects. I then found skeleton and liked the way you started out with a clean slate and a basic set of styles but quickly started re-using the same css across multiple projects so came up with a boilerplate css starting point.

We have now used this on a multitude of projects and dont ever get the feeling of we are battling with a framework. Its simple and gives us a good leg up to build upon. Its not popular but might help some folks (karmacss.com).

Every project seems different and its difficult to come up with a minimal starting point without creating bloatware but this works for us..

Collapse
 
theme_selection profile image
ThemeSelection

Thank you very much for your feedback.👍

Collapse
 
drawcard profile image
Drawcard

Another to add to the list - minicss.org/docs - I like this one because it's a single CSS stylesheet with no compiling necessary, and the main variables are driven by --var declarations. It isn't as open ended as Tailwind, and provides common component styles so it's easier for beginners to get into.

Collapse
 
roblevintennis profile image
Rob Levin

I do like the stats and bundlephobia research and what not. I always double check against bundlephobia though because sometimes it assumes I'm going to reference the wrong dist file.

I would say reading many of the comments there's a mix of folks that say don't use a framework at all vs. those that feel it's beneficial. I would definitely say that the grid and layout part of things should probably be learned via CSS's own flexbox and grid at this point. It's prolific and well supported and you're really just replacing it with a whole new DSL. I've heard Tailwind doesn't include a grid and I have to imagine this is because they figured, well they can just use CSS grid/flexbox for such things.

Open props is an interesting approach I've come to discover. It uses CSS custom properties similar to how a utilities framework would but seems liberating a bit. You could certainly look at that code and create your own custom custom props utilities quite easily.

I created AgnosticUI which is a component-based framework probably similar in many respects to Bootstrap as I use SMACSS or class chaining, but I sprinkle some utilities in there minimally. I had a huge Flexbox based grid abstraction that I gutted because I agree that in 2022 it's time for folks to just use platform CSS for this stuff.

Btw, we should also use logical properties! replace margin-left with margin-inline-start. If you don't know why or haven't heard of these things I strongly suggest googling it! Global writing modes for free. IE11 will EOL June 15. No need to worry about it! Embrace the platform and use CSS frameworks intelligently and only import modules you actually use or fork the project and create your own custom system. The creators will not be offended (unless you repurpose it as a framework of course lol).

And lastly, of course you must learn some CSS whichever way you go but you can do it!! 💪 ⭐ 🙌

Collapse
 
louislow profile image
Louis Low • Edited

I personally prefer WEAVV been using it for years.

GitHub logo weavv / weavv-css

A colossal low-level utility CSS framework for crafting a beautiful and elegant user interface at an atomic level

image

A colossal low-level utility CSS framework for crafting a beautiful and elegant user interface at an atomic level.

Version 1.0.1

Documentation

Tools

Build

$ git clone https://github.com/weavv-css/weavv-css.git
$ cd weavv-css
$ npm install
Enter fullscreen mode Exit fullscreen mode

Build full version,

$ npm run build-full
Enter fullscreen mode Exit fullscreen mode

Build minimal version,

$ npm run build-min
Enter fullscreen mode Exit fullscreen mode

Build file is locate in ./dist/ directory.

Community

Credits

Sass, NodeJs, Gulp, Normalize, PostCSS.


MIT




Collapse
 
gabrielizalo profile image
Gabriel Porras

These and more Frameworks and Libs in this repo: github.com/gabrielizalo/Awesome-CS...

Collapse
 
barakplasma profile image
Michael Salaverry

try mvp.css andybrewer.github.io/mvp/
"A minimalist stylesheet for HTML elements
No class names, no frameworks, just semantic HTML and you're done."

Collapse
 
davidteren profile image
David Teren • Edited

Great list of options to help us choose the right tool for the job ;)

My take on this based on some pains and learning from others;

  • Foundation UI - Design Driven Development (designs are in place) - bigger teams
  • Tailwind - Develop and Style as you go and possible prototyping. - smaller teams
  • Bootstrap - Prototyping Features and require some UI
  • Formantic UI - Personal or Smaller Projects requiring options & components

Note that Semantic UI is no longer maintained for over two years now. The Formantic UI fork is actively maintained. I've used this on projects.

Collapse
 
heyrohit profile image
Rohit Gupta • Edited

I personally use milligram.io/. I have been using it for a long time just to prototype some projects.

I like how skeleton comes close.

Collapse
 
lizabudovska profile image
Liza Budovska

Hi.Please take a look on agilecss.com CSS framework and UI kit, it provides some unique features not available in other frameworks, for example all the common used UI elements without JavaScript.

Collapse
 
roileo profile image
roiLeo • Edited

MaterializeCSS has a new github repository

GitHub logo materializecss / materialize

Materialize, a CSS Framework based on Material Design

MaterializeCSS

Materialize, a CSS Framework based on material design
-- Browse the docs --

GitHub Actions badge npm version badge jsDelivr version badge dependencies Status badge devDependency Status badge Gitter badge

Table of Contents

Quickstart:

Read the getting started guide for more information on how to use materialize.

  • Download the latest release of materialize directly from GitHub. (Beta)
  • Clone the repo: git clone https://github.com/materializecss/materialize.git
  • Include the files via jsDelivr.
  • Install with npm: npm install @materializecss/materialize (Beta: npm install @materializecss/materialize@next)

Documentation

The documentation can be found at materializecss.github.io/materialize. To run the documentation locally on your machine, you need Node.js installed on your computer.

Running documentation locally

Run these commands to set up the documentation:

git clone https://github.com/materializecss/materialize
cd materialize
npm install
Enter fullscreen mode Exit fullscreen mode

Then run npm run dev to compile the documentation. When it finishes, open a new browser window and navigate to localhost:8000/docs. We use BrowserSync to display the documentation.

Documentation

EDIT: and yet another sponsored post

Collapse
 
theme_selection profile image
ThemeSelection

We prefer the original Repo created by Author: github.com/dogfalo/materialize which is mentioned on the framework materializecss.com/ website too.

Collapse
 
machineno15 profile image
Tanvir Shaikh

Very well documented , amazing and very helpfull , Thanks

Collapse
 
axelbriche profile image
AxelBriche

Where is unocss?
And Fundation is dead from years now.

Collapse
 
leonardorafael profile image
Leonardo Rafael Wehrmeister • Edited

My team uses beercss.com. We are very happy with it. And it's nice for PWAs.

I'm a contributor and developed some templates here codepen.io/collection/nMNQvq

Do you like it?

Collapse
 
theme_selection profile image
ThemeSelection

Thanks for your input, updated it.

Collapse
 
getlookover profile image
Get Lookover

The newest CSS framework now is Get Lookover,
Check out our website to use it:
get-lookover.github.io/

Collapse
 
aa82851391 profile image
Avabucks

Here are outher pure CSS frameworks:

  • avabucks.it/
  • getmdl.io
  • mseemann.io/angular2-mdl/