martedì 17 marzo 2026

Corso di CSS & Web Design: 7 – Responsive Design

7 – Responsive Design

1. Concetto di mobile-first

Responsive Design significa che il layout e i contenuti di una pagina web si adattano automaticamente alle dimensioni dello schermo del dispositivo (desktop, tablet, smartphone).

Principio mobile-first

  • Si sviluppa il layout base per dispositivi mobili.

  • Successivamente si aggiungono regole CSS per schermi più grandi tramite media queries.

  • Vantaggi:

    • Migliore performance su mobile.

    • Approccio progressivo e modulare.

/* Stile base (mobile) */
body {
  font-size: 16px;
  padding: 10px;
}

2. Media Queries e breakpoints

2.1 Sintassi di base

@media (min-width: 768px) {
  /* regole per tablet e superiori */
}

@media (min-width: 1024px) {
  /* regole per desktop */
}
  • min-width → mobile-first

  • max-width → desktop-first

  • È possibile combinare condizioni multiple:

@media (min-width: 768px) and (max-width: 1023px) {
  /* tablet */
}

2.2 Breakpoints comuni

Dispositivo Breakpoint suggerito
Mobile 0 – 767px
Tablet 768 – 1023px
Desktop 1024 – 1440px
Large Desktop >1440px

3. Tecniche per adattare contenuti

3.1 Immagini responsive

  • max-width: 100%; height: auto;

img {
  max-width: 100%;
  height: auto;
}

3.2 Menu responsive

  • Nascondere il menu principale su mobile e sostituirlo con hamburger menu:

.navbar {
  display: flex;
  flex-direction: column; /* mobile */
}
@media (min-width: 768px) {
  .navbar {
    flex-direction: row; /* desktop */
  }
}

3.3 Griglie responsive

  • Usando Flexbox:

.grid-item {
  flex: 1 1 100%; /* mobile: una colonna */
}

@media (min-width: 768px) {
  .grid-item {
    flex: 1 1 48%; /* tablet: due colonne */
  }
}

@media (min-width: 1024px) {
  .grid-item {
    flex: 1 1 30%; /* desktop: tre colonne */
  }
}
  • Usando CSS Grid:

.container {
  display: grid;
  grid-template-columns: 1fr; /* mobile */
  gap: 15px;
}

@media (min-width: 768px) {
  .container {
    grid-template-columns: 1fr 1fr; /* tablet */
  }
}

@media (min-width: 1024px) {
  .container {
    grid-template-columns: 1fr 1fr 1fr; /* desktop */
  }
}

4. Introduzione a framework CSS

4.1 Bootstrap

  • Sistema a 12 colonne.

  • Classi predefinite: .container, .row, .col-md-6, .d-flex, .text-center.

  • Permette di creare layout responsive con poche righe di codice.

<div class="container">
  <div class="row">
    <div class="col-md-6">Colonna 1</div>
    <div class="col-md-6">Colonna 2</div>
  </div>
</div>

4.2 Tailwind

  • Framework utility-first: classi rapide per padding, margin, colori, flex, grid.

<div class="flex flex-col md:flex-row gap-4">
  <div class="bg-blue-500 p-4">Colonna 1</div>
  <div class="bg-green-500 p-4">Colonna 2</div>
</div>

5. Esercizio svolto: rendere responsive una pagina portfolio

Obiettivo

Creare una pagina portfolio con griglia di progetti che si adatta a mobile, tablet e desktop.

HTML

<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <title>Portfolio Responsive</title>
  <link rel="stylesheet" href="stile.css">
</head>
<body>
  <header class="header">Portfolio</header>
  <nav class="navbar">
    <a href="#">Home</a>
    <a href="#">Progetti</a>
    <a href="#">Contatti</a>
  </nav>
  <main class="container">
    <div class="project">Progetto 1</div>
    <div class="project">Progetto 2</div>
    <div class="project">Progetto 3</div>
    <div class="project">Progetto 4</div>
    <div class="project">Progetto 5</div>
  </main>
  <footer class="footer">© 2025 Portfolio</footer>
</body>
</html>

CSS (stile.css)

body {
  margin: 0;
  font-family: Arial, sans-serif;
}

.header, .footer {
  background-color: #333;
  color: white;
  text-align: center;
  padding: 20px;
}

.navbar {
  display: flex;
  flex-direction: column;
  background-color: #555;
}

.navbar a {
  color: white;
  padding: 10px;
  text-decoration: none;
  text-align: center;
}

@media (min-width: 768px) {
  .navbar {
    flex-direction: row;
    justify-content: center;
  }
  .navbar a {
    margin: 0 15px;
  }
}

.container {
  display: grid;
  grid-template-columns: 1fr; /* mobile */
  gap: 15px;
  padding: 15px;
}

.project {
  background-color: #4fa3f2;
  color: white;
  padding: 20px;
  border-radius: 10px;
  text-align: center;
}

/* Tablet */
@media (min-width: 768px) {
  .container {
    grid-template-columns: 1fr 1fr;
  }
}

/* Desktop */
@media (min-width: 1024px) {
  .container {
    grid-template-columns: 1fr 1fr 1fr;
  }
}

Risultato

  • Navbar verticale su mobile, orizzontale su tablet e desktop.

  • Portfolio con 1 colonna su mobile, 2 colonne su tablet, 3 colonne su desktop.

  • Design responsivo e pulito, adattabile a qualsiasi dispositivo.


lunedì 16 marzo 2026

Corso di CSS & Web Design: 6 – Immagini, sfondi e media

6 – Immagini, sfondi e media

1. Proprietà background

CSS consente di gestire lo sfondo di un elemento tramite varie proprietà.

1.1 Colore di sfondo

div {
  background-color: #f2f2f2; /* colore chiaro */
}

1.2 Immagine di sfondo

div {
  background-image: url('immagine.jpg');
  background-repeat: no-repeat; /* evita ripetizioni */
  background-position: center;   /* centro della cella */
  background-size: cover;       /* copre tutta l’area del box */
}

1.3 Gradiente

  • Lineare:

div {
  background: linear-gradient(to right, #ff7e5f, #feb47b);
}
  • Radiale:

div {
  background: radial-gradient(circle, #6a11cb, #2575fc);
}

2. Controllo sulle immagini

2.1 Object-fit

Determina come un’immagine si adatta all’elemento contenitore:

Valore Funzione
fill Riempie tutto lo spazio, distorcendo se necessario
contain Si adatta senza ritagliare
cover Riempie senza distorsione, ritagliando se necessario
none Mantiene dimensioni originali
scale-down Scala verso il basso se necessario

Esempio

img {
  width: 300px;
  height: 200px;
  object-fit: cover;
  border-radius: 8px;
}

2.2 Background-size

  • Controlla la dimensione dell’immagine di sfondo:

div {
  background-size: cover;   /* copre tutta l’area */
  background-size: contain; /* tutta l’immagine visibile */
}

3. Icone e SVG

3.1 Icone

  • Possono essere inserite come immagini (<img>) o tramite librerie tipo Font Awesome.

<i class="fas fa-home"></i>

3.2 SVG

  • Immagini vettoriali scalabili:

<svg width="100" height="100">
  <circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
  • Vantaggi: scalabilità senza perdita di qualità e controllo tramite CSS.

4. Esercizio svolto: galleria fotografica con hover effect

Obiettivo

Creare una galleria di immagini che cambia stile al passaggio del mouse (hover).

HTML

<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <title>Galleria CSS</title>
  <link rel="stylesheet" href="stile.css">
</head>
<body>
  <div class="gallery">
    <div class="photo"><img src="https://via.placeholder.com/300x200" alt="Foto 1"></div>
    <div class="photo"><img src="https://via.placeholder.com/300x200" alt="Foto 2"></div>
    <div class="photo"><img src="https://via.placeholder.com/300x200" alt="Foto 3"></div>
  </div>
</body>
</html>

CSS (stile.css)

body {
  font-family: Arial, sans-serif;
  background-color: #f2f2f2;
  display: flex;
  justify-content: center;
  padding: 50px;
}

.gallery {
  display: flex;
  gap: 20px;
  flex-wrap: wrap;
}

.photo {
  overflow: hidden;
  border-radius: 10px;
}

.photo img {
  width: 300px;
  height: 200px;
  object-fit: cover;
  transition: transform 0.3s, filter 0.3s; /* animazione hover */
}

.photo img:hover {
  transform: scale(1.1);      /* ingrandimento */
  filter: brightness(80%);    /* scurisce leggermente */
}

Risultato

  • Tre immagini affiancate, con spaziatura uniforme.

  • Effetto zoom e darken al passaggio del mouse.

  • Immagini adattate al contenitore grazie a object-fit: cover.

  • Design responsive e moderno.


domenica 15 marzo 2026

Corso di CSS & Web Design: 5 – Layout con CSS Grid

5 – Layout con CSS Grid

1. Introduzione al Grid System

CSS Grid è un sistema di layout bidimensionale, che consente di posizionare elementi sia in righe (rows) che in colonne (columns), rendendo più semplice creare layout complessi e responsive rispetto a Flexbox (che è più indicato per un asse principale).

Vantaggi principali

  • Controllo preciso su righe e colonne.

  • Possibilità di ridimensionare automaticamente gli elementi.

  • Facilita la creazione di homepage, magazine, dashboard.

2. Container Grid e Items

2.1 Container Grid

Per definire un container grid:

.container {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr; /* definizione colonne */
  grid-template-rows: 100px auto 50px; /* definizione righe */
  gap: 15px; /* spazio tra righe e colonne */
}
  • fr = frazioni dello spazio disponibile.

  • gap = distanza tra righe e colonne.

  • grid-template-columns e grid-template-rows definiscono la struttura del layout.

2.2 Items

Gli elementi figli del container grid diventano automaticamente grid items.

Possono essere posizionati usando:

  • grid-column: colonna di inizio/fine.

  • grid-row: riga di inizio/fine.

.item1 {
  grid-column: 1 / 3; /* occupa colonne 1 e 2 */
  grid-row: 1 / 2;    /* prima riga */
}

3. Proprietà principali del container

Proprietà Funzione
display: grid Trasforma l’elemento in container Grid
grid-template-columns/rows Definisce numero e dimensione di colonne/righe
gap Spaziatura tra righe e colonne
grid-auto-rows/columns Dimensione automatica di righe o colonne non definite
justify-items / align-items Allineamento degli items all’interno delle celle
justify-content / align-content Allineamento dell’intera griglia all’interno del container

4. Posizionamento avanzato degli elementi

  • grid-column / grid-row

.item {
  grid-column: 2 / 4; /* dalla colonna 2 alla 3 inclusa */
  grid-row: 1 / 3;    /* dalla riga 1 alla 2 inclusa */
}
  • grid-area

    • Consente di definire area nomi:

.container {
  grid-template-areas:
    "header header header"
    "sidebar content content"
    "footer footer footer";
}

.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer { grid-area: footer; }
  • Allineamento interno alle celle

.item {
  justify-self: center; /* or start, end, stretch */
  align-self: center;   /* or start, end, stretch */
}

5. Esercizio svolto: homepage di un magazine

Obiettivo

Creare una homepage con:

  • Header

  • Sidebar

  • Contenuto principale

  • Footer

HTML

<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <title>Magazine Grid</title>
  <link rel="stylesheet" href="stile.css">
</head>
<body>
  <div class="container">
    <header class="header">Header</header>
    <aside class="sidebar">Sidebar</aside>
    <main class="content">Contenuto principale</main>
    <footer class="footer">Footer</footer>
  </div>
</body>
</html>

CSS (stile.css)

body {
  margin: 0;
  font-family: Arial, sans-serif;
}

/* Container Grid */
.container {
  display: grid;
  grid-template-columns: 1fr 3fr;
  grid-template-rows: 100px auto 50px;
  grid-template-areas:
    "header header"
    "sidebar content"
    "footer footer";
  gap: 15px;
  padding: 15px;
  background-color: #f2f2f2;
}

/* Header */
.header {
  grid-area: header;
  background-color: #333;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 24px;
}

/* Sidebar */
.sidebar {
  grid-area: sidebar;
  background-color: #4fa3f2;
  color: white;
  padding: 15px;
}

/* Content */
.content {
  grid-area: content;
  background-color: #ffffff;
  padding: 15px;
  border-radius: 8px;
}

/* Footer */
.footer {
  grid-area: footer;
  background-color: #333;
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
}

Risultato

  • Layout a due colonne con header e footer su tutta la larghezza.

  • Sidebar e contenuto principali affiancati.

  • Layout responsive-friendly perché la griglia può essere facilmente modificata con media queries.


sabato 14 marzo 2026

Corso di CSS & Web Design: 4 – Layout con Flexbox

4 – Layout con Flexbox

1. Concetti chiave: container e items

Flexbox è un modello di layout CSS pensato per disporre elementi in modo flessibile e responsivo, sia in orizzontale che in verticale.

1.1 Container

  • L’elemento genitore diventa contenitore flessibile con:

display: flex;
  • Proprietà principali del container:

    • flex-direction: direzione principale degli elementi (row, row-reverse, column, column-reverse).

    • justify-content: allineamento lungo l’asse principale (flex-start, center, space-between, space-around).

    • align-items: allineamento lungo l’asse trasversale (flex-start, center, stretch, baseline).

    • flex-wrap: gestione del ritorno a capo (nowrap, wrap, wrap-reverse).

1.2 Items

  • Elementi figli (items) del container:

    • flex-grow: capacità di espandersi rispetto agli altri elementi.

    • flex-shrink: capacità di ridursi.

    • flex-basis: dimensione iniziale preferita.

    • align-self: sovrascrive l’allineamento lungo l’asse trasversale per un singolo item.

2. Proprietà principali del container Flexbox

Proprietà Valori comuni Funzione
flex-direction row, row-reverse, column, column-reverse Direzione principale degli elementi
justify-content flex-start, flex-end, center, space-between, space-around Allineamento lungo l’asse principale
align-items flex-start, flex-end, center, stretch Allineamento lungo l’asse trasversale
flex-wrap nowrap, wrap, wrap-reverse Consente il ritorno a capo degli elementi

Esempio Container

.container {
  display: flex;
  flex-direction: row;
  justify-content: space-around;
  align-items: center;
  flex-wrap: wrap;
}

3. Proprietà principali degli items

Proprietà Funzione
flex-grow Espansione proporzionale
flex-shrink Riduzione proporzionale
flex-basis Dimensione base dell’item
flex shorthand per flex-grow flex-shrink flex-basis
align-self Allineamento individuale lungo l’asse trasversale

Esempio Item

.item {
  flex: 1 1 200px; /* grow=1, shrink=1, base=200px */
  margin: 10px;
  padding: 20px;
  background-color: lightblue;
  text-align: center;
}

4. Creare Navbar e griglie flessibili

4.1 Navbar orizzontale

<nav class="navbar">
  <a href="#">Home</a>
  <a href="#">Servizi</a>
  <a href="#">Contatti</a>
</nav>
.navbar {
  display: flex;
  justify-content: space-around;
  background-color: #333;
  padding: 10px;
}
.navbar a {
  color: white;
  text-decoration: none;
  padding: 8px 15px;
}
.navbar a:hover {
  background-color: #555;
  border-radius: 5px;
}

4.2 Griglia flessibile

  • Container flessibile con items che si adattano allo spazio:

.grid {
  display: flex;
  flex-wrap: wrap;
  gap: 15px; /* distanza tra items */
}
.grid-item {
  flex: 1 1 200px; /* dimensione minima 200px, cresce se possibile */
  padding: 20px;
  background-color: #a2d5f2;
  text-align: center;
  border-radius: 8px;
}

5. Esercizio svolto: layout a 3 colonne responsive

Obiettivo

Creare un layout con 3 colonne che si ridimensionano in base alla larghezza dello schermo.

HTML

<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <title>Layout Flexbox 3 colonne</title>
  <link rel="stylesheet" href="stile.css">
</head>
<body>
  <div class="container">
    <div class="item">Colonna 1</div>
    <div class="item">Colonna 2</div>
    <div class="item">Colonna 3</div>
  </div>
</body>
</html>

CSS (stile.css)

body {
  font-family: Arial, sans-serif;
  margin: 0;
  padding: 20px;
  background-color: #f2f2f2;
}

.container {
  display: flex;
  flex-wrap: wrap; /* ritorno a capo su schermi piccoli */
  justify-content: space-between;
  gap: 20px; /* distanza tra colonne */
}

.item {
  flex: 1 1 30%; /* cresce, si riduce, base 30% del container */
  padding: 20px;
  background-color: #4fa3f2;
  color: white;
  text-align: center;
  border-radius: 10px;
}

/* Responsive: su schermi piccoli le colonne diventano a tutta larghezza */
@media (max-width: 768px) {
  .item {
    flex: 1 1 100%;
  }
}

Risultato

  • Tre colonne affiancate su desktop.

  • Si ridimensionano automaticamente su tablet o mobile.

  • Spaziatura uniforme tra le colonne grazie a gap.

  • Bordi arrotondati e sfondo colorato per estetica.


venerdì 13 marzo 2026

Corso di CSS & Web Design: 3 – Box Model e spaziature

3 – Box Model e spaziature

1. Concetto di Box Model

In CSS ogni elemento HTML viene rappresentato come un rettangolo chiamato “box”, costituito da 4 aree principali:

  1. Content (contenuto) – dove si trova testo, immagine o contenuto dell’elemento.

  2. Padding (riempimento interno) – spazio tra contenuto e bordo.

  3. Border (bordo) – contorno dell’elemento.

  4. Margin (margine esterno) – spazio tra l’elemento e gli altri elementi.

Schema Box Model

+-------------------------+
|        Margin           |
|  +-------------------+  |
|  |      Border       |  |
|  |  +-------------+  |  |
|  |  |  Padding    |  |  |
|  |  | +---------+ |  |  |
|  |  | | Content | |  |  |
|  |  | +---------+ |  |  |
|  |  +-------------+  |  |
|  +-------------------+  |
+-------------------------+

Proprietà principali

  • margin: distanza dall’esterno del box

    margin: 20px; /* tutte le direzioni */
    margin-top: 10px;
    margin-left: auto; margin-right: auto; /* centratura orizzontale */
    
  • padding: distanza tra contenuto e bordo

    padding: 15px;
    padding-left: 10px;
    
  • border: spessore, stile e colore del bordo

    border: 2px solid black;
    border-radius: 8px; /* bordi arrotondati */
    
  • width e height: dimensioni del contenuto (il padding e il bordo si aggiungono fuori)

    width: 300px;
    height: 200px;
    max-width: 100%; /* responsive */
    

2. Differenza tra display: inline, block, inline-block

Tipo Comportamento principale
block Occupa tutta la larghezza disponibile, va a capo. Esempi: <div>, <p>
inline Occupa solo lo spazio del contenuto, non va a capo. Esempi: <span>, <a>
inline-block Combinazione: come inline ma permette width, height, padding e margin.

Esempio pratico

span {
  display: inline-block;
  width: 100px;
  height: 50px;
  background-color: lightblue;
}

3. Gestione dimensioni

3.1 width e height

  • Definiscono dimensione del contenuto del box.

div {
  width: 300px;
  height: 150px;
}

3.2 max-width e min-width

  • Rendono i box responsive evitando che diventino troppo grandi o piccoli.

div {
  max-width: 90%;  /* non supera il 90% della larghezza del contenitore */
  min-width: 200px; /* non scende sotto i 200px */
}

3.3 box-sizing

  • Determina se il padding e il bordo rientrano nelle dimensioni dichiarate:

/* default: width e height misurano solo il contenuto */
box-sizing: content-box;

/* include padding e border nella larghezza totale */
box-sizing: border-box;

4. Esercizio svolto: costruire una card con titolo, testo e immagine

Obiettivo

Creare una card visivamente elegante con titolo, testo descrittivo e immagine, usando box model e spaziature.

HTML

<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <title>Card CSS</title>
  <link rel="stylesheet" href="stile.css">
</head>
<body>
  <div class="card">
    <img src="https://via.placeholder.com/300x150" alt="Immagine" class="card-img">
    <h2 class="card-title">Titolo della Card</h2>
    <p class="card-text">Questa è una descrizione della card. Mostra come usare margini, padding e bordi.</p>
  </div>
</body>
</html>

CSS (stile.css)

/* Stile generale */
body {
  font-family: Arial, sans-serif;
  display: flex;
  justify-content: center;
  padding: 50px;
  background-color: #f2f2f2;
}

/* Box Card */
.card {
  width: 320px;
  padding: 20px;
  margin: 20px;
  background-color: #ffffff;
  border: 2px solid #ccc;
  border-radius: 10px;
  box-shadow: 2px 2px 10px rgba(0,0,0,0.1);
  box-sizing: border-box; /* include padding e border nella width */
}

/* Immagine */
.card-img {
  width: 100%;
  height: auto;
  border-radius: 8px;
  margin-bottom: 15px;
}

/* Titolo */
.card-title {
  font-size: 24px;
  margin: 0 0 10px 0;
  color: #333;
}

/* Testo */
.card-text {
  font-size: 16px;
  line-height: 1.5;
  color: #666;
}

Risultato

  • Card centrata, con padding interno.

  • Immagine con bordi arrotondati.

  • Titolo e testo con spaziature corrette grazie a margin e line-height.

  • Uso del box-shadow per effetto elegante.


giovedì 12 marzo 2026

Corso di CSS & Web Design: 2 – Colori, font e testo

2 – Colori, font e testo

1. Gestione dei colori in CSS

In CSS possiamo definire i colori in diversi formati:

1.1 RGB

Rappresenta il colore tramite rosso, verde e blu (Red, Green, Blue) con valori da 0 a 255:

p {
  color: rgb(255, 0, 0); /* rosso */
}

1.2 HEX

Codice esadecimale, formato #RRGGBB:

p {
  color: #00ff00; /* verde */
}

1.3 HSL

Hue-Saturation-Lightness (tonalità, saturazione, luminosità):

p {
  color: hsl(240, 100%, 50%); /* blu puro */
}

1.4 Trasparenze (RGBA / HSLA)

Aggiunge un canale alpha (0 = trasparente, 1 = opaco):

p {
  color: rgba(255, 0, 0, 0.5); /* rosso semi-trasparente */
}

2. Proprietà tipografiche

2.1 font-family

Definisce il tipo di carattere:

p {
  font-family: Arial, sans-serif;
}
  • Consiglio: sempre prevedere un “fallback” (sans-serif, serif, monospace).

2.2 font-size

Dimensione del testo. Valori comuni:

p {
  font-size: 16px;   /* pixel */
  font-size: 1.2em;  /* em relativi al font del genitore */
  font-size: 120%;   /* percentuale relativa al genitore */
}

2.3 line-height

Altezza della riga, utile per leggibilità:

p {
  line-height: 1.5; /* 1.5 volte l'altezza del font */
}

2.4 font-weight

Spessore del carattere:

p {
  font-weight: bold; /* normal, bold, 100-900 */
}

2.5 font-style

Stile del testo:

p {
  font-style: italic; /* normal, italic, oblique */
}

3. Allineamento e decorazioni del testo

3.1 text-align

Allinea il testo orizzontalmente:

p {
  text-align: left;   /* left, right, center, justify */
}

3.2 text-decoration

Decorazioni del testo:

p {
  text-decoration: underline; /* none, underline, line-through, overline */
}

3.3 text-transform

Trasformazioni di maiuscole/minuscole:

p {
  text-transform: uppercase; /* lowercase, capitalize */
}

4. Uso di Google Fonts

Per importare font personalizzati:

  1. Andare su Google Fonts, scegliere un font.

  2. Copiare il link nel <head> dell’HTML:

<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">
  1. Usare il font nel CSS:

body {
  font-family: 'Roboto', sans-serif;
}

5. Esercizio svolto: creare una landing page con tipografia personalizzata

Obiettivo

Creare una pagina con titolo e paragrafi usando colori, font e allineamenti personalizzati.

HTML

<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <title>Landing Page CSS</title>
  <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">
  <link rel="stylesheet" href="stile.css">
</head>
<body>
  <h1 id="titolo">Benvenuti nella Landing Page!</h1>
  <p class="sottotitolo">Scopri i nostri servizi e soluzioni innovative.</p>
  <p class="contenuto">Questa sezione contiene testo descrittivo della landing page, personalizzato con font e colori.</p>
</body>
</html>

CSS (stile.css)

/* Titolo principale */
#titolo {
  font-family: 'Roboto', sans-serif;
  font-weight: 700;
  font-size: 36px;
  color: hsl(210, 100%, 40%);
  text-align: center;
  margin-bottom: 20px;
}

/* Sottotitolo */
.sottotitolo {
  font-family: 'Roboto', sans-serif;
  font-weight: 400;
  font-size: 20px;
  color: rgb(50, 50, 50);
  text-align: center;
  text-transform: uppercase;
}

/* Contenuto */
.contenuto {
  font-family: 'Roboto', sans-serif;
  font-size: 16px;
  line-height: 1.6;
  color: #333333;
  text-align: justify;
  background-color: rgba(173, 216, 230, 0.2); /* azzurro leggermente trasparente */
  padding: 15px;
  border-radius: 8px;
}

Risultato

  • Titolo grande, blu scuro, centrato.

  • Sottotitolo maiuscolo, centrato e leggero.

  • Paragrafo giustificato, colore neutro, sfondo azzurro trasparente con padding.

  • Tutti i testi utilizzano il font Roboto importato da Google Fonts.


mercoledì 11 marzo 2026

Corso di CSS & Web Design: 1 – Introduzione a CSS

1 – Introduzione a CSS

1. Cos’è il CSS e come si collega all’HTML

CSS (Cascading Style Sheets) è il linguaggio utilizzato per definire lo stile e la presentazione di una pagina web. Grazie al CSS possiamo separare contenuto (HTML) e stile (CSS), rendendo il codice più leggibile e modulare.

Funzioni principali del CSS

  • Definire colori, font, dimensioni, margini, padding e layout.

  • Gestire il posizionamento degli elementi sulla pagina.

  • Creare effetti visivi e interattivi (hover, animazioni, transizioni).

Collegamento tra CSS e HTML

Il CSS può essere applicato in tre modi:

  1. Inline CSS – direttamente nell’elemento HTML:

<p style="color: blue; font-size: 16px;">Testo blu</p>
  • Pro: semplice e veloce.

  • Contro: difficile da mantenere su siti complessi.

  1. Internal CSS – all’interno della pagina HTML, nel tag <style>:

<head>
  <style>
    p {
      color: green;
      font-size: 18px;
    }
  </style>
</head>
<body>
  <p>Testo verde</p>
</body>
  • Buono per pagine singole o esperimenti.

  1. External CSS – file separato .css collegato tramite <link>:

<head>
  <link rel="stylesheet" href="stile.css">
</head>
/* stile.css */
p {
  color: red;
  font-size: 20px;
}
  • Pro: stile centralizzato per più pagine.

  • Consigliato in produzione.

2. Sintassi di base: selettori, proprietà, valori

Il CSS ha una sintassi molto semplice:

Selettore{proprietaˋ:valore;}\text{Selettore} \{ \text{proprietà}: \text{valore}; \}

Componenti principali

  1. Selettore – indica l’elemento HTML da stilizzare:

    • Elemento: p { } → tutti i paragrafi.

    • Classe: .classe { } → tutti gli elementi con class="classe".

    • ID: #id { } → elemento con id="id".

    • Universale: * { } → tutti gli elementi.

  2. Proprietà – ciò che vogliamo modificare:

    • color → colore del testo

    • background-color → colore di sfondo

    • font-size → dimensione del testo

    • margin → margini esterni

    • padding → spaziatura interna

  3. Valore – specifica della proprietà:

    • Colori: red, #ff0000, rgb(255,0,0)

    • Dimensioni: 16px, 1.2em, 100%

    • Allineamento: center, left, right

Esempio di blocco CSS

h1 {
  color: darkblue;
  font-size: 32px;
  text-align: center;
}

3. Esempi pratici di selettori

Selettore di elemento

p {
  color: green;
  font-family: Arial, sans-serif;
}

Selettore di classe

.highlight {
  background-color: yellow;
  font-weight: bold;
}

HTML:

<p class="highlight">Questo testo è evidenziato</p>

Selettore ID

#titolo-principale {
  font-size: 40px;
  color: darkred;
}

HTML:

<h1 id="titolo-principale">Benvenuti!</h1>

4. Esercizio svolto: applicare i primi stili a una pagina

Obiettivo

Creare una pagina HTML semplice con paragrafi e un titolo, applicando colori, font e allineamento.

HTML

<!DOCTYPE html>
<html lang="it">
<head>
  <meta charset="UTF-8">
  <title>Prima pagina CSS</title>
  <link rel="stylesheet" href="stile.css">
</head>
<body>
  <h1 id="titolo-principale">Benvenuti nella mia pagina!</h1>
  <p class="intro">Questo è il primo paragrafo con stile CSS.</p>
  <p class="intro">E questo è il secondo paragrafo, colorato e centrato.</p>
</body>
</html>

CSS (stile.css)

/* Stile per il titolo */
#titolo-principale {
  color: darkblue;
  text-align: center;
  font-family: 'Verdana', sans-serif;
}

/* Stile per i paragrafi introduttivi */
.intro {
  color: darkgreen;
  font-size: 18px;
  text-align: center;
  background-color: #f0f0f0;
  padding: 10px;
  border-radius: 5px;
}

Risultato

  • Titolo centrato e blu.

  • Paragrafi centrati, verdi su sfondo grigio chiaro con padding.

  • Stile applicato tramite CSS esterno.

5. Suggerimenti pratici

  • Usare external CSS per progetti più grandi.

  • Dare nomi chiari a classi e ID (.menu, #footer).

  • Ricordare la cascata: se un elemento ha più regole, prevale quella più specifica.


Corso di CSS & Web Design: 7 – Responsive Design

7 – Responsive Design 1. Concetto di mobile-first Responsive Design significa che il layout e i contenuti di una pagina web si adattano ...