TD de CSS

On a découvert à la séance précédente comment utiliser un certain nombre de balises en html (si vous n'avez pas fini la semaine dernière, voyez au moins les liens et les images avant de commencer ce TP). Cependant, l'ensemble restait peu organisé, les pages ressemblaient souvent à ce que l'on appelle une soupe de tags (tag est un mot anglais pour désigner les balises). La situation est analogue avec celle de Word. Il s'agit maintenant d'organiser nos pages de façon à utiliser un style propre et efficace.

Le TP se fera de préférence sous Linux.

Un document html propre

Un document html a une structure d'éléments emboîtés. Par exemple :

html
headbody
metatitleh1pulh2pp
emliliabbrem

Ceci se code sous la forme :

<html>
  <head>
    <meta>
    <title></title>
  </head>
  <body>
    <h1></h1>
    <p><em></em></p>
    <ul>
      <li></li>
      <li></li>
    </ul>
    <h2></h2>
    <p><abbr></abbr><em></em></p>
  </body>
</html>

Il est très important que la structure soit respectée. Toutes les balises doivent être refermées (à quelques exceptions près comme meta, img et br). De plus, le texte ne peut pas se promener n'importe où dans le document. Il doit être par exemple dans un élément p. Une bonne base est de vérifier si le validateur considère votre page comme valide.

Deux éléments et un attribut

On aura parfois besoin des éléments span et div. span permet de délimiter un bout de texte au milieu d'un paragraphe, div sert lui à délimiter un bloc entier, pouvant contenir plusieurs paragraphes, listes, tableaux. La plupart des éléments peuvent se voir donner un attribut class avec comme valeur une chaîne de caractères permettant de spécialiser l'élément. Par exemple on pourra utiliser : <span class="gras">blabla</span> pour indiquer que ce mot est dans la catégorie span.gras dont je définirai les propriétés ailleurs. Il y aura plus loin des exemples illustrant ceci.

Où mettre des indications de style

Il y a plusieurs endroits où l'on peut donner des indications de style.

  1. D'abord dans une feuille de style externe. Si j'ai mis mes indications de style dans le fichier style.css, je l'indiquerai dans l'élément head en ajoutant :
    <link rel="stylesheet" type="text/css" href="style1.css">
    Cette méthode a l'intérêt de permettre d'utiliser un même fichier de style pour plusieurs pages.
  2. On peut aussi ajouter un élément style dans l'élément head :
    <style type="text/css">
    </style>
  3. On peut enfin ajouter un attribut style à la plupart des éléments :
    <h1 style="...">Titre</h1>

Le navigateur regarde les informations de style dans l'ordre indiqué et les combine. Si il reçoit deux informations contradictoires, il ne retient que la dernière.

Syntaxe

Une indication de style a la forme suivante :

background: blue

On va donc écrire par exemple un mot en gras avec : <span style="font-weight: bold">mots en gras</span>. On peut mettre plusieurs indications de style à la suite, en les séparant par un ;.

Maintenant, on a vu qu'on pouvait aussi mettre une indication de style au début du document, voire dans un autre fichier. Dans ce cas, il faut préciser à quels éléments le style s'applique. On aura ainsi par exemple dans le fichier style1.css :

body {
background: gold;
}
h1,h2 {
font-weight: bold;
text-align: center;
}
h1 {
font-size: 240%;
}
span.gras {
font-weight: bold;
}
p#intro span.gras {
font-weight: bolder;
}

Expliquons rapidement ce que cela signifie. D'abord, l'élément body a un fond doré. Les titres h1 et h2 sont en gras et centrés. Les titres h1 sont écrits 2.4 fois plus gros que le texte normal. Le contenu de <span class="gras">des mots</span> est mis en gras, sauf dans le paragraphe qui s'appelle intro (donc introduit par <p id="intro" name="intro"> ), où ils sont en très gras.

.it,#droite {
...
}

Ici, les indications de style vont s'appliquer à tout élément d'attribut class="it" ou id="droite" ou name="droite".

Il existe aussi parfois des raccourcis pour indiquer plusieurs propriétés en une seule fois :

h1 { 
  font-weight: bold; 
  font-size: 12pt;
  line-height: 14pt; 
  font-family: Helvetica; 
  font-variant: normal;
  font-style: normal;
}
h1 { font: bold 12pt/14pt Helvetica }

Les deux formulations sont complètement équivalentes.

h1:first-letter { text-transform: uppercase ; }

Cela met en majuscule la première lettre des titres h1.

Unités de longueur

Exemples

Regardez le source de la page suivante, et comparez ce que vous voyez avec ce que montre un navigateur moderne. Toutes les subtilités de CSS ne sont pas encore bien gérées par tous les navigateurs. Dans vos pages, il faudra donc vous contenter pour l'instant de celles qui sont gérées au moins par Internet Explorer et Firefox. Recopiez la page d'exemple chez vous, et supprimez une à une les indications de style pour comprendre leur effet. En lisant ceci (pour une version française, c'est ici), essayez de vous arranger pour avoir le plan en haut de la page, sur une seule ligne, en ne modifiant que le style.

S'il y a des choses que vous ne savez pas faire, vous pouvez aller vous promener sur les liens utiles. Insérez un tableau dans la page, et mettez une image comme fond d'une des cellules. Sauriez-vous faire la même chose avec nvu ?

Personne ne connaît tout par cœur, il est donc parfaitement normal de se référer à la documentation régulièrement. Pour vérifier que vous savez trouver l'information : arrangez-vous pour que vos listes ul utilisent des carrés à la place des ronds (ou le contraire), et que ces dessins indiquant chaque nouvel item soient dans la marge. Pour décorer, vous ferez aussi clignoter le titre (attention, évitez ce genre de chose sur une page sérieuse).

Liens utiles

Votre site

Maintenant il est temps de revenir à votre site. Avec les connaissances acquises lors de ces deux derniers TPs, vous devriez pouvoir améliorer vos pages. Commencez par vérifier que vos pages sont valides, ce qui vous obligera à mettre ceci au début pour spécifier de quel type de document il s'agit :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

Il vous restera probablement des messages au sujet de l'attribut name, les dernières versions d'Internet Explorer semblent gérer id correctement, donc c'est à vous de voir si vous voulez le supprimer. Si votre page est valide, il vous proposera aussi de vérifier la validité des CSS de votre page, ce qui est une bonne idée. Vous remarquerez peut-être à cette occasion que des couleurs comme gold ou grey ne sont pas valides. Il aurait fallu les entrer sous la forme : #ffd800 ou #808080.

Il serait bon aussi d'enlever toutes les indications de couleur, taille, etc parsemées au fil du texte et de les regrouper en une feuille de style. Il faudrait surtout nettoyer toutes les horreurs que nvu a pu écrire, notamment les lignes entières de &nbsp; &nbsp; &nbsp; &nbsp; .

N'oubliez pas enfin de faire en sorte que vos pages soient accessibles en suivant des liens depuis la page index.html située directement dans votre répertoire public_html.

Valid XHTML 1.0 Strict