Articoli

Dec 26, 2025

preview

Introduzione

Tailwind CSS è popolare e potente, ma non è sempre la soluzione migliore. Nei nostri progetti strutturati, con molti componenti e stili custom, abbiamo scoperto che può complicare più che semplificare.

In questo articolo spieghiamo perché secondo noi, in certi contesti, il CSS tradizionale resta più efficace.


Complessità

Tailwind può diventare difficile da gestire quando i progetti crescono. Classi inline lunghe e ripetitive rendono il codice meno leggibile e più complicato da mantenere nel tempo.

Ogni aggiornamento o refactor può diventare rischioso, soprattutto se il design cambia frequentemente.


<button
  class="
    font-medium rounded-lg px-4 py-2 md:px-6 md:py-3 transition-all duration-200 ease-in-out
    data-[variant=primary]:bg-blue-600
    data-[variant=primary]:text-white
    data-[variant=primary]:hover:bg-blue-700
    data-[variant=primary]:focus:ring-4
    data-[variant=primary]:focus:ring-blue-300
    data-[variant=primary]:disabled:bg-blue-300
    data-[variant=primary]:disabled:cursor-not-allowed
    data-[variant=secondary]:bg-white
    data-[variant=secondary]:text-gray-800
    data-[variant=secondary]:border
    data-[variant=secondary]:border-gray-300
    data-[variant=secondary]:hover:bg-gray-100
    data-[variant=secondary]:focus:ring-4
    data-[variant=secondary]:focus:ring-gray-200
    data-[variant=secondary]:disabled:bg-gray-200
    data-[variant=secondary]:disabled:text-gray-400
    data-[variant=secondary]:disabled:cursor-not-allowed
    data-[variant=outline]:bg-transparent
    data-[variant=outline]:border-2
    data-[variant=outline]:border-purple-600
    data-[variant=outline]:text-purple-600
    data-[variant=outline]:hover:bg-purple-600
    data-[variant=outline]:hover:text-white
    data-[variant=outline]:focus:ring-4
    data-[variant=outline]:focus:ring-purple-300
    data-[variant=outline]:disabled:border-gray-300
    data-[variant=outline]:disabled:text-gray-400
    data-[variant=outline]:disabled:cursor-not-allowed
    text-sm md:text-base lg:text-lg
    font-normal md:font-semibold lg:font-bold
    uppercase md:capitalize
    tracking-wide md:tracking-wider
    leading-tight md:leading-snug
    italic md:not-italic
    hover:underline focus:line-through
    decoration-2 decoration-white md:decoration-blue-200
    shadow-sm md:shadow-lg
  "
>
  Bottone
</button>

Personalizzazione

Progetti con stili custom richiedono flessibilità. Con Tailwind, creare eccezioni o modifiche puntuali spesso significa scrivere override complessi o estendere configurazioni già intricate.

Il CSS tradizionale, invece, permette di definire regole chiare, riutilizzabili e facilmente scalabili senza workaround.


Manutenzione

Quando il team cresce, la manutenzione diventa cruciale. Classi utility sparpagliate nel markup rendono più difficile capire quali regole influiscono su un componente specifico.

Con CSS modules, invece, ogni componente ha i suoi stili isolati e facilmente modificabili.


Performance

Il bundle generato da Tailwind è solitamente più piccolo rispetto a soluzioni CSS tradizionali, grazie al sistema di purge che elimina tutte le classi inutilizzate dal file finale.

Tuttavia, nei nostri progetti non abbiamo riscontrato differenze significative in termini di performance tra l’utilizzo di Tailwind e quello di CSS tradizionale.


Conclusione

Tailwind CSS è ottimo per prototipi veloci o progetti piccoli, ma nei progetti strutturati con stili complessi può introdurre più problemi che vantaggi. Il CSS tradizionale offre leggibilità, manutenzione e controllo, diventando la scelta più solida per sistemi grandi e longevi.