<!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 - Initiation au positionnement CSS : 1.flux et position relative</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="initiation_flux" />
    <meta name="DC.Creator" content="Laurent Denis" />
    <meta name="DC.Date.created" scheme="W3CDTF" content="2003-03-21" />
    <meta name="DC.Date.modified" scheme="W3CDTF" content="2003-03-21" />
    <meta name="DC.Rights" content="Cet article est sous licence Creative Commons Attribution-ShareAlike." />
    <meta name="DC.Subject" content="expert, mise_en_page, css" />
  </head>
  <body>
    <h1>Initiation au positionnement CSS : 1.flux et position relative</h1>
    <ul>
      <li>
        <strong>Profil :</strong> <a href="/expert/">Expert</a>
      </li>
      <li>
        <strong>Thème :</strong> <a href="/mise_en_page/">Mise en page</a>
      </li>
      <li>
        <strong>Technologie :</strong> <a href="/css/">CSS</a>
      </li>
      <li>
        <strong>Auteur :</strong> <a href="mailto:laurent.denis%40openweb.eu.org">Laurent Denis</a>
      </li>
      <li>
        <strong>Mise à jour :</strong> 21/03/2003</li>
    </ul>
    <h2>En bref</h2>
    <p>Par défaut, les navigateurs affichent les boîtes issues du document html dans l'ordre du flux normal. En position relative, un élément peut être décalé verticalement et/ou horizontalement.</p>
    <hr />
    <p>Pour représenter le positionnement en flux normal, on peut imaginer le navigateur parcourant (logiquement) la page de code <acronym title="HyperText Markup Language" lang="en">HTML</acronym> du début à la fin et retranscrivant son contenu au fur et à mesure des balises rencontrées. Comme dans la lecture d'un texte, il procède verticalement, commençant en « haut » de l'écran pour aller jusqu'en « bas », et horizontalement de gauche à droite, sur la totalité de l'espace disponible et nécessaire en largeur comme en hauteur.</p>
    <h3>Boîte de type bloc en flux normal</h3>
    <p>Par défaut, les boîtes de type bloc seront affichées dans une succession verticale. Prenons par exemple deux blocs différenciés par leur couleur :</p>
    <p>En <acronym>HTML</acronym> :</p>
    <pre>
&lt;p class="jaune"&gt;Une boîte jaune&lt;/p&gt;
&lt;p class="verte"&gt;Une boîte verte&lt;/p&gt;
    </pre>
    <p>En <acronym title="Cascading Style Sheets" lang="en">CSS</acronym> :</p>
    <pre>
.jaune {
  background-color: #ffff00;
}
.verte {
  background-color: #00ff00;
}
    </pre>
    <p>Le résultat, illustré par la figure ci-dessous, peut être observé également dans <a href="annexes/annexe1.html#ex1">l'exemple 1</a> :</p>
    <div><img src="annexes/ex1.gif" alt="L'un au dessus de l'autre, la boîte bloc rectangulaire jaune et la boîte rectangulaire verte" /></div>
    <p>Le navigateur traite successivement les deux éléments rencontrés. Comme il s'agit d'éléments de type bloc, il aligne la marge gauche de chaque élément sur la marge gauche de l'élément conteneur, c'est à dire ici le bloc conteneur initial.</p>
    <p>Les principaux éléments créant des boîtes bloc sont :</p>
    <ul>
      <li>l'élément <code>div</code> ;</li>
      <li>les titres <code>h1</code>, <code>h2</code>, <code>h3</code>, <code>h4</code>,     <code>h5</code>, <code>h6</code> ;</li>
      <li>le paragraphe <code>p</code> ;</li>
      <li>Les listes et éléments de liste <code>ul</code>, <code>ol</code>, <code>li</code>, <code>dl</code>, <code>dd</code> ;</li>
      <li>Le bloc de citation <code>blockquote</code> ;</li>
      <li>Le texte pré-formaté <code>pre</code> ;</li>
      <li>L'adresse <code>address</code>.</li>
    </ul>
    <h3>Boîte de type en-ligne</h3>
    <p>Par défaut, les boîtes de type en-ligne sont affichées dans une succession horizontale. Prenons par exemple deux portions de texte différenciées par leur couleur :</p>
    <p>En <acronym>HTML</acronym> :</p>
    <pre>
&lt;p&gt;
  &lt;span class="jaune"&gt;Une boîte jaune&lt;/span&gt;
  &lt;span class="verte"&gt;Une boîte verte&lt;/span&gt;
&lt;/p&gt;
</pre>
    <p>En <acronym>CSS</acronym> :</p>
    <pre>
.jaune {
  background-color: #ffff00;
}
.verte {
  background-color: #00ff00;
}
</pre>
    <p>Le résultat, illustré par la figure ci-dessous, peut être observé également dans <a href="annexes/annexe1.html#ex2">l'exemple 2</a> :</p>
    <div><img src="annexes/ex2.gif" alt="De gauche à droite, la boîte rectangulaire jaune et la boîte rectangulaire verte" /></div>
    <p>Les principaux éléments créant des boîtes en ligne sont :</p>
    <ul>
      <li>l'élément <code>span</code> ;</li>
      <li>le lien <code>a</code> ;</li>
      <li>L'image <code>img</code> ;</li>
      <li>Les emphases <code>em</code> et <code>strong</code> ;</li>
      <li>La citation <code>q</code> ;</li>
      <li>La citation <code>cite</code> ;</li>
      <li>L'élément <code>code</code> ;</li>
      <li>Le texte entré par l'utilisateur <code>kbd</code> ;</li>
      <li>L'exemple <code>samp</code> ;</li>
      <li>La variable <code>var</code> ;</li>
      <li>Les abréviations et acronymes <code>abbr</code>, <code>acronym</code> ;      </li>
      <li>Le texte inséré <code>ins</code> ;</li>
      <li>Le texte supprimé <code>del</code>.</li>
    </ul>
    <p>Pour résumer le flux normal : c'est un traitement linéaire du contenu de la page. L'alignement des boîtes bloc est vertical ; l'alignement des éléments en-ligne dans les boîtes bloc est horizontal.</p>
    <p>Reportez-vous à notre article <a href="/articles/initiation_display/">Boîtes bloc, boîtes en ligne et propriété display,</a> pour en savoir plus sur l'utilisation de la proprieté <code>display</code> des boîtes bloc et en ligne…</p>
    <h3>La position relative</h3>
    <p>Le positionnement relatif permet d'inscrire un contenu en flux normal, puis de le décaler horizontalement et/ou verticalement. Le contenu suivant n'est pas affecté par ce déplacement, qui peut donc entraîner des chevauchements.</p>
    <p>Soit par exemple un positionnement relatif indice qui stipule un décalage vers le haut de 5 pixels et un arrière-plan jaune :</p>
    <p>En <acronym>HTML</acronym> :</p>
    <pre>
&lt;p&gt;
  Lorem
  &lt;span class="jaune"&gt;
    boîte en position relative
  &lt;/span&gt;
  ipsum dolor.
&lt;/p&gt;
    </pre>
    <p>En <acronym>CSS</acronym> :</p>
    <pre>
.jaune {
  position: relative;
  bottom: 5px;
  background-color: #ffff00;
}
    </pre>
    <p>Le résultat, illustré par la figure ci-dessous, peut être observé également dans <a href="annexes/annexe1.html#ex3">l'exemple 3</a> :</p>
    <div><img src="annexes/ex3.gif" alt="Le texte de la boîte jaune se décale de 5 pixels vers le haut par rapport au reste du paragraphe" /></div>
    <p>Pour illustrer le risque de chevauchement, ajoutons un décalage vers la droite :</p>
    <p>En <acronym>CSS</acronym> :</p>
    <pre>
.jaune {
  position: relative;
  bottom: 5px;
  left: 3em;
  background-color: #ffff00;
}
    </pre>
    <p>Le résultat, illustré par la figure ci-dessous, peut être observé également dans <a href="annexes/annexe1.html#ex4">l'exemple 4</a> :</p>
    <div><img src="annexes/ex4.gif" alt="Le texte de la boîte jaune se décale de 5 pixels en haut et de 3em à droite : il déborde sur le texte qui suit" /></div>
    <p>Nous aborderons le second type de positionnement <acronym>CSS</acronym> dans <a href="/articles/initiation_float/">initiation au positionnement CSS : 2.position float</a>.</p>
  </body>
</html>
