CSS Classes Utility-first con Tailwind in React

Installiamo e configuriamo Tailwind CSS in un progetto React. Utilizziamo le utility class di Tailwind per creare layout, griglie, card e intestazioni di testo.

CSS Classes Utility-first con Tailwind in React

Tailwind CSS è un framework CSS che adotta un approccio utility-first, che rappresenta la sua caratteristica principale e distintiva.

Invece di creare classi basate sui componenti (come pulsanti, pannelli, menu, caselle di testo, ecc.), Tailwind costruisce le sue classi attorno a specifici elementi di stile (come colore giallo, testo in grassetto, testo molto grande, centratura di un elemento, ecc.). Ogni una di queste classi è chiamata utility class.

Cos'è una Utility Class?

Una utility class è una singola classe CSS che applica uno stile specifico e definito. Questo approccio offre un gran livello di controllo e flessibilità, poiché permette agli sviluppatori di comporre le interfacce utente direttamente nel markup HTML senza la necessità di scrivere CSS personalizzati.

HTML
<h1 class="text-3xl font-bold underline"> Hello world! </h1>

Le utility class di Tailwind sono progettate per essere piccole e riutilizzabili, facilitando la costruzione di componenti complessi.

Vantaggi dell'approccio Utility-First

  • Rapidità nello sviluppo: utilizzare le utility class permette di costruire rapidamente interfacce complesse senza dover scrivere CSS personalizzato
  • Coerenza: le utility class garantiscono che gli stili applicati siano coerenti attraverso tutto il progetto
  • Manutenibilità: il codice HTML diventa più leggibile e facile da mantenere, poiché gli stili sono direttamente visibili nel markup
  • Eliminazione del CSS non utilizzato: Con strumenti come PurgeCSS, è possibile rimuovere le utility class non utilizzate nella produzione, riducendo la dimensione del file CSS finale

Procediamo con l'installazione e l'utilizzo di Tailwind in React!

Se non hai già un progetto React, creane uno nuovo utilizzando Create React App:

Terminal
npx create-react-app mio-progetto-react-tailwind cd mio-progetto-react-tailwind

Installiamo Tailwind

Terminal
npm install -D tailwindcss npx tailwindcss init

Configuriamo Tailwind su React, attraverso il file di configurazione precedentemente creato tramite il comando npm tailwindcss init: tailwind.config.js/ts:

JavaScript
// tailwind.config.js/ts /** @type {import('tailwindcss').Config} */ module.exports = { content: [ "./src/**/*.{js,jsx,ts,tsx}", ], theme: { extend: {}, }, plugins: [], }

Una volta effettuato questo passaggio di configurazione, andremo ad importare Tailwind all'interno del nostro environment CSS.

Supponiamo tu stia utilizzando la configurazione precedentemente mostrata e che quindi, all'interno della directory src, troviamo il file App.css creato con Create React App.

Importiamo le keys di Tailwind in questo modo:

CSS
// App.css @tailwind base; @tailwind components; @tailwind utilities;

A questo punto, Tailwind CSS è configurato e pronto per l'uso nel tuo progetto React.

Utilizziamo le classi di utilità di Tailwind

Procediamo con una carrellata di esempi di alcuni possibili componenti Tailwind:

Esempio di Layout

JavaScript
const Layout = () => { return ( <div className="container mx-auto p-4"> <header className="bg-blue-500 text-white p-4"> <h1 className="text-2xl">Benvenuti su artCode</h1> </header> <main className="mt-4"> <p className="text-gray-700">Questo è il contenuto principale.</p> </main> <footer className="bg-blue-500 text-white p-4 mt-4"> <p>© 2024 artCode footer</p> </footer> </div> ); };

Esempio di una griglia con tre colonne

JavaScript
const Grid = () => { return ( <div className="grid grid-cols-3 gap-4 p-4"> <div className="bg-red-500 text-white p-4">Colonna 1</div> <div className="bg-green-500 text-white p-4">Colonna 2</div> <div className="bg-blue-500 text-white p-4">Colonna 3</div> </div> ); };

Esempio di un componente Card

JavaScript
const Card = () => { return ( <div className="max-w-sm rounded overflow-hidden shadow-lg m-4"> <img className="w-full" src="https://via.placeholder.com/600" alt="Placeholder" /> <div className="px-6 py-4"> <div className="font-bold text-xl mb-2">Titolo della Card</div> <p className="text-gray-700 text-base"> Questo è un esempio di descrizione di una card. </p> </div> <div className="px-6 pt-4 pb-2"> <span className="inline-block bg-gray-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2 mb-2"> #artCode </span> <span className="inline-block bg-gray-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2 mb-2"> #quizzo </span> <span className="inline-block bg-gray-200 rounded-full px-3 py-1 text-sm font-semibold text-gray-700 mr-2 mb-2"> #tag </span> </div> </div> ); };

Esempio di possibili intestazioni di testo

JavaScript
const TextHeaders = () => { return ( <div className="p-4"> <h1 className="text-4xl font-bold mb-4">Titolo H1</h1> <h2 className="text-3xl font-semibold mb-4">Titolo H2</h2> <h3 className="text-2xl font-medium mb-4">Titolo H3</h3> <p className="text-lg text-gray-700">Questo è un paragrafo di esempio.</p> </div> ); };

Come mostrato negli esempi, Tailwind CSS offre una vasta gamma di classi di utilità che semplificano la creazione di layout e componenti React.

Il concetto utility-first di Tailwind CSS rappresenta un cambiamento significativo rispetto ai tradizionali approcci di sviluppo CSS. Questo metodo permette agli sviluppatori di essere più produttivi e di mantenere un codice pulito e modulare, migliorando così l'esperienza complessiva di sviluppo frontend.

Prova a sperimentare con le diverse classi di utilità per vedere quanto possono migliorare il tuo flusso di lavoro di sviluppo!