<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
    <title>Openweb.eu.org - Utilisation de background</title>
    <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
    <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" />
    <meta name="DC.Language" scheme="RFC3066" content="fr" />
    <meta name="DC.Identifier" content="background_css" />
    <meta name="DC.Creator" content="Pascale Lambert" />
    <meta name="DC.Date.created" scheme="W3CDTF" content="2005-03-21" />
    <meta name="DC.Date.modified" scheme="W3CDTF" content="2005-03-21" />
    <meta name="DC.Subject" content="debutant, css, mise_en_page" />
  </head>
  <body>
    <h1>Utilisation de background</h1>
    <ul>
      <li>
        <strong>Profil :</strong> <a href="/debutant/">Débutant</a>
      </li>
      <li>
        <strong>Technologie :</strong> <a href="/css/">CSS</a>
      </li>
      <li>
        <strong>Thème :</strong> <a href="/mise_en_page/">Mise en page</a>
      </li>
      <li>
        <strong>Auteur :</strong> <a href="mailto:lambertp%40club-internet.fr">Pascale Lambert</a>
      </li>
      <li>
        <strong>Mise à jour :</strong> 21/03/2005</li>
    </ul>
    <h2>En bref</h2>
    <p>Comment utiliser la propriété CSS background pour gérer des images d'arrière-plan ?</p>
    <hr />
    <p>Mettre une image de fond dans une page web est un exercice très répandu. Avec tout éditeur de page <acronym title="HyperText Markup Language" lang="en">HTML</acronym>, l'option classique est de générer un code du type : <code>&lt;body background="images/image_de_fond.png"&gt;</code>, auquel on peut même ajouter <code>bgproperties="fixed"</code> qui rend fixe l'image de fond ; mais cet attribut ne fonctionne qu'avec <acronym title="MicroSoft Internet Explorer" lang="en">MSIE</acronym>. Avec les feuilles de style on peut obtenir beaucoup plus, tout en séparant la présentation (la mention de cette image) de la structure (l'élément <code>body</code>).</p>
    <h3>Avertissements préliminaires :</h3>
    <ul>
      <li>Une image de fond doit être légère. Comprenez par là qu'une image de 20 <acronym>ko</acronym> c'est déjà beaucoup : cela peut être long à charger et provoquer des problèmes d'affichage.</li>
      <li>Attention aux difficultés de lecture qu'une image de fond trop contrastée peut provoquer.
    		</li>
      <li>Attention aussi à toujours prendre une couleur de fond différente de celle de la police de caractère, car en attendant que l'image de fond se charge, on ne verra rien. Le résultat sera également illisible si l'utilisateur a désactivé l'affichage des images dans son navigateur, ou si l'image vient à être indisponible.</li>
    </ul>
    <p>Pour illustrer tout cela, visionnez <a href="annexes/annexe1.html">ce mauvais exemple</a> : la photo fait 53 <acronym>ko</acronym> ; la couleur utilisée, pour la police de caractère et le fond, est blanche.</p>
    <h3>Code CSS de base</h3>
    <p>L'image de fond se déclare en général pour l'élément body (corps de page), mais on peut aussi l'appliquer à un bloc (<code>&lt;div&gt;&lt;/div&gt;</code>), ou un titre (<code>&lt;hx&gt;&lt;/hx&gt;</code>), un lien (<code>&lt;a&gt;&lt;/a&gt;</code>) afin de créer un bouton, etc.</p>
    <p>Prenons l'exemple du corps de page. La syntaxe <acronym title="Cascading Style Sheets" lang="en">CSS</acronym> de base sera celle-ci :</p>
    <pre>body {
color:black;
background-color:white;
background-image:url(images/image_de_fond.png);
margin:0;
}</pre>
    <ul>
      <li>
        <code>color</code> renseigne la couleur de la police de caractère ;</li>
      <li>
        <code>background-color</code> est de la couleur de fond de page ;</li>
      <li>
        <code>background-image:url()</code> est bien-sûr l'adresse de l'image choisie pour le fond de page. Attention : cette <acronym title="Uniform Resource Locator" lang="en">URL</acronym> est relative à celle du fichier <acronym>CSS</acronym>, et non à celle du document <acronym title="(eXtensible) HyperText Markup Language" lang="en">(X)HTML</acronym>.</li>
      <li>Pour éviter des problèmes de marges parasites, on peut les fixer à 0 pixels à l'aide de <code>margin:0</code>.</li>
    </ul>
    <p>Sans plus de renseignements, l'image de fond apparaît en mosaïque et défile en même temps que le texte.</p>
    <p>Comme d'habitude, cette syntaxe CSS est à mettre dans l'en-tête de la page (entre les balises <code>&lt;head&gt;&lt;/head&gt;</code>) ou dans une feuille de style externe.</p>
    <p>Visionner <a href="annexes/annexe2.html">l'exemple 2</a>.</p>
    <h3>Fond de page fixe</h3>
    <p>Pour que le fond de page devienne fixe, on rajoutera dans le code :</p>
    <pre>background-attachment:fixed;</pre>
    <p>Visionner <a href="annexes/annexe3.html">l'exemple 3</a>.</p>
    <h3>Positionner l'image</h3>
    <p>On peut aussi empêcher la mosaïque grâce à la propriété <code>background-repeat</code> et placer ainsi l'image dans une partie très précise de l'écran.</p>
    <ul>
      <li>
        <p>Par défaut, l'image se positionne en haut à gauche de l'écran :</p>
        <pre>body {
color:black;
background-color:white;
background-image:url(images/image_de_fond.png);
background-repeat:no-repeat;
}</pre>
        <p>Visionner <a href="annexes/annexe4.html">l'exemple 4</a>.</p>
      </li>
      <li>
        <p>Si l'on veut qu'elle se place en haut à droite, on rajoutera le code : </p>
        <pre>background-position:right top;</pre>
        <p>ou bien :</p>
        <pre>background-position:100% 0%;</pre>
        <p>Visionner <a href="annexes/annexe5.html">l'exemple 5</a>.</p>
      </li>
      <li>
        <p>Pour une position au centre de la page, cela donnera :</p>
        <pre>background-position:center center;</pre>
        <p>ou bien :</p>
        <pre>background-position:50% 50%;</pre>
        <p>Visionner <a href="annexes/annexe6.html">l'exemple 6</a>.</p>
      </li>
      <li>
        <p>Pour une position en bas à droite :</p>
        <pre>background-position:right bottom;</pre>
        <p>ou bien :</p>
        <pre>background-position:100% 100%;</pre>
        <p>Visionner <a href="annexes/annexe7.html">l'exemple 7</a>.</p>
      </li>
    </ul>
    <h3>Remarques</h3>
    <p>
      <code>background-repeat</code> accepte 4 valeurs :</p>
    <ul>
      <li>
        <code>no-repeat</code> (image unique) ;</li>
      <li>
        <code>repeat-x</code> pour une répétition de l'image uniquement horizontale ;</li>
      <li>
        <code>repeat-y</code> pour une répétition uniquement verticale ;</li>
      <li>
        <code>repeat</code> pour la mosaïque complète.</li>
    </ul>
    <p>Vous aurez remarqué, bien sûr, que les pourcentages dans le <code>background-position</code> offrent plus de lattitude que les attributs <code>right</code>, <code>center</code>, <code>left</code> et <code>top</code>, <code>center</code>, <code>bottom</code>.</p>
    <p>Notons enfin qu'on peut aussi cumuler ces différentes informations dans un unique <code>background</code>. Exemple :</p>
    <pre>body {
background: white url(image_de_fond.png) no-repeat right bottom;
}</pre>
  </body>
</html>
