Skip to content

HTML Adaptatif (Responsive)

Qu’est-ce que le Design Web Responsif (RWD) ?

Section titled “Qu’est-ce que le Design Web Responsif (RWD) ?”

Le Responsive Web Design (RWD) est une approche de conception web qui permet aux pages web de s’afficher correctement sur une variété d’appareils et de tailles de fenêtres ou d’écrans – des petits téléphones aux grands écrans d’ordinateur de bureau.

  • Adapte automatiquement la mise en page aux différentes tailles d’écran.
  • Offre une expérience de visionnage optimale (lecture facile, navigation) avec un minimum de redimensionnement, de panoramique et de défilement.
  • Essentiel pour les sites web modernes en raison de la large gamme d’appareils utilisés pour accéder au web.

La première étape la plus cruciale pour le RWD est d’ajouter la balise méta viewport à la section <head> de votre document HTML. Cette balise indique au navigateur comment contrôler les dimensions et l’échelle de la page.

<meta name="viewport" content="width=device-width, initial-scale=1.0">
  • width=device-width : Définit la largeur de la fenêtre d’affichage à la largeur de l’écran de l’appareil.
  • initial-scale=1.0 : Définit le niveau de zoom initial lorsque la page est chargée pour la première fois par le navigateur.

Sans cette balise, les navigateurs mobiles affichent généralement les pages à la largeur d’un écran de bureau, puis les réduisent, rendant le texte minuscule et obligeant les utilisateurs à zoomer.

Le RWD repose principalement sur trois principes techniques mis en œuvre avec HTML et CSS :

  1. Grilles Fluides : Utilisation d’unités relatives comme les pourcentages (%), la largeur de la fenêtre d’affichage (vw) ou les unités fr (dans CSS Grid) pour les largeurs de mise en page, plutôt que des unités fixes comme les pixels (px). Cela permet à la mise en page de s’étendre ou de se contracter fluidement avec la taille de l’écran.
  2. Images et Médias Flexibles : Utilisation de CSS pour s’assurer que les images et autres médias s’adaptent à leurs éléments conteneurs (par exemple, max-width: 100%; height: auto;). Cela les empêche de déborder de leurs conteneurs sur des écrans plus petits.
  3. Requêtes Média CSS : Application de différentes règles CSS basées sur les caractéristiques de l’appareil, le plus souvent la largeur de la fenêtre d’affichage. Cela vous permet de modifier les mises en page, les tailles de police, ou de masquer/afficher des éléments pour des plages de tailles d’écran spécifiques (points d’arrêt).

Construire une mise en page responsive avec du CSS moderne

Section titled “Construire une mise en page responsive avec du CSS moderne”

Au lieu de techniques plus anciennes comme les floats, le CSS moderne offre de puissants modules de mise en page comme Flexbox et CSS Grid, qui sont idéaux pour créer des designs responsifs.

Exemple utilisant CSS Flexbox et les requêtes média :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Responsive Flexbox Example</title>
<style>
body {
font-family: sans-serif;
margin: 0;
}
.container {
display: flex; /* Use Flexbox for the container */
flex-wrap: wrap; /* Allow items to wrap to the next line */
padding: 10px;
}
.card {
border: 1px solid #ccc;
border-radius: 8px;
padding: 15px;
margin: 10px;
background-color: #f9f9f9;
/* Par défaut : chaque carte prend toute la largeur sur les petits écrans */
flex: 1 1 100%;
box-sizing: border-box; /* Inclut le padding et la bordure dans la largeur/hauteur totale de l'élément */
}
/* Media Query pour écrans moyens (ex: tablettes) */
@media (min-width: 600px) {
.card {
/* Deux cartes par ligne : largeur ~50% moins les marges */
flex: 1 1 calc(50% - 20px);
}
}
/* Media Query pour grands écrans (ex: ordinateurs de bureau) */
@media (min-width: 900px) {
.card {
/* Trois cartes par ligne : largeur ~33.3% moins les marges */
flex: 1 1 calc(33.333% - 20px);
}
}
</style>
</head>
<body>
<h1>Responsive Page Demo</h1>
<div class="container">
<div class="card">
<h2>London</h2>
<p>London is the capital city of England. It is the most populous city in the UK.</p>
</div>
<div class="card">
<h2>Paris</h2>
<p>Paris is the capital and most populous city of France.</p>
</div>
<div class="card">
<h2>Tokyo</h2>
<p>Tokyo is the capital of Japan, the center of the Greater Tokyo Area.</p>
</div>
<div class="card">
<h2>New York</h2>
<p>New York City comprises 5 boroughs sitting where the Hudson River meets the Atlantic Ocean.</p>
</div>
</div>
</body>
</html>

Cet exemple montre des cartes qui s’empilent verticalement sur les petits écrans, forment deux colonnes sur les écrans moyens et trois colonnes sur les grands écrans.

Pour en savoir plus sur CSS Flexbox, CSS Grid et les Media Queries, consultez des tutoriels CSS dédiés.

Bien que vous puissiez construire des designs responsifs à partir de zéro, les frameworks CSS fournissent des composants et des systèmes de grille pré-construits pour accélérer le développement.

Les options populaires incluent :

  • Bootstrap : Un framework largement utilisé, riche en composants, avec un système de grille responsif.
  • Tailwind CSS : Un framework axé sur les utilitaires où vous construisez des designs en appliquant des classes utilitaires de bas niveau directement dans votre HTML.
  • Foundation : Un autre framework robuste similaire à Bootstrap.
  • Bulma : Un framework CSS moderne basé sur Flexbox.

Exemple utilisant des classes utilitaires hypothétiques (similaire à Tailwind) :

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Framework Example (Conceptual)</title>
<!-- Le lien vers le CSS du framework irait ici -->
<!-- <link rel="stylesheet" href="chemin/vers/framework.css"> -->
<style>
/* Styles de base pour la démonstration si aucun framework n'est lié */
.container { max-width: 1200px; margin: auto; padding: 1rem; }
.grid { display: grid; gap: 1rem; }
.grid-cols-1 { grid-template-columns: repeat(1, 1fr); }
@media (min-width: 600px) { .md\:grid-cols-2 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .lg\:grid-cols-3 { grid-template-columns: repeat(3, 1fr); } }
.card { border: 1px solid #ccc; padding: 1rem; border-radius: 8px; }
h2 { margin-top: 0; }
</style>
</head>
<body>
<div class="container">
<h1>Framework Demo</h1>
<!-- Conteneur de grille : 1 colonne par défaut, 2 colonnes sur écrans moyens, 3 colonnes sur grands écrans -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
<div class="card">
<h2>London</h2>
<p>...</p>
</div>
<div class="card">
<h2>Paris</h2>
<p>...</p>
</div>
<div class="card">
<h2>Tokyo</h2>
<p>...</p>
</div>
</div>
</div>
</body>
</html>

Les frameworks offrent différentes approches, mais tous visent à simplifier le processus de création de mises en page responsives.

Pour en savoir plus sur des frameworks spécifiques, consultez leur documentation officielle.