<!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 - Bouton CSS</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="bouton_css" />
    <meta name="DC.Creator" content="Pascale Lambert" />
    <meta name="DC.Date.created" scheme="W3CDTF" content="2003-04-21" />
    <meta name="DC.Date.modified" scheme="W3CDTF" content="2003-04-21" />
    <meta name="DC.Rights" content="Cet article est sous licence Creative Commons Attribution-ShareAlike." />
    <meta name="DC.Subject" content="debutant, mise_en_page, css" />
  </head>
  <body>
    <h1>Bouton CSS</h1>
    <ul>
      <li>
        <strong>Profil :</strong> <a href="/debutant/">Débutant</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:pascale.lambert%40openweb.eu.org">Pascale Lambert</a>
      </li>
      <li>
        <strong>Mise à jour :</strong> 21/04/2003</li>
    </ul>
    <h2>En bref</h2>
    <p>Pour créer un bouton changeant d'aspect au passage de la souris, on peut utiliser les styles légers et accessibles.</p>
    <hr />
    <p>Pour créer un bouton changeant d'aspect au passage de la souris, nombreux sont les sites utilisant des javascripts, ou du flash, inaccessibles et gourmands en bande passante. Ces méthodes peuvent être très avantageusement remplacées par les styles qui ne présentent pas ces inconvénients.</p>
    <p>Les techniques décrites ci-après fonctionnent avec les navigateurs modernes (<acronym title="MicroSoft Internet Explorer" lang="en">MSIE</acronym> 5.x, Netscape 6 et 7, Mozilla 1.x, Opéra 7). Avec Opéra 5.x et 6.x les images de fond ne seront pas chargées.</p>
    <p>Document annexe : <a href="annexes/">page de test</a>.</p>
    <h3>Bouton simple</h3>
    <p>Ce premier exemple permet de créer un bouton de navigation dont le fond sera agrémenté d'une image lors du passage de la souris.</p>
    <div><img src="annexes/simples.png" alt="illustration de l'effet :hover sur un bouton css simple" /></div>
    <p>Les caractéristiques communes de l'aspect du lien sont déclarées dans <code>a.bouton</code>, l'effet de changement de couleur et d'image de fond sont indiquées ensuite à l'aide de la pseudo classe <code>:hover</code>. A noter que cette image peut-être fixe ou animée.</p>
    <h4>source <acronym>XHTML</acronym>
    </h4>
    <pre>
&lt;p&gt;
  &lt;a href="#" class="bouton"&gt;Retour&lt;/a&gt;
&lt;/p&gt;
    </pre>
    <h4>Source <acronym>CSS</acronym>
    </h4>
    <pre>
a.bouton {
  color: white;
  background-color: #000080;
  text-decoration: none;
  font-weight: bold;
  text-align: center;
  padding: 5px;
}
a.bouton:hover {
  background-color: #6495ED;
  background-image: url(aqua.jpg);
}
      </pre>
    <p>
      <a href="annexes/#simple">Tester le résultat (bouton simple)</a>.</p>
    <p>On peut aussi compléter l'aspect du bouton à l'aide de <code>a.bouton:active</code> pour l'instant du click et <code>a.bouton:visited</code> pour son aspect après visite de la page liée. Attention : veillez à mettre le style <code>a.bouton:hover</code> en fin de code si vous voulez que celui-ci reste actif même après l'activation du bouton !</p>
    <h3>Bouton en relief</h3>
    <p>Pour un effet de relief d'un bouton qui s'enfonce au passage de la souris, on rajoutera des attributs de style de bordures : <code>outset</code> pour en effet relief vers l'extérieur et <code>inset</code> pour un effet relief inverse.</p>
    <div><img src="annexes/relief.png" alt="bouton en relief qui semble s'enfoncer au passage de la souris" /></div>
    <h4>source <acronym>CSS</acronym>
    </h4>
    <pre>
a.bouton-relief {
  color: white;
  background-color: #000080;
  text-decoration: none;
  font-weight: bold;
  text-align: center;
  padding: 5px;
  border: 2px outset #c0c0c0;
}
a.bouton-relief:hover {
  background-color: #6495ED;
  background-image: url(aqua.jpg);
  border: 2px inset #c0c0c0;
}
      </pre>
    <p>
      <a href="annexes/#relief">Tester le résultat (bouton en relief)</a>.</p>
    <h3>« Boutonnière »</h3>
    <p>Les techniques précédentes sont adaptées à un bouton isolé dont la taille s'adapte à la longueur du texte. Mais si l'on veut faire un menu vertical, on cherche en général à faire des boutons de même taille.</p>
    <div><img src="annexes/boutonniere.png" alt="menu en bouton css" /></div>
    <p>Ceci se fait sans difficulté grâce à l'attribut <code>display:block</code>, dont le principe est détaillé dans l'article <a href="/articles/initiation_display/">boîtes bloc, boîtes en ligne et propriété display</a>.</p>
    <h4>source <acronym>XHTML</acronym>
    </h4>
    <pre>
&lt;p&gt;
  &lt;a href="#" class="vertical"&gt;Sommaire&lt;/a&gt;
  &lt;a href="#" class="vertical"&gt;Bla bla&lt;/a&gt;
  &lt;a href="#" class="vertical"&gt;Retour&lt;/a&gt;
&lt;/p&gt;
    </pre>
    <h4>source <acronym>CSS</acronym>
    </h4>
    <pre>
a.vertical {
  color: white;
  background-color: #000080;
  text-decoration: none;
  font-weight: bold;
  text-align: center;
  padding: 5px;
  border: 2px outset #c0c0c0;
  display: block;
  width: 100px;
}
a.vertical:hover {
  background-color: #6495ED;
  background-image: url(aqua.jpg);
  border: 2px inset #c0c0c0;
}
    </pre>
    <h4>Variante</h4>
    <p>Pour éviter de marquer à chaque lien <code>class="vertical"</code>, on peut coder comme ceci :</p>
    <h5>source <acronym>XHTML</acronym>
    </h5>
    <pre>
&lt;div class="vertical"&gt;
  &lt;p&gt;
    &lt;a href="#"&gt;Sommaire&lt;/a&gt;
    &lt;a href="#"&gt;Bla bla&lt;/a&gt;
    &lt;a href="#"&gt;Retour&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;
      </pre>
    <h5>source <acronym>CSS</acronym>
    </h5>
    <pre>
.vertical a {
  color: white;
  background-color: #000080;
  text-decoration: none;
  font-weight: bold;
  text-align: center;
  padding: 5px;
  border: 2px outset #c0c0c0;
  display: block;
  width: 100px;
}
.vertical a:hover {
  background-color: #6495ED;
  background-image: url(aqua.jpg);
  border: 2px inset #c0c0c0;
}
        </pre>
    <p>
      <a href="annexes/#boutonniere">Tester le résultat (bouton en relief, variante)</a>.</p>
  </body>
</html>
