Back to Blog Index

Tailwind, Happy To Meet You!

Removing the pain from CSS is actually just a dependency away!

Web DevelopmentCSSTailwind
Stefano Rebulla
May 8, 2025
13:39 CEST
9 min
Tailwind, Happy To Meet You!

A Painful Start

As I have explained elsewhere, my web developer career started with a series of problems, pitfalls, and painful experiences: "The PPP©" as I call them. Back when I had enough time to play around with Microsoft FrontPage "when the web was cool", and whenever I stumbled onto some HTML code after that, I did get an understanding about how HTML was structured, and how its elements worked in the layout of the webpage. If you've never had any web dev experience, it's hardly rocket science... There are <tags>, which are a small number of elements like <h1> that will indicate content to your browser, and it will then build it out in a way that will (mostly) look the same on any platform.

Side Note

This will surprise only the fewest web developers, except for those coming out of hibernation in 2025: HTML and CSS are not "languages in the formal sense", i.e. they are more "syntax frameworks" that use keywords to define content and functionality, that the web browser will then render into visual elements. A large share of web developers share this view, and some other still try to fight it, but I am no judge here. Proof of this, however, is that any browser can introduce slight variations when rendering the exact same code, and is also why modern websites need to be checked against most browsers, if reaching the largest possible audience is important.

Proper programming languages, like Swift or C, include "program structures", i.e. keywords that enable logic inside the code, which can be boiled down to "if this, then that". After all, even the BASIC I learned as a kid was centered around these building blocks in their code. That's all I am going to say right now, but I do see this is a hot topic even today.

Party Like It's 1999 2000!

When building websites was still a novel concept to most, more and more people felt the need to express themselves through the "open and free world of cyberspace™", meaning that a new and booming industry was created, which taught the average computer user how they could get their own website up and running "with just a few clicks". Many new tools were created to enable the feeding frenzy of the "Web Generation", and one I personally got to try and use was Microsoft's FrontPage.

I did buy a copy of this... Copyright: IDG
I did buy a copy of this... Copyright: IDG

At end of the '90s I was working for a computer distributor, and the local Microsoft team and execs were very welcome in our cubicles. Not only was Windows 98 becoming the OS that all consumers wanted for their new PC, but the new B2B reality was empowering small and medium businesses to adopt Microsoft's Office as the standard platform to communicate. Whether .doc format for word processing, or .xls for spreadsheets, Microsoft was ramping up to become the monopoly it remained for many years thereafter. As the money was currently certainly not a problem for Microsoft (until they had to give up some of it later...), they were also very convincing with us sales reps by providing us with free official copies of Windows (ME, 2000 and later XP), as well as Office Professional suites, which we could install on our home computers to try out. This is when I installed the latest Office Professional 2000 NFR (Not For Resale) copy on my PC, and started exploring FrontPage 2000, which I had never used before.

While I never got around to, or even wanted, for that matter, to have a personal website back then, I did spend some time to play around with the tool I had, to understand what it was capable of (does anyone out there realize how this was just a couple of years before we started spending our entire lives on the internet...?), and if I would eventually want to create a website of my own. Here I started learning about HTML, and the structured syntax it uses to generate web content. That's when I bought the book above. CSS was available, but not really a requirement at the time, so I did not spend much time understanding what it could do, if at all.

What Is CSS?

During that experience, CSS (for: Cascading Style Sheets) was still in its infancy, and, as I mentioned, I did not really get any meaningful experience with it until quite recently. Of course I eventually came to understand that it had become a cornerstone of web development, but never explored it in any meaningful detail. Turns out: CSS is hard (though very important)!

You see, if the text or background color on the website is the way you are seeing it, this is because of a CSS "declaration" that specifies how that element should look. CSS can not only change a font size or background color, but also nearly everything you see on any modern website. It can change an HTML element's size, layout, and color, just to name the most important ones. But CSS also has a very, very unique requirement: the "cascading" part of its name.

Most people will look at an HTML structure of a webpage, and create the corresponding CSS code to accompany it in bits and chunks, and this will be mostly fine. But CSS can quickly come back to haunt you in your dreams if those declarations are not laid out carefully. The CSS code is read by the browser like a program from the 1970s, i.e. from the top to the bottom of the code. If you define a text color as red at the top of the CSS file, and later, sometimes much later, change it to blue for any reason, all the elements on the page will (most likely) show up as blue!

Caveat

CSS has a concept of "specificity" which I will not get into here, because fully understanding it can take years, and I am nowhere near that level of expertise. Generally however, if a plain HTML element is tagged with, say, a different text color later in the file, all same HTML elements will adopt the new color. This is why modern CSS implements "classes", which are ways of closer defining exactly which elements of a particular type should adopt a specific style. Yes, there are tools online to help with this, but it's #YARH I am not willing to dive into on my own free will. Sue me, Kevin Powell! 😁

As you see, things have evolved in many different directions, and it is indeed complicated to understand all the nuances of every possible approach. One big issue with CSS is that the files can become very unwieldy, as in hundreds of lines long, and for not even very complex page layouts. It is true that CSS has been evolving over these years, and new elements and building blocks have been introduced. But the "browser wars" have been complicating life for devs, and users, ever since...

Enter Sandman Tailwind

TailwindCSS was born in 2017, as a tool to help modern web developers tackle the inherent complexity of using "plain vanilla" CSS in web development, and started getting noticed in the early 2020s as a potential substitute for the classic CSS code that had been required to build websites. Its concept is surprisingly simple and straightforward: how about having classes, as they are already being used in plain CSS, that allow the developer to remember "what the f* this is for" by using terms that are easy to remember? While standard CSS can contain literally any term to define a class, this approach simplifies the categories in a way that is actually easy to remember, based on the context you are dealing with. Want to change a text color? Use text-blue-500 to use a medium hue of blue. bg-slate-700 is a nice background shade you could use to style your page. Similarly, mb-4 or pb-4 define margin and padding of an element, respectively, only on the bottom, by 4 pixels, of the element you are calling this on.

Now, in 2025, we have TailwindCSS version 4, and it has brought many updates to make it even easier to use. You can read up on the changes yourself, if you wish, but I am going to stick to my personal journey here. When I learned that Tailwind is available as a direct module for Nuxt, I was sold on both. Not only was Tailwind making CSS actually easy to use, but also Nuxt was what I wanted web development to be, at my level of experience, with its optimizations, the hot reloading while developing, and the availability of lots of online content about how these frameworks function. It's not all smooth sailing, as I do have a couple of issues and wishes for future Nuxt and Tailwind development, but the learning curve has been very reasonable so far.

Thank you for reading this far once again, please stay tuned for more insights in my new developer experience!