<!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 - Passer aux feuilles de style</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_css" />
    <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="2004-01-27" />
    <meta name="DC.Rights" content="Cet article est sous licence Creative Commons Attribution-ShareAlike." />
    <meta name="DC.Subject" content="debutant, expert, mise_en_page, css" />
  </head>
  <body>
    <h1>Passer aux feuilles de style</h1>
    <ul>
      <li>
        <strong>Profil :</strong> <a href="/debutant/">Débutant</a>, <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> 27/01/2004</li>
    </ul>
    <h2>En bref</h2>
    <p>Vous utilisiez les balises <acronym title="HyperText Markup Language" lang="en">HTML</acronym> de présentation ? Pour tirer parti des avantages offerts par les standards, découvrez le vocabulaire élémentaire des feuilles de style.</p>
    <hr />
    <p>Vous souhaitez vous affranchir du html détourné à des fins de présentation ? Abandonner les balises obsolètes ? Séparer strictement forme et contenu ? Les feuilles de style <acronym title="Cascading Style Sheets" lang="en">CSS</acronym>2 sont un outil à la fois puissant et souple d'usage. En voici le vocabulaire élémentaire.</p>
    <h3>Appliquer un style</h3>
    <h4>À tous les éléments de la page</h4>
    <ul>
      <li>
        <p>le <em>sélecteur universel</em>
          <code>*</code> agit sur tous les éléments <acronym>HTML</acronym>. Pour définir par exemple une couleur rouge par défaut : <code>* { color: #ff0000; }</code> ;</p>
        <p>les éléments susceptibles d'avoir une couleur d'avant-plan, comme les paragraphes de texte, les titres, les bordures… seront rouges, sauf si une autre couleur leur est spécifiquement attribuée ;</p>
      </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/selector.html#universal-selector">le sélecteur universel</a>.</li>
    </ul>
    <h4>À toutes les instances d'un élément</h4>
    <ul>
      <li>
        <p>pour que le texte des paragraphes soit par exemple en bleu :<code>p { color: #0000ff; }</code> ;</p>
        <p>le contenu de toutes les balises <code>&lt;p&gt;</code> sera bleu, sauf si une autre couleur leur attribuéee par ailleurs de façon plus spécifique ;</p>
      </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/selector.html#type-selectors">les sélecteurs de type</a>.</li>
    </ul>
    <h4>À certaines instances d'un élément</h4>
    <ul>
      <li>
        <p>pour que le texte de certains paragraphes seulement soit par exemple en vert, on définit la classe .vert : <code>p.vert { color: #008000; }</code> ;</p>
        <p>le contenu de toutes les balises <code>&lt;p class="vert"&gt;</code> sera vert. Le contenu des balises <code>&lt;p&gt;</code> restera bleu ;</p>
      </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/selector.html#class-html">les sélecteurs de classe</a>.</li>
    </ul>
    <h4>À une instance unique d'un élément</h4>
    <ul>
      <li>
        <p>pour que le texte d'un paragraphe précis soit par exemple en vert, on définit l'id #vert : <code>p#vert { color: #008000; }</code> ;</p>
        <p>le contenu de la seule balise <code>&lt;p id="vert"&gt;</code> sera vert. Le contenu des autres balises <code>&lt;p&gt;</code> restera bleu ;</p>
      </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/selector.html#id-selectors">les sélecteurs d'id</a>.</li>
    </ul>
    <h4>À un ensemble d'éléments successifs</h4>
    <ul>
      <li>
        <p>pour que le texte d'un titre et des paragraphes qui le suivent soient gris, on définit la classe <em>.gris</em> : <code>.gris { color: #808080; }</code> ;</p>
        <p>ce style s'appliquera aux éléments bornés par l'élément <code>div</code> :</p>
        <pre>
&lt;div class="gris"&gt;
  &lt;h1&gt;…&lt;/h1&gt;
  &lt;p&gt;…&lt;/p&gt;
  &lt;p&gt;…&lt;/p&gt;
&lt;/div&gt;
          </pre>
        <p>ou définis par :</p>
        <pre>
&lt;h1 class="gris"&gt;…&lt;/h1&gt;
&lt;p class="gris"&gt;…&lt;/p&gt;
&lt;p class="gris"&gt;…&lt;/p&gt;
          </pre>
      </li>
      <li>pour en savoir plus : <a href="http://www.w3.org/TR/html401/struct/global.html#edef-DIV">the div element</a>.</li>
    </ul>
    <h4>À une partie de contenu de paragraphe</h4>
    <ul>
      <li>
        <p>pour que certains mots d'un paragraphe soient gris, on applique la classe <em>.gris</em> à l'élément <code>span</code> :</p>
        <pre>
&lt;p&gt;…
  &lt;span class="gris"&gt;
    ceci sera en gris
  &lt;/span&gt;
  …
&lt;/p&gt;
          </pre>
      </li>
      <li>pour en savoir plus : <a href="http://www.w3.org/TR/html401/struct/global.html#edef-DIV">the span element</a>.</li>
    </ul>
    <h4>À un élément directement ou indirectement contenu dans un autre élément</h4>
    <ul>
      <li>
        <p>pour que le contenu de l'élément <code>em</code> soit en rouge seulement dans les titres <code>h3</code>, on définit la règle : <code>h3 em { color: #ff0000;}</code> ;</p>
        <p>qui s'appliquera aussi bien à :</p>
        <pre>
&lt;h3&gt;…
  &lt;em&gt;en rouge&lt;/em&gt;
  …
&lt;/h3&gt;
          </pre>
        <p>qu'à :</p>
        <pre>
&lt;h3&gt;
  …
  &lt;code&gt;&lt;em&gt;…&lt;/em&gt;&lt;/code&gt;
  …
&lt;/h3&gt;
          </pre>
      </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/selector.html#descendant-selectors">les sélecteurs descendants</a>.</li>
    </ul>
    <h4>À un élément directement contenu dans un autre élément</h4>
    <ul>
      <li>
        <p>pour que le contenu de l'élément <code>em</code> soit en rouge dans un paragraphe, sauf dans les citations qu'il contient, on écrira : <code>p&gt;em { color: #ff0000;}</code> ;</p>
        <p>qui s'appliquera à :</p>
        <pre>
&lt;p&gt;…
  &lt;em&gt;en rouge&lt;/em&gt;
  …
&lt;/p&gt;
           </pre>
        <p>mais pas à :</p>
        <pre>
&lt;p&gt;
  &lt;q&gt;&lt;em&gt;…&lt;/em&gt;&lt;/q&gt;
&lt;/p&gt;
          </pre>
      </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/selector.html#child-selectors">les sélecteurs d'enfant</a>.</li>
    </ul>
    <h4>À un élément suivant un autre élément</h4>
    <ul>
      <li>
        <p>pour que le paragraphe suivant une image soit rouge, on écrira :<code>img + p { color: #ff0000;}</code> ;</p>
        <p>qui s'appliquera à :</p>
        <pre>
&lt;img&gt;…&lt;/img&gt;
&lt;p&gt;en rouge&lt;/p&gt;
          </pre>
        <p>mais pas à :</p>
        <pre>
&lt;h3&gt;…&lt;/h3&gt;
&lt;p&gt;…&lt;/p&gt;
          </pre>
      </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/selector.html#adjacent-selectors">les sélecteurs  d'enfants adjacents</a>.</li>
    </ul>
    <h4>À différents éléments simultanément</h4>
    <ul>
      <li>pour que les titres de tous niveaux soient rouges, on écrira :
            <code>h1,h3,h3,h4,h5,h6 { color: #ff0000;}</code> ;
          </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/selector.html#grouping">le regroupement</a>.</li>
    </ul>
    <h3>Couleurs, bordures et arrières-plans</h3>
    <p>Les couleurs sont spécifiées à l'aide des <a href="http://www.w3.org/TR/REC-html40/types.html#type-color">Mots-clé</a>
      <acronym>HTML</acronym> ou du <a href="http://www.limov.com/colour/">modèle de couleur <acronym>RGB</acronym>
      </a>.</p>
    <h4>Couleur et image d'arrière-plan</h4>
    <ul>
      <li>pour que l'arrière-plan d'un élément soit blanc : <code>background-color: #ffffff;</code> ;
          </li>
      <li>pour qu'une image occupe l'arrière-plan d'un élément :
            <code>background-image: url("…url de l'image…")</code> ;
          </li>
      <li>pour que l'image d'arrière-plan ne se répète pas dans l'élément :
            <code>background-repeat: no-repeat;</code> ;
          </li>
      <li>pour que l'image d'arrière-plan soit centrée dans l'élément :
            <code>background-position: center;</code> ;
          </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/colors.html#background-properties">les propriétés d'arrière-plan </a>.</li>
    </ul>
    <h4>Couleur d'avant-plan</h4>
    <ul>
      <li>pour que l'avant-plan d'un élément soit noir :
            <code>color: #000000;</code> ;
          </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/colors.html#colors">la couleur d'avant-plan</a>.</li>
    </ul>
    <h4>Bordures</h4>
    <ul>
      <li>pour que l'élément ait une bordure noir et continue de 5 pixels d'épaisseur :
            <code>border: 5px solid #000000;</code> ;
          </li>
      <li>pour que la bordure soit en pointillé :
            <code>border: 5px dotted #0000ff;</code> ;
          </li>
      <li>pour que la bordure donne une impression de relief :
            <code>border: 5px groove #0000ff;</code> ;
          </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/box.html#border-properties">les   propriétés de bordure</a>.</li>
    </ul>
    <h3>Taille, alignement et positionnement</h3>
    <h4>Largeurs, hauteurs</h4>
    <ul>
      <li>pour spécifier la largeur d'un élément (ici 250px) :
            <code>width: 250px;</code> ;
          </li>
      <li>pour spécifier la hauteur d'un élément (ici 250px) :
            <code>height: 250px;</code> ;
          </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/visudet.html#the-width-property">la largeur du contenu</a> et <a href="http://www.yoyodesign.org/doc/w3c/css2/visudet.html#the-height-property">la hauteur du contenu</a>.</li>
    </ul>
    <h4>Marges, espacement</h4>
    <ul>
      <li>pour spécifier la largeur d'une marge autour d'un élément (ici 25px) :
            <code>margin: 25px;</code> ;
          </li>
      <li>pour spécifier la largeur de l'espacement autour d'un élément (ici 25px) :
            <code>padding: 25px;</code> ;
          </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/box.html#mpb-examples">exemples de marges, d'espacements et de bordures</a>.</li>
    </ul>
    <h4>Alignement du texte</h4>
    <ul>
      <li>pour centrer un texte :
            <code>text-align: center;</code> ;
          </li>
      <li>pour aligner un texte à gauche :
            <code>text-align: left;</code> ;
          </li>
      <li>pour aligner un texte à droite :
            <code>text-align: right;</code> ;
          </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/text.html#alignment-prop">l'alignement</a>.</li>
    </ul>
    <h4>Positionnement des éléments:</h4>
    <ul>
      <li>pour centrer horizontalement un élément dans la page (ici avec une largeur de 70% de celle-ci) :
             <code>margin-left: 15%;
margin-right: 15%;</code> ;
          </li>
      <li>pour extraire un élément du flux normal et le positionner à gauche :
            <code>float: left;</code> ;
          </li>
      <li>pour extraire un élément du flux normal et le positionner à droite :
            <code>float: right;</code> ;
          </li>
      <li>
        <p>pour empêcher un élément flottant de déborder vers le bas sur le contenu qui le suit :</p>
        <ul>
          <li>le faire suivre d'un élément <code>&lt;div class="spacer"&gt;&amp;nbsp;&lt;/div&gt;</code> doté de la propriété <code>.spacer { clear: both; }</code> ;</li>
          <li>ou mieux, utiliser un élément <code>&lt;hr /&gt;</code> doté de la propriété <code>hr { clear: both; visibility: hidden; }</code>Il ne sera visible que dans les navigateurs non-graphiques pour lesquels il contribuera à structurer visuellement la page, la rendant plus accessible et plus agréable à consulter… ;</li>
        </ul>
        <p>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/visuren.html#floats">les flottants</a> et <a href="http://www.yoyodesign.org/doc/w3c/css2/visuren.html#flow-control">Le contrôle du flux autour des flottants</a> ;</p>
      </li>
      <li>pour extraire un élément du flux normal et le positionner de manière absolue dans la fenêtre du navigateur (ici, à 25 px des bords haut et droit) :
            <code>
position: absolute;
right: 25px;
top: 25px;
            </code> ;
          </li>
      <li>
        <p>pour extraire un élément fixed du flux normal et le positionner de manière fixe dans la fenêtre du navigateur (ici, à 25 px des bords haut et droit) :
            <code>
.fixed {
  position: absolute;
  right: 25px;
  top: 25px;
}
html&gt;body .fixed {
  position: fixed;
}
            </code> ;
          </p>
        <p>remarque : le sélecteur <code>html&gt;body</code> permet de cacher la position fixe à <acronym title="MicroSoft Internet Explorer" lang="en">MSIE</acronym> Windows, qui ne la supporte pas, et qui s'en tiendra à un positionnement absolu ;</p>
      </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/visuren.html#choose-position">la propriété position</a>.</li>
    </ul>
    <h3>Typographie</h3>
    <ul>
      <li>
        <p>pour spécifier une police de caractères (ici type arial) :
          <code>font-family: arial, verdana, helvetica, sans-serif;</code> ;
        </p>
        <p>remarque : les noms de police composés doivent être placé entre guillemets: "Times New Roman" ;</p>
      </li>
      <li>
        <p>pour spécifier une taille de caractères (ici 1em) :
          <code>font-size: 1em;</code> ;
        </p>
        <p>remarque : les tailles en em sont préférables aux tailles en pixels car elles s'adaptent aux réglages personnels des utilisateurs et sont ainsi plus accessibles… ;</p>
      </li>
      <li>pour spécifier une hauteur de ligne (ici 1.5em) :
          <code>line-height: 1.5em;</code> ;
        </li>
      <li>pour spécifier une mise en italique :
          <code>font-style: italic;</code> ;
        </li>
      <li>
        <p>pour spécifier une mise en gras :
          <code>font-weight: bold;</code> ;
        </p>
        <p>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/fonts.html#font-specification">La spécification de police</a> ;</p>
      </li>
      <li>
        <p>pour spécifier un soulignement :
          <code>text-decoration: underline;</code> ;
        </p>
        <p>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/text.html#lining-striking-props">la propriété text-decoration</a> ;</p>
      </li>
      <li>
        <p>pour barrer un texte :
          <code>text-decoration: line-through;</code> ;
        </p>
        <p>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/text.html#lining-striking-props">la propriété text-decoration</a> ;</p>
      </li>
      <li>
        <p>pour forcer l'affichage du texte en capitales :
          <code>text-transform: uppercase;</code> ;
        </p>
        <p>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/text.html#caps-prop">la capitalisation</a>.</p>
      </li>
    </ul>
    <h3>Formats d'hyperliens</h3>
    <ul>
      <li>pour définir la couleur par défaut des hyperliens (ici, bleu) :
          <code>a { color: #0000ff; }</code> ;
        </li>
      <li>pour définir des hyperliens non soulignés :
          <code>a { text-decoration: none; }</code> ;
        </li>
      <li>pour définir la couleur des hyperliens visités (ici, violet) :
          <code>a:visited  { color: #800080; }</code> ;
        </li>
      <li>pour définir la couleur des hyperliens survolés (ici, violet) :
          <code>a:hover { color: #800080; }</code> ;
        </li>
      <li>pour définir la couleur des hyperliens activés (ici, violet) :
          <code>a:active  { color: #800080; }</code> ;
        </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/selector.html#dynamic-pseudo-classes">les pseudo-classes dynamiques</a>.</li>
    </ul>
    <h3>Commenter son code</h3>
    <ul>
      <li>
        <p>Les commentaire insérés dans une feuille de style doivent être délimités par les caractères "<code>/*</code>" et "<code>*/</code>" :</p>
        <pre>
/* Ceci est un commentaire */
body {
margin: 1em;
/* Ceci est un autre commentaire */
}
        </pre>
      </li>
      <li>pour en savoir plus : <a href="http://www.yoyodesign.org/doc/w3c/css2/syndata.html#comments">les commentaires</a>.</li>
    </ul>
    <h3>Valider son code</h3>
    <p>Le <a href="http://jigsaw.w3.org/css-validator/">validateur <acronym>CSS</acronym>
      </a> du <acronym title="World Wide Web Consortium" lang="en">W3C</acronym> vérifie la conformité de votre feuille de style à la spécification <acronym>CSS</acronym>1 ou <acronym>CSS</acronym>2.</p>
    <p>Un <a href="http://www.htmlhelp.com/tools/csscheck/">autre validateur <acronym>CSS</acronym>
      </a> gratuit (et anglophone) est disponible sur le site du <a href="http://www.htmlhelp.com/">Web Design Group</a>.</p>
  </body>
</html>
