Qu'est-ce que la balise <iframe> en HTML ?

Découvrez la balise HTML <iframe> pour intégrer des contenus externes comme des vidéos, cartes ou pages web dans vos sites internet.
8 min de lecture
Believemy logo

Introduction à la balise <iframe>

La balise <iframe> est l'un des éléments HTML les plus puissants pour enrichir vos pages web avec du contenu externe. Que vous souhaitiez intégrer une vidéo YouTube, une carte Google Maps, un formulaire de contact hébergé ailleurs ou même une page web complète, l'iframe est votre allié incontournable.

Comprendre et maîtriser cette balise est essentiel pour tout développeur web moderne. Si vous débutez en HTML, notre formation complète vous guidera pas à pas dans l'apprentissage de toutes les balises essentielles, y compris <iframe>.

Bon à savoir

💡 Le terme "iframe" signifie "inline frame" (cadre en ligne). Il permet littéralement d'afficher une page web à l'intérieur d'une autre page web !

Dans cet article complet, nous allons explorer en profondeur la syntaxe, les attributs, les bonnes pratiques et les cas d'utilisation concrets de cette balise indispensable.


Définition et syntaxe de base

Qu'est-ce qu'un iframe ?

Un <iframe> crée une fenêtre rectangulaire dans votre page HTML qui affiche le contenu d'une autre ressource web. Cette ressource peut être une page HTML externe, une vidéo, une carte interactive, un document PDF, ou tout autre contenu accessible via une URL.

Contrairement aux anciennes balises <frame> et <frameset> qui sont obsolètes, la balise <iframe> reste pleinement supportée et recommandée dans HTML5. Elle s'intègre directement dans le flux de votre document, d'où son nom "inline frame".


Syntaxe de base

Voici la structure minimale d'un iframe :

HTML
<iframe src="https://example.com"></iframe>

Cependant, en pratique, vous utiliserez toujours des attributs supplémentaires pour contrôler l'apparence et le comportement de l'iframe :

HTML
<iframe 
  src="https://believemy.com"
  width="800"
  height="600"
  title="Site Believemy - Plateforme de formations"
></iframe>


Caractéristiques principales

La balise <iframe> possède plusieurs caractéristiques importantes :

  • Balise pairée : elle nécessite une balise ouvrante et fermante
  • Élément de niveau bloc : elle occupe par défaut toute la largeur disponible
  • Contenu de remplacement : le texte entre les balises s'affiche si le navigateur ne supporte pas les iframes
  • Contexte de navigation imbriqué : le contenu chargé a son propre historique de navigation
  • Isolation : le contenu de l'iframe est isolé du document parent


Les attributs essentiels de l'iframe

L'attribut src

L'attribut src est le plus fondamental. Il définit l'URL de la ressource à afficher dans l'iframe :

HTML
<iframe src="https://www.youtube.com/embed/VIDEO_ID"></iframe>

Vous pouvez utiliser des URLs absolues (commençant par http:// ou https://) ou relatives (pointant vers des fichiers de votre propre site).


Les attributs width et height

Ces attributs définissent les dimensions de l'iframe en pixels :

HTML
<iframe 
  src="page-formation.html"
  width="600"
  height="400"
></iframe>
Attention

Attention : bien que vous puissiez définir les dimensions directement en HTML, il est recommandé d'utiliser le CSS pour plus de flexibilité et de responsive design.


L'attribut title (obligatoire pour l'accessibilité)

L'attribut title est essentiel pour l'accessibilité. Il décrit le contenu de l'iframe aux utilisateurs de lecteurs d'écran :

HTML
<iframe 
  src="https://believemy.com/fr/formations"
  title="Catalogue des formations Believemy"
></iframe>

Sans cet attribut, les personnes utilisant des technologies d'assistance ne pourront pas comprendre le contenu de l'iframe.


L'attribut name

L'attribut name permet de cibler l'iframe depuis des liens ou des formulaires :

HTML
<iframe 
  name="affichage-resultat"
  src="accueil.html"
></iframe>

<a href="page-cours.html" target="affichage-resultat">
  Voir les cours
</a>

En cliquant sur le lien, la page "page-cours.html" s'affichera dans l'iframe nommé "affichage-resultat".


L'attribut loading

L'attribut loading permet d'optimiser le chargement de l'iframe :

HTML
<!-- Chargement différé (lazy loading) -->
<iframe 
  src="contenu-lourd.html"
  loading="lazy"
></iframe>

<!-- Chargement immédiat (par défaut) -->
<iframe 
  src="contenu-prioritaire.html"
  loading="eager"
></iframe>

Le lazy loading est particulièrement utile pour les iframes situés en bas de page, car ils ne seront chargés que lorsque l'utilisateur s'en approchera.


L'attribut sandbox

L'attribut sandbox est crucial pour la sécurité. Il impose des restrictions sur le contenu de l'iframe :

HTML
<!-- Iframe avec toutes les restrictions -->
<iframe 
  src="contenu-externe.html"
  sandbox
></iframe>

<!-- Iframe avec certaines permissions -->
<iframe 
  src="formulaire.html"
  sandbox="allow-forms allow-scripts"
></iframe>

Les valeurs possibles pour sandbox incluent :

ValeurDescription
allow-formsAutorise la soumission de formulaires
allow-scriptsAutorise l'exécution de scripts
allow-same-originPermet au contenu d'être traité comme étant de même origine
allow-popupsAutorise les fenêtres popup
allow-modalsAutorise l'ouverture de fenêtres modales
allow-downloadsAutorise les téléchargements


L'attribut allow

L'attribut allow définit les permissions spécifiques accordées à l'iframe pour les APIs du navigateur :

HTML
<iframe 
  src="https://player.video.com/embed/xyz"
  allow="accelerometer; autoplay; clipboard-write; encrypted-media; fullscreen"
></iframe>

Cet attribut est essentiel pour les lecteurs vidéo et autres contenus interactifs qui nécessitent l'accès à certaines fonctionnalités du navigateur.


Exemples pratiques d'utilisation

Intégrer une vidéo YouTube

L'un des usages les plus courants de l'iframe est l'intégration de vidéos :

HTML
<iframe 
  width="560" 
  height="315" 
  src="https://www.youtube.com/embed/dQw4w9WgXcQ" 
  title="Tutoriel HTML - Formation Believemy"
  frameborder="0" 
  allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" 
  allowfullscreen
></iframe>

YouTube fournit directement le code d'intégration via le bouton "Partager" puis "Intégrer" sous chaque vidéo.


Intégrer une carte Google Maps

Les cartes interactives sont également très populaires :

HTML
<iframe 
  src="https://www.google.com/maps/embed?pb=!1m18!1m12!..."
  width="600" 
  height="450" 
  style="border:0;" 
  allowfullscreen="" 
  loading="lazy" 
  referrerpolicy="no-referrer-when-downgrade"
  title="Localisation de nos bureaux"
></iframe>


Intégrer un document PDF

Vous pouvez afficher un PDF directement dans votre page :

HTML
<iframe 
  src="documents/catalogue-formations.pdf"
  width="100%" 
  height="800"
  title="Catalogue des formations PDF"
>
  <p>Votre navigateur ne supporte pas les iframes. 
  <a href="documents/catalogue-formations.pdf">Téléchargez le PDF</a>.
  </p>
</iframe>
Bon à savoir

📄 Le texte entre les balises <iframe> s'affiche uniquement si le navigateur ne peut pas afficher l'iframe, offrant ainsi une alternative accessible.


Créer un iframe responsive

Pour que votre iframe s'adapte à toutes les tailles d'écran, utilisez la technique du conteneur avec ratio :

HTML
<div class="iframe-container">
  <iframe 
    src="https://believemy.com/fr/formations"
    title="Formations Believemy"
    allowfullscreen
  ></iframe>
</div>
CSS
.iframe-container {
  position: relative;
  width: 100%;
  padding-bottom: 56.25%; /* Ratio 16:9 */
  height: 0;
  overflow: hidden;
}

.iframe-container iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: none;
}

Cette technique maintient le ratio d'aspect de l'iframe quelle que soit la largeur de l'écran.


Bonnes pratiques et sécurité

Toujours utiliser HTTPS

Chargez toujours les contenus via HTTPS pour garantir la sécurité :

HTML
<!-- ✓ Correct -->
<iframe src="https://site-securise.com/page"></iframe>

<!-- ✗ À éviter -->
<iframe src="http://site-non-securise.com/page"></iframe>

Les navigateurs modernes bloquent souvent le contenu mixte (HTTP dans une page HTTPS).


Utiliser l'attribut sandbox pour les contenus non fiables

Lorsque vous intégrez du contenu externe dont vous n'avez pas le contrôle total, utilisez toujours sandbox :

HTML
<iframe 
  src="https://site-externe.com/widget"
  sandbox="allow-scripts allow-same-origin"
  title="Widget externe"
></iframe>


Ne pas oublier l'accessibilité

L'accessibilité est primordiale. Voici les points essentiels :

  • Toujours inclure un attribut title descriptif
  • Fournir un contenu alternatif entre les balises
  • S'assurer que le contenu de l'iframe est lui-même accessible
HTML
<iframe 
  src="calculateur-prix.html"
  title="Calculateur de prix pour les formations"
>
  <p>Votre navigateur ne supporte pas les iframes. 
  Veuillez <a href="calculateur-prix.html">accéder au calculateur directement</a>.
  </p>
</iframe>


Optimiser les performances

Les iframes peuvent impacter les performances de votre page. Voici comment les optimiser :

  • Utilisez loading="lazy" pour les iframes non visibles immédiatement
  • Limitez le nombre d'iframes par page
  • Préférez les embeds légers quand c'est possible
  • Chargez les iframes après le contenu principal si nécessaire


Erreurs courantes à éviter

Oublier les dimensions

Sans dimensions définies, l'iframe peut avoir une taille imprévisible :

HTML
<!-- ✗ Problématique -->
<iframe src="page.html"></iframe>

<!-- ✓ Correct -->
<iframe 
  src="page.html"
  width="800"
  height="600"
></iframe>


Ignorer les restrictions X-Frame-Options

Certains sites interdisent leur affichage dans des iframes via l'en-tête HTTP X-Frame-Options. Vous ne pouvez pas contourner cette restriction côté client :

HTML
<!-- Ceci ne fonctionnera pas si le site l'interdit -->
<iframe src="https://facebook.com"></iframe>
Attention

Si un iframe affiche une page blanche ou une erreur, vérifiez si le site source autorise l'intégration via iframe. C'est une mesure de sécurité légitime contre le clickjacking.


Utiliser frameborder (obsolète)

L'attribut frameborder est obsolète en HTML5. Utilisez CSS à la place :

HTML
<!-- ✗ Obsolète -->
<iframe src="page.html" frameborder="0"></iframe>

<!-- ✓ Moderne -->
<iframe src="page.html" style="border: none;"></iframe>


Communication entre l'iframe et la page parente

Utiliser postMessage

Pour communiquer de manière sécurisée entre une page parente et un iframe, utilisez l'API postMessage :

JAVASCRIPT
// Dans la page parente : envoyer un message à l'iframe
const iframe = document.querySelector('iframe');
iframe.contentWindow.postMessage('Bonjour depuis Believemy!', 'https://site-cible.com');

// Dans l'iframe : recevoir le message
window.addEventListener('message', function(event) {
  // Toujours vérifier l'origine !
  if (event.origin !== 'https://believemy.com') return;
  
  console.log('Message reçu :', event.data);
});

Cette méthode est la seule façon sécurisée de faire communiquer des contenus de différentes origines.


Compatibilité navigateurs

La balise <iframe> bénéficie d'une excellente compatibilité avec tous les navigateurs modernes :

NavigateurSupport
Chrome✓ Complet
Firefox✓ Complet
Safari✓ Complet
Edge✓ Complet
Opera✓ Complet
Internet Explorer✓ Complet (depuis IE 4)

Les attributs plus récents comme loading="lazy" ont un support légèrement plus limité mais avec des fallbacks gracieux.


Questions fréquentes sur les iframes

Question

Quelle est la différence entre iframe et embed ?

La balise <iframe> charge une page HTML complète avec son propre contexte de navigation, tandis que la balise <embed> est destinée à intégrer des plugins ou des contenus multimédia comme des PDF. Pour intégrer une page web externe, l'iframe est le choix approprié.


Question

Pourquoi mon iframe affiche une page blanche ?

Cela peut avoir plusieurs causes : le site cible bloque l'intégration via l'en-tête X-Frame-Options, il y a une erreur dans l'URL, ou le contenu nécessite une connexion HTTPS que vous n'utilisez pas. Vérifiez également la console du navigateur pour plus de détails.


Question

Les iframes sont-ils mauvais pour le SEO ?

Le contenu dans un iframe n'est généralement pas indexé comme faisant partie de votre page. Si le contenu est important pour votre référencement, il est préférable de l'intégrer directement dans votre HTML plutôt que via un iframe. Les iframes sont parfaits pour les contenus tiers comme les vidéos ou les cartes.


Question

Comment apprendre HTML de manière approfondie ?

Pour maîtriser HTML et toutes ses balises comme <iframe>, notre formation pas à pas vous accompagne de zéro jusqu'à la création de sites web complets. Vous y apprendrez les bonnes pratiques, l'accessibilité et le HTML moderne utilisé par les professionnels.

Termes connexes

Découvrez notre glossaire HTML et CSS

Parcourez les termes et définitions les plus couramment utilisés dans le domaine du développement HTML et CSS.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.