Les images HTML

Maîtrisez l’intégration d’images dans vos pages web : syntaxe, attributs, optimisation et bonnes pratiques pour un web moderne.

Syntaxe de base de <img>

La balise <img> est une balise auto-fermante qui permet d’insérer des images dans vos pages web.

Structure de la balise <img>

Syntaxe minimale

html

<img src="chemin/vers/image.jpg" alt="Description"/>

Caractéristiques importantes

  • Balise auto-fermante

    Pas de balise de fermeture </img>

  • Élément inline

    S’insère dans le flux du texte

  • Élément remplacé

    Le contenu vient d’une source externe

Exemples visuels

La première image est dans la ligne de texte : une <img> est un élément inline.

Attributs essentiels

Découvrez tous les attributs de la balise <img> pour contrôler l’affichage, l’accessibilité et le comportement de vos images.

Attributs obligatoires

  • src (source)

    Chemin vers le fichier image. Peut être relatif, absolu ou une URL complète.

    • src="images/photo.jpg"
    • src="https://site.com/photo.jpg"
  • alt (texte alternatif)

    Description de l’image pour l’accessibilité et quand l’image ne charge pas.

    • alt="Description précise de l’image"
    • alt="" ← Image décorative

Attributs de dimensions

  • width et height

    Définissent les dimensions en pixels. Préfèrent CSS pour le responsive.

    • width="300" height="200"
  • Avantages des dimensions

    • Réserve l’espace avant le chargement
    • Évite les sauts de mise en page
    • Améliore les performances perçues
    • Important pour le CLS (Core Web Vitals)

Autres attributs utiles

  • title

    Info-bulle au survol

    • title="Information supplémentaire"
  • loading

    Contrôle du chargement

    • loading="lazy" ← Différé
    • loading="eager" ← Immédiat
  • decoding

    Stratégie de décodage

    • decoding="async"
    • decoding="sync"
    • decoding="auto"
  • crossorigin

    Gestion CORS

    • crossorigin="anonymous"
    • crossorigin="use-credentials"
  • srcset et sizes

    Images responsive (avancé)

    • srcset="image-320.jpg 320w, image-640.jpg 640w"
    • sizes="(max-width: 600px) 100vw, 50vw"
  • class et id

    Sélecteurs CSS

    • class="hero-image rounded"
    • id="main-logo"

Exemple complet avec tous les attributs

html

<!-- Image simple -->
<img src="images/paysage.jpg" alt="Magnifique paysage de montagne au coucher du soleil"/>

<!-- Image avec dimensions pour éviter le layout shift -->
<img
    src="images/portrait.jpg"
    alt="Portrait de Marie Dupont, directrice marketing"
    width="400"
    height="300"
    class="profile-photo"
/>

<!-- Image optimisée pour les performances -->
<img
    src="images/hero-1200.jpg"
    alt="Équipe de développeurs travaillant sur des ordinateurs portables"
    width="1200"
    height="600"
    loading="lazy"
    decoding="async"
    class="hero-image"
    id="main-hero"
    title="Notre équipe passionnée de développement"
/>

<!-- Image responsive avec srcset -->
<img
    src="images/product-640.jpg"
    srcset="images/product-320.jpg 320w,
            images/product-640.jpg 640w,
            images/product-1280.jpg 1280w"
    sizes="(max-width: 600px) 100vw,
           (max-width: 1200px) 50vw,
           33vw"
    alt="Nouveau smartphone avec écran OLED haute résolution"
    width="640"
    height="480"
    loading="lazy"
    class="product-image responsive"
/>

<!-- Image décorative (alt vide) -->
<img
    src="images/decoration-pattern.svg"
    alt=""
    class="decorative-pattern"
    aria-hidden="true"
/>

Formats d’images web

Choisissez le bon format d’image selon vos besoins : qualité, taille de fichier, transparence et compatibilité navigateur.

Images responsive

Apprenez à créer des images qui s’adaptent parfaitement à tous les écrans avec les techniques modernes HTML et CSS.

Méthode 1 : CSS simple

Code CSS de base

css

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

HTML correspondant

html

<img src="image.jpg" alt="Description" class="responsive"/>

Démonstration

L’image ne dépasse jamais son conteneur, et sa hauteur suit sa largeur.

Avantages

  • Simple à implémenter
  • Compatible tous navigateurs
  • Une seule image source

Méthode 2 : srcset et sizes (avancé)

Le navigateur choisit automatiquement la meilleure image selon la taille d’écran, la densité de pixels et la bande passante.

Principe du srcset

html

<!-- Images adaptées selon la largeur d'écran -->
<img
    src="hero-640.jpg"
    srcset="hero-320.jpg 320w,
            hero-640.jpg 640w,
            hero-1280.jpg 1280w,
            hero-1920.jpg 1920w"
    sizes="(max-width: 320px) 280px,
           (max-width: 640px) 600px,
           (max-width: 1280px) 1200px,
           1800px"
    alt="Image hero responsive"
    width="1280"
    height="640"
/>

<!-- Images adaptées selon la densité de pixels -->
<img
    src="logo.png"
    srcset="logo.png 1x,
            logo@2x.png 2x,
            logo@3x.png 3x"
    alt="Logo de l'entreprise"
    width="200"
    height="100"
/>

  • Attribut srcset

    • 320w = largeur 320px
    • 2x = densité 2x (Retina)
    • Liste séparée par des virgules
  • Attribut sizes

    • Conditions CSS media queries
    • Taille d’affichage prévue
    • Aide le navigateur à choisir

Méthode 3 : élément <picture>

L’élément <picture> permet de servir différentes images selon le contexte et d’utiliser des formats modernes avec fallback.

Art direction et formats modernes

html

<!-- Support des formats modernes avec fallback -->
<picture>
    <!-- Format AVIF pour les navigateurs compatibles -->
    <source srcset="image.avif" type="image/avif">

    <!-- Format WebP pour les navigateurs modernes -->
    <source srcset="image.webp" type="image/webp">

    <!-- Fallback JPEG pour tous les navigateurs -->
    <img src="image.jpg" alt="Description de l'image"/>
</picture>

<!-- Art Direction : différentes images selon l'écran -->
<picture>
    <!-- Image mobile (portrait) -->
    <source
        media="(max-width: 600px)"
        srcset="hero-mobile-400.jpg 400w,
                hero-mobile-800.jpg 800w"
        sizes="100vw"
    >

    <!-- Image tablette -->
    <source
        media="(max-width: 1200px)"
        srcset="hero-tablet-800.jpg 800w,
                hero-tablet-1600.jpg 1600w"
        sizes="100vw"
    >

    <!-- Image desktop (paysage) -->
    <img
        src="hero-desktop-1200.jpg"
        srcset="hero-desktop-1200.jpg 1200w,
                hero-desktop-2400.jpg 2400w"
        sizes="100vw"
        alt="Image hero adaptée selon l'appareil"
        width="1200"
        height="600"
    />
</picture>

  • Avantages de <picture>

    • Support formats modernes
    • Art direction précise
    • Fallback automatique
    • Contrôle total
  • Cas d’usage

    • Images différentes mobile/desktop
    • Formats WebP/AVIF avec fallback
    • Recadrage intelligent
    • Optimisation performance

Travaux pratiques

Mettez en pratique vos connaissances sur les images HTML avec ces exercices progressifs et concrets.

  1. Exercice 1 : galerie d’images simple

    Objectif

    Créez une galerie de 6 images avec différents formats et optimisations pour comprendre les bonnes pratiques.

    Critères

    • 3 photos (JPEG) avec dimensions définies
    • 2 logos/icônes (PNG ou SVG)
    • 1 image décorative (alt vide)
    • Toutes les images responsive (CSS)
    • Attributs alt descriptifs et pertinents
    • Lazy loading sur les images en bas

    Rendu attendu

    Une grille de vignettes, un logo, une icône : six images, six choix de format.
  2. Exercice 2 : images responsive avancées

    Mission

    Implémentez une image hero responsive avec srcset et une galerie utilisant l’élément <picture>.

    Spécifications

    • Image hero avec 3 tailles différentes (srcset)
    • Attribut sizes adapté aux breakpoints
    • 2 images avec <picture> et formats WebP
    • Fallback JPEG pour compatibilité
    • Tests sur différentes tailles d’écran

    Outils recommandés

    • Images de test

      • Unsplash.com (images libres)
      • Placeholder.com (tests)
      • Via.placeholder.com
    • Compression

      • TinyPNG.com
      • Squoosh.app (Google)
      • ImageOptim (Mac)

Code de démarrage

html

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Exercices - Images HTML</title>
    <style>
        /* CSS pour images responsive */
        img {
            max-width: 100%;
            height: auto;
        }

        .gallery {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
            gap: 1rem;
            padding: 1rem;
        }

        .gallery-item {
            background: #f8f9fa;
            border-radius: 8px;
            padding: 1rem;
            text-align: center;
        }

        .hero-section {
            position: relative;
            height: 400px;
            overflow: hidden;
            border-radius: 12px;
            margin-bottom: 2rem;
        }

        .hero-image {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }
    </style>
</head>

<body>
    <h1>Exercices - Maîtrise des Images HTML</h1>

    <!-- EXERCICE 1 : GALERIE SIMPLE -->
    <section>
        <h2>Exercice 1 : Ma Galerie d'Images</h2>

        <div class="gallery">
            <!-- TODO: Photo 1 (JPEG avec dimensions) -->
            <div class="gallery-item">
                <img
                    src="https://via.placeholder.com/300x200/3498db/fff?text=Photo+1"
                    alt="<!-- Description détaillée de la photo -->"
                    width="300"
                    height="200"
                />
                <p>Photo Nature</p>
            </div>

            <!-- TODO: Photo 2 avec lazy loading -->
            <div class="gallery-item">
                <img
                    src="https://via.placeholder.com/300x200/2ecc71/fff?text=Photo+2"
                    alt="<!-- Votre description -->"
                    width="300"
                    height="200"
                    loading="lazy"
                />
                <p>Architecture</p>
            </div>

            <!-- TODO: Logo PNG -->
            <div class="gallery-item">
                <img
                    src="https://via.placeholder.com/150x150/9b59b6/fff?text=LOGO"
                    alt="Logo de l'entreprise XYZ"
                    width="150"
                    height="150"
                />
                <p>Notre Logo</p>
            </div>

            <!-- TODO: Complétez avec 3 autres images selon les critères -->
        </div>
    </section>

    <hr>

    <!-- EXERCICE 2 : IMAGES RESPONSIVE AVANCÉES -->
    <section>
        <h2>Exercice 2 : Images Responsive Avancées</h2>

        <!-- Image Hero avec srcset -->
        <div class="hero-section">
            <!-- TODO: Implémentez une image hero avec srcset et sizes -->
            <img
                src="https://via.placeholder.com/800x400/e67e22/fff?text=Hero+Image"
                srcset="<!-- TODO: Ajoutez vos différentes tailles -->"
                sizes="<!-- TODO: Définissez les tailles d'affichage -->"
                alt="Image hero de présentation"
                class="hero-image"
                width="1200"
                height="600"
            />
        </div>

        <!-- Images avec élément picture -->
        <div class="gallery">
            <!-- TODO: Image 1 avec picture et format WebP -->
            <div class="gallery-item">
                <picture>
                    <!-- TODO: Source WebP -->
                    <!-- TODO: Fallback JPEG -->
                </picture>
                <p>Image WebP/JPEG</p>
            </div>

            <!-- TODO: Image 2 avec art direction -->
            <div class="gallery-item">
                <picture>
                    <!-- TODO: Source mobile -->
                    <!-- TODO: Source desktop -->
                </picture>
                <p>Art Direction</p>
            </div>
        </div>
    </section>
</body>
</html>

Maîtrisez les images HTML

Vous maîtrisez maintenant les images HTML sous toutes leurs formes. Explorez les autres aspects du HTML pour créer des sites web complets et performants.