I haven’t delved deep enough into it to be able to say for sure, but I believe what you describe here is just what LESS and SaSS do and it seems like its what a lot are moving to using it.
The real problem with CSS is not that the language is bad designed, although I do agree that it could be better, its actually that browsers are notoriously bad at getting their implementation of the specification right. Certainly they were, Google has changed that and the others are all catching up, but most of the “hack” you are probably referring to are not problems with the language but the browsers interpretation of them.
Variables etc are being added to the CSS spec, see https://www.w3.org/TR/css-variables/
You my friend is about to have your brains blown away ![]()
You can use variables in CSS. No LESS, and NO SASS.
do this in CSS
:root { --myVariable:#FFFFCC; }
body { background-color:var(--myVariable); }
I absolutely had no idea. Thanks!
@danMontague & @Cowwy Wooooah!!! Okay, I had no idea either. Pretty neat!
I’ve found the idea browser for you!
@JohnnyBizzel nice! I love me a text browser
Now instead of a ton of messy table tags you have a ton of messy CSS properties. 
I could be wrong but I wouldn’t be surprised if the complexity of CSS is part of the reason it took web browsers so long to start getting it right.
I do not like it in a box
I do not like it with a fox
I do not like css
I do not like it what a mess
Your partly right. It was actually the ambiguity of the specification documents. The css commits that creates the specs left a lot of room for browsers vendors to determine how they implemented the spec. In recent years browsers have listened to the dev community to work out how things should be done and that is why things are now at their best with how CSS is implemented
Try using bootstrap.
I’ve tried bootstrap and some other frameworks and they make certain things less painful but I’m trying to learn the underlying technology because it’s less susceptible to change.
I think it’s a good idea generally when trying to really learn something but especially in a field like this where it seems every month there’s a trendy new framework being released and everybody is tripping over themselves to get rid of the one they were using last month.
Like anything new, it can seem daunting to try to learn all there is to learn.
I have found CSS frustrating in the past such as the hassle of trying to centre things on the page with margin: 0 auto for example. Not intuitive like you say!
In old money this was just <center>-some content-</center>
Historically CSS was brought in for the purpose of “Separation of concerns”. You may have come across this term.
- HTML is responsible for content.
- CSS is responsible for layout and styles.
Semantically a Table is for tabular data. Not for layout. If you use this as a rule, you will be fine. So much of what is in CSS now (eg a:hover) you would have had to write lots of code to get the same effect so just be glad there are so many ways to do things with CSS because your website will look all the better for it!!
@drguildo you are totally right there. There are loads and loads of these frameworks and grid systems and theme creators and…and…and.
Learning vanilla CSS before anything else is most definitely the best solution as you will then be able to debug these frameworks if any issues arise! 
That’s funny, I actually love CSS
It’s so delightful to change the css a bit, and you’ll see a completely different site, which is more beautiful than the previous version. Of course, CSS is a bad language, and sometimes it’s very frustrating (like "Sh*t, I hate this, I don’t want to become a developer anymore :’( "), but … there isn’t an alternative 
I’ll freely admit one of the reasons I don’t like CSS is I’m not good at it. Unfortunately I haven’t found a more systematic way to get good at it so I’m relying on reading scraps of information and experimenting.
I’ve been trying to learn CSS for over 2 weeks now and I’m still a complete noob at it. Most of my time is consumed by wrestling with the layout, trying to make things work as I want them to. It’s a struggle, but I’m sticking with it since CSS is something I want to be really good at.
I’m currently learning Flexbox at the moment. I find it more intuitive. Maybe it’ll make more sense for you too.
Would highly recommend that you try layout using tables, then divs, then flexbox. To get an all rounded knowledge of possibilities with css.