Context engineering
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).
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;
}
@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 */
}
| Dispositivo | Breakpoint suggerito |
|---|---|
| Mobile | 0 – 767px |
| Tablet | 768 – 1023px |
| Desktop | 1024 – 1440px |
| Large Desktop | >1440px |
max-width: 100%; height: auto;
img {
max-width: 100%;
height: auto;
}
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 */
}
}
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 */
}
}
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>
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>
Creare una pagina portfolio con griglia di progetti che si adatta a mobile, tablet e desktop.
<!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>
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;
}
}
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.
Commenti
Posta un commento