I'm trying to experiment with Tailwind. It seems so... Scattered and difficult to keep track of. Should I push through and keep practicing with this method of styling or is normal CSS still going to be around for the foreseeable future?
I like structured and grouped stuff I guess.
Latest comments (51)
You can use the Tailwind CSS Intellisense. If you have idea about bootstrap then tailwind is easy to understand. You can create any kind of websites without writing single extra CSS. I created 2 landing pages like that only. Final word Tailwind is super dooper
2 landing pages is, no offense, small enough that I could memorize it.
Where I'm struggling is when you have a lot of pages and all the HTML is heavily... "Cluttered."
It's depends how you are reusing the variables from Tailwind Config. You should have the plan when you are starting the project. Like colors, button sizes, border radius and everything. Only you are going to reuse that. Then whenever new designs you are adding you have to add that in config. Another biggest advantage for tailwind is arbitrary values. You can add particular styles in class itself. But you can't reuse those values again. So if you are creating big application or small application it does not matter. If you are reusing the styles properly, Then outcome will be really nice. Thanks
Tailwind is seriously popular these days keep at it eventually you will figure it out. All you need is more time and practice to get good with it.
Wow, this is some hell of a fight of arguments here đ.
I am the author of Stylify and I will try to clarify some points in the thread above and bellow:
Why would anybody use such syntax
auto-cols-autois a class from Tailwind. The class is not self explanatory and a dev not using Tailwind daily have to go into the docs or into the dev tools to see what it does. In Stylify you write thisgrid-auto-columns:auto. Everyone with a bit of knowledge CSS knows what that does.shrink=>flex-shrink: 1;(class from Tailwind). The browsers come with, for example a newshrink: auto. Then they will have to figure out a new name for the new selectory so it makes sense. Which can be confusing.<div class="page-section__container page-section__container--full-size page-section__container--without-background"></div>. I can't see howproperty:valueselectors are more bad then this.Shure, Stylify syntax might not be for anyone. You can however define custom macros for having classes like
ml-2orpy-3if you like it more. It's just a Native Preset that you can ignore and define custom set.There is plenty of hardcoded values
Why not to put the style directly into the style="" attribute
color:redis generated as.color\:red{color:red}. This selector can be reused..buttonthat needs red text, it is generated like this.color\:red,.button{color:red}. The selector is simply attached, reused and theproperty:valuenot generated again => This means smaller bundles._zs,_zx{color:red}. This is done even by Medium.com and Facebook.const myValuetoconst zxand nobody cares.Advantages over pure CSS
.color\:red,.button{color:red}text-align:leftto short_zxproperty:value. There is some article about CSS size from FacebookBloated templates & maintainability
Separation of CSS from HTML
Although I'm developing Stylify and I like the Utility-First + Components approach and dynamically generated CSS, I understand it doesn't fits everyone. Therefore, it's good that there are more tools that do a good job like Tailwind, Bootstrap, Bulma and various approaches so everyone can use whatever suits them. Different tools and approaches for different needs đ¤.
Thanks @lukeshiru for the persistent and extensive comments in a favor of Stylify.dev â¤ď¸.
First off:
That thanks goes back to you, on top of it (I can't believe I write this): Thank you for staying on topic.
I do understand your points, and while I can't relate, I figure: The concept doesn't have to work for me as long as it does for you.
A few closing words from my side:
It was the first quote I stumbled across. If I were to pick something more substantial, I'd go for Adam Wathan's article in which he speaks about his transition from "Semantic CSS" to "Utility first".
What even this article is missing: Global CSS variables. I'm talking about the
color-brandortext-smallthat exist above your modular style scope.Granted, you can extend Tailwind with your own classes. But I don't want to play hide and seek with colors when receiving feedback from a client. Imagine they want each h1 tag in gray-200 colors now instead of gray-300 when:
The only change I'd like to make is the variable
--text-color-primaryand be done with it. The rest will be handled by SCSS utility functions.Can't agree. CSS is, indeed, a layer on top of structured HTML. It can-and imo. has to-be abstracted to make it maintainable. And changeable within a reasonable amount of time. Within a CSS structure, I then separate again-between variables, base styles, component styles, utility styles, and so forth.
This is (almost) also true for components. But extending components by, say variants with Tailwind or Stilify, will undoubtedly lead to unreadable templates.
I think I caught you here. The idea of sharing is only possible if you actually do separate by concerns. For instance, inline styles cannot be shared. Stilify CSS can, because it feels like reverse-engineered inline styles.
And I'm fully with you: Why declare styles in your HTML while you can do the same in CSS?
To me Tailwind feels like the CSS equivalent of JQuery: it's a supposedly easier alternative for those who don't want to learn CSS properly đ¤Ł
If you're not comfortable with Tailwind just use CSS or an established preprocessor like SCSS.
Well⌠this is getting awkwardâŚ
Can you please explain what do you mean by akward?
I see. Although I can use rems, sure, and just change the size of rems - I think specifying an actual unit type in your css class still has a smell for me. It could just be personal preference, since Iâm used to abstracting away unit types in class names. But I think the authors goal is to remove the unit abstractions, since one of his pain points of tailwind was remembering class names.
I see that the author put a lot of love into the stylify framework. Reading his post and another of his follow up post, he makes a good argument that itâs a pain to remember class names of other frameworks. I wonât trash his work since the author is passionate, and what works for him works. Just not for me I suppose.
Thanks a lot for this extensive answer, I wasn't familiar with Atomic CSS (but I was with Tailwind, and it's more or less the same concept) ...
I see what you mean, same as Tailwind this is to be used in the context of a framework like React or Vue that allows you to create components, hence solving the problems of "repetition" and "consistency" ... you wouldn't want to create a large site with heaps of HTML where you duplicate
class=background-color:#023a hundred times across your codebase.You can define components, variables and custom macros (like
my-2) in Stylify if you need to. Therefore you don't have to have such repetative code.More => dev.to/machy8/comment/1p2jj
Thanks for explaining that, so with these variables you avoid sprinkling hardcoded RGB values or hardcoded font/padding/margin sizes all over your codebase ... I do understand the advantages of this approach, traditional CSS stylesheets also have their problems.
Not sure what benefit of this is vs just normal css. The thing that I like about tailwind, and bootstrap utility classes as well, is that text, spacing, colors, grid systems, gaps, etc. all have abstracted units of size. For example, if I type âtext-xlâ or âpx-8â, tailwind has a standard pixel size that are applied to these class names. You never have to hard code the actual pixel size. This gives you the benefit of changing what text-xl means in a single config file â almost like CSS variables.
This other approach, the one where youâre rewriting css inside class names, does not solve the same problem tailwind does.
I will asume that you are using React, Vue or some sort of framework with it.
If that is the case, you building components. each component has it's own classes and as best practive of component based project you want to splint everything in the small reusible pieces. At that point you end up with not that much messy classes per component. And when you need to look in each component, you can see it's functionality & style in case file. ( building it is great too as you don't need to swap between files for style & functionality ).
i use tailwind with all my projects and i thinks it's a great too as it's not opinionated and simple to understand at glance.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.