DE PAGES INTERNET EN HTML |
Denis Bourdon - Etudiant Département Télécommunications ENSIMAG/ENSERG
dbourdon@dbourdon.com - www.dbourdon.com/development
Dernière mise à jour: 5 mars 2001
Téléchargez ce cours au format HTML, avec les scripts et les images au format zip (89 Ko) ou tgz (88 Ko).
Téléchargez le diaporama des cours au format pdf (177 Ko).
Ce cours est destiné à présenter les aspects de base du langage HTML pour la réalisation de pages Web simples.
Il a fait l'objet de cours en avril 2000 puis en novembre 2000 pour les étudiants du département Télécommunications de l'INPG (Institut National Polytechnique de Grenoble), de l'ENSIMAG de Grenoble (Ecole Nationale Supérieure d'Informatique et des Mathématiques Appliquées de Grenoble) et de l'ENSERG (Ecole Nationale Supérieure d'Electronique et de Radio-Electricité de Grenoble).
Enfin, il a été présenté lors de l'édition de la Fête de l'Internet en mars 2001, à l'Ensimag.
I) Introduction
1) Pré-requis
2) Qu'est-ce que HTML ?
II) Notions de base et mise en page du texte
1) La programmation par balises
2) Un premier exemple
3) Le texte
III) Insérer des liens, des images
1) Les liens
2) Image de fond
3) Les images
4) Les images réactives
IV) Les tableaux
1) En-tête du CV
2) Puces
V) Les frames
1) Le but
2) La programmation
VI) Mettre son site en ligne
1) L'hébergement
2) Le FTP
VII) Le référencement
1) Les balises META
2) Référencement manuel
ANNEXES
1) Les couleurs
a) Couleurs de base
b) Exemple de couleurs
2) Caractères accentués
3) Caractères spéciaux
II) Notions de base et mise en page du texte
Pour apprendre la programmation en HTML (pour toute programmation en général), un conseil: l'apprentissage par la pratique. Alors ouvrez votre éditeur préféré et créez un document index.html.
1) La programmation par balises
Programmation par "balises" ("tags" en anglais) : ce sont des mots-clés syntaxiques entourés de crochets (<KEYWORD>
). La plupart des balises "ouvertes" doivent être "fermées" (</KEYWORD>
). Par exemple, un document HTML commence par <HTML>
et se termine par </HTML>
. On utilise indifféremment l'écriture en majuscules ou en minuscules.
Tapez dans votre document :
<HTML> |
Début du document HTML |
<HEAD> |
Début des éléments non-visible dans la fenêtre principale |
<TITLE> |
Début du titre |
Mon site perso |
Le titre, visible en haut de la fenêtre du navigateur |
</TITLE> |
Fin du titre |
</HEAD> |
Fin de l'en-tête |
<BODY> |
Début du corps |
Hello world! |
Corps du document, i.e. visible dans la fenêtre principale |
</BODY> |
Fin du corps |
</HTML> |
Fin du document HTML |
Notez l'indentation pour la hiérarchie ; cela permet essentiellement de ne pas oublier de fermer des balises. On saisit le texte à afficher dans le corps du document.
Voici un aperçu de ce que cela donne :
Et voici le fichier.
Attention pour les caractères accentués ! (cf. annexe)
Pour mettre en page le texte, on dispose de plusieurs tags:
font
: il permet de sélectionner la police de caractères, la taille, la couleur... La syntaxe est la suivante :
<font face="police" size=entier color=couleur>
|
<font face="Verdana, Tahoma, Arial">
blue
, yellow
) mais le résultat est souvent catastrophique... A n'utiliser que pour black
et white
. L'autre solution (majoritairement utilisée) est le codage RGB (rouge vert bleu). On utilise alors comme code couleur la chaîne #rrggbb
où rr
, gg
, bb
sont les codages en hexadécimal des pourcentages respectifs de rouge, vert, bleu désirés. Cf. annexe pour des exemples.<i>texte</i>
: italique (italic)<b>texte</b>
: gras (bold)<u>texte</u>
: souligné (underlined) A PROSCRIRE !!!! (confusion avec les liens dans le document visionné)
<center>
|
<br>
permet de passer à la ligne (ne pas fermer le tag)
phrase 1<br>
|
<p>
permet de structurer le texte en paragraphes
<p>
|
<hr>
tire un trait horizontal<hr width=20%>
en pourcentage ou <hr width=350>
en pixels.
III) Insérer des liens, des images...
La syntaxe de base est :
<a href=URL>nom de la page</a>
<a href=cv.html>mon CV</a>
<body>
:
<body link=color vlink=color>
<a name=paragraphe>
et de créer le lien avec une balise un peu modifiée: <a href=#paragraphe>Paragraphe</a>
. Vous pouvez même faire un lien vers une ancre dans une autre page que la page active (<a href=index.html#paragraphe>Paragraphe</a>
).<a href="mailto:bart.simpson@ensimag.imag.fr">écrivez-moi</a>
Dans la balise <body>
, on peut personnaliser la couleur de fond et/ou ajouter une image de fond d'écran :
<body bgcolor=color background=file>
bgcolor=black
, car, le temps que l'image se charge, le fond permettra de lire la page.
De plus, par défaut, l'image de fond défile avec le texte lorsque l'on navigue dans le document (le texte est ancré dans le fond d'écran), ce qui est adapté aux "papier-peints" mais pas à des images de fond qui doivent être fixes; il suffit alors de modifier la balise comme suit:
<body background=file bgproperties=fixed>
a) La syntaxe
<img src=file width=x height=y border=n alt="commentaire">
width
, height
, border
et alt
sont facultatifs. Les deux premiers permettent de modifier la taille de l'image originale (à proscrire pour les GIFs) respectivement en largeur et en hauteur; il est recommandé de mettre les valeurs de l'image originale même si elle n'est pas à redimensionner car cela accélère le chargement.
L'attribut border
permet d'ajouter un bord à une image (à éviter en général...) en lui donnant comme paramètre un entier ; il sert surtout (voire exclusivement) à éviter un cadre peu esthétique lorsque l'image sert de lien hypertexte ; en effet, par défaut le navigateur met un cadre, un peu comme il souligne par défaut les liens hypertexte, mais on peut le forcer à ne pas en mettre (border=0
).
Enfin, le tag <alt>
permet d'étiqueter l'image; il est très utile car en cas de téléchargement long, le visiteur a une description sommaire de l'image. De plus, pour les internautes mal-voyants, la voix de synthèse qui lit la page lira la description de l'image.
b) Quelques notions sur les images
Trois formats (principaux) d'images sur le Net :c) Alignement du texte
On peut insérer des images dans un texte et contrôler l'alignement grâce à l'attribut align
du tag img
:
align="left|right|middle|absmiddle"
align="left"
Voici une liste non exhaustive de virus circulant actuellement et dont le plus redoutable est certainement le dernier.
Virus France Info : vous balance un jingle stressant toutes les quinze minutes.
Virus Droit a la Vie : vous empêche d'effacer un fichier et vous traite d'assassin si vous essayez de le faire.
Virus Politiquement correct : précise toutes les minutes qu'il n'est pas un virus mais un "micro-organisme électronique".
Virus Slim Fast : réduit la capacité de votre disque dur à 20Mo.
Virus Richard Virenque : fait apparaître plein de messages sur l'écran, mais vous n'en croyez pas un seul.
align="right"
Virus Eglise de Scientologie : vous isole totalement de tous les réseaux, ruine l'équilibre de votre système et prétend que c'est pour votre bien.
Virus PSG : La puissance de votre Pentium III 1,133 GHz est réduite à celle d'un processeur 286/AT.
Virus NRJ : Une page de pub apparaît toutes les trente secondes à l'écran.
Virus Alzheimer : fait perdre la mémoire à votre ordinateur.
Virus Johnny Halliday : limite l'intelligence artificielle de votre ordinateur.
Virus Jacques Chirac : votre écran balance sans arrêt de gauche à droite.
align="middle"
: aligne le milieu de l'image avec la base de la première ligne de texte
Virus Xavière Tiberi : ajoute automatiquement des fautes d'orthographe à vos documents Word.
align="absmiddle"
: aligne le milieu de l'image avec le milieu de la première ligne de texte
Virus Inspecteur Derrick : rend votre écran grisâtre.
On peut attribuer une image à un lien, mais il peut être intéressant d'attribuer des liens spécifiques à différentes parties d'une image: ce sont les images réactives ou Client Side Image Maps.
Il faut déclarer:
<img src=image usemap="index.html#map1">
<map name="map1">
<area shape="shape" coords="x,y,..." href=URL>
</map>
shape
peut être:
rect
(alors coords="gauche-x,haut-y,droit-x,droit-y"
)circle
(alors coords="centre-x, centre-y, rayon"
)poly
(alors coords="x1,y1,x2,y2..."
)Exemple:
![]() |
Une image réactive circulaire utilisant shape="circle"
|
![]() |
Une image réactive rectangulaire utilisant shape="rect"
|
![]() |
Une image réactive polygonale utilisant shape="poly"
|
Voila le code source:
<table>
<tr>
<td align="center"><img src="images/circle.gif"
usemap="#circle" width="105" height="97"
border="0">
</td>
<td>Une image réactive circulaire utilisant <code>shape="circle"</code>
</td>
</tr>
<tr>
<td align="center"><img src="images/rect.gif"
usemap="#rectangle" width="150" height="100"
border="0">
</td>
<td>Une image réactive rectangulaire utilisant <code>shape="rect"</code>
</td>
</tr>
<tr>
<td align="center"><img src="images/poly.gif"
usemap="#poly" width="134" height="100"
border="0">
</td>
<td>Une image réactive polygonale utilisant <code>shape="poly"</code>
</td>
</tr>
</table>
<map name="circle">
<area shape="circle" COORDS="52,49,35" href="source/cv.html">
</map>
<map name="rectangle">
<area shape="rect" COORDS="18,13, 88,61" href="source/cv.html">
<area shape="rect" COORDS="53,34, 131,82" href="source/index.html">
</map>
<map name="poly">
<area shape="poly" COORDS="56,23, 85,38, 110,18, 93,78,
17,84, 68,55" href="source/cv.html">
</map>
Extrêmement utiles pour faire une mise en page élaborée. Nous allons créer une ébauche de CV.
On va créer un tableau à une ligne, deux colonnes ; à gauche, vos coordonnées, à droite votre photo.
|
Quelques commentaires:
1. On glisse un petit commentaire (juste pour le script).
2. Déclaration du tableau (pas de bordure).
3. Début de ligne.
4. Début de colonne, dont l'intérieur est aligné en haut (top pour haut, bottom pour bas et center pour centré).
5. à 9. On décline son identité, du texte rien de plus simple.
10. Fin de la première colonne.
11. Nouvelle colonne dont l'intérieur est centré.
12. La photo.
13. Fin de la deuxième colonne.
14. Fin de la ligne.
15. Fin du tableau.
Voici ce que cela donne:
Et voici le fichier.
Il peut être utile, pour une énumération, d'établir une liste grâce à des puces (à la manière de Word). La syntaxe générale est de la forme :
<ul>
<li> Premier élément</li>
<li> Deuxième élément</li>
</ul>
|
Ce qui donne, à la représentation près de la puce suivant le navigateur :
|
La fermeture </li>
est facultative. Il est possible de faire des listes numérotées automatiquement, il suffit d'utiliser <ol> au lieu <ul>.
On peut changer le type de puce avec les tags <li type=square>
(carré), <li type=circle>
(cercle) et <li type=disc>
(disque plein). Ceci ne semble marcher que sur PC avec des navigateurs récents...
Pour faciliter la navigation dans un site complexe (plus d'une page), il est intéressant d'aider le visiteur à naviguer dans le site grâce à un système de cadres (ou "frames" en anglais), dont c'est l'utilisation typique. Voici un exemple (visiter le site en ligne):
La partie verticale gauche est toujours la même tout au long de la navigation, tandis que la partie droite est la page que l'on a sélectionnée dans la barre de navigation.
Dans ce type d'exemple, il y a trois types fichiers:
La description des frames est donc contenue dans index.html pour notre exemple.
ATTENTION! Les vieux browsers n'affichent pas les frames (Netscape 1.x, Internet Explorer 1.x et 2.x); ces versions sont si anciennes qu'il n'y a aucun risque à utiliser les frames. De plus, il est possible de se débrouiller pour afficher la page main.html dans ces vieux browsers.
Voici le code complet d'un index.html typique.
|
<frameset>
qui possède une multitude d'attributs:
cols="liste_de_largeurs_de_colonnes"
: on déclare une liste de cadres verticaux, dont on donne dans l'ordre la largeur en pixels (ou en pourcentage). On peut remplacer UNE valeur par *
pour indiquer au browser que cette frame prend toute la largeur laissée vacante dans la fenêtre du browser par les autres cadres.rows="liste_de_largeurs_de_lignes"
: idem, avec des cadres horizontaux.BORDER="nombre_de_pixels"
: dans Netscape, pour donner la largeur en pixels des bordures de toutes les cadres utlisé.BORDERCOLOR="#rrggbb_ou_nom_de_couleur"
: dans Netscape, pour donner la couleur des bordures précédemment définies.FRAMEBORDER="yes|no|0"
: grosses différences entre les browsers... La valeur "0" assure l'absence de bordure (apparemment...).FRAMESPACING="nombre_de_pixels"
: espace en pixels entre les frames.<frameset>
, on déclare les cadres un par un avec <frame>
, dont les attributs sont:
SRC="URL"
: URL par défaut du fichier à afficher dans la frame.NAME="nom_de_frame"
: nom symbolique de la frame (utile pour changer les pages dans la frame en question).MARGINWIDTH="nombre_de_pixels"
: indentation à gauche et à droite en pixels.MARGINHEIGHT="nombre_de_pixels"
: indentation en bas et en haut en pixels.SCROLLING="yes|no|auto"
: définit la présence d' "ascenseurs" verticaux et/ou horizontaux pour faire défiler la frame.NORESIZE
: force la frame à ne pas être redimensionnée. Utile pour la barre de navigation (ceci évite qu'elle soit rognée).<a href="page1.html" target="win">
.<frameset>
.
Tous les fournisseurs d'accès proposent désormais un espace disque pour héberger sa page perso (http://perso.wanadoo.fr/login/, http://members.aol.com/login ...).
D'autres offres proposent un hébergement gratuit: Free, Chez, Geocities, Tripod...
Il suffit dans la plupart des cas d'accepter une charte pour mettre son site en ligne.
Pour mettre son site en ligne, il faut le stocker sur les disques des serveurs Internet de l'hébergeur; on utilise pour cela le FTP (File Transfert Protocol).
C'est une commande native du système UNIX mais peu pratique pour transférer tout un site. Il existe des clients FTP, qui sont des freewares ou des sharewares très conviviaux et simples d'emplois: CuteFTP, WS_FTP, FTP Explorer sous Windows.
Prenons l'exemple d'une connexion sur Free avec Cute FTP.
Voila le problème le plus crucial pour tout créateur de pages Web...
La plupart des moteurs de recherche scannent le Web sans arrêt (en parcourant les liens hyper-texte de proche en proche). A chaque page Web trouvée, ils analysent le contenu pour trouver les mots-clés, puis la répertorie et à chaque requête, affiche les premières lignes de la page en tant que résumé. Ce qui est rarement fidèle à la page... Les balises META
sont un moyen de déclarer soi-même ses caractéristiques qui aideront le référenceur; les deux premiers sont de loin les plus utiles:
<meta name="keywords" contents="keywords">
: énumération de mots-clés<meta name="description" contents="description">
: petit résumé<meta name="author" contents="votre_nom">
: créateur de la page<meta name="generator" contents="description">
: les éditeurs de pages Internet utilise cette balise pour établir des statistiques. On peut référencer sa page sur chaque moteur, mais certains sites permettent d'automatiser la procédure pour référencer gratuitement sa page dans plusieurs moteurs à la fois. Ce sont des meta-référenceurs:
Black - Silver - Gray - White - Maroon - Red - Purple - Fuchsia - Green - Lime - Olive - Yellow - Navy - Blue - Teal - Aqua
b) Exemple de couleurs (noms uniquement reconnus sous Netscape)
#F0F8FF-aliceblue #FAEBD7-antiquewhite #00FFFF-aqua #7FFFD4-aquamarine #F0FFFF-azure #F5F5DC-beige #FFE4C4-bisque #000000-black #FFEBCD-blanchedalmond #0000FF-blue #8A2BE2-blueviolet #A52A2A-brown-brown #DEB887-burlywood #5F9EA0-cadetblue #7FFF00-chartreuse #D2691E-chocolate #FF7F50-coral #6495ED-cornflowerblue #FFF8DC-cornsilk #DC143C-crimson #00FFFF-cyan #00008B-darkblue #008B8B-darkcyan #B8860B-darkgoldenrod #A9A9A9-darkgray #006400-darkgreen #BDB76B-darkkhaki #8B008B-darkmagenta #556B2F-darkolivegreen #FF8C00-darkorange #9932CC-darkorchid #8B0000-darkred #E9967A-darksalmon #8FBC8F-darkseagreen #483D8B-darkslateblue #2F4F4F-darkslategray #00CED1-darkturquoise #9400D3-darkviolet #FF1493-deeppink #00BFBF-deepskyblue #696969-dimgray #1E90FF-dodgerblue #B22222-firebrick #FFFAF0-floralwhite #228B22-forestgreen #FF00FF-fuchsia |
#DCDCDC-gainsboro #F8F8FF-ghostwhite #FFD700-gold #DAA520-goldenrod #808080-gray #008000-green #ADFF2F-greenyellow #F0FFF0-honeydew #FF69B4-hotpink #CD5C5C-indianred #4B0082-indigo #FFFFF0-ivory #F0E68C-khaki #E6E6FA-lavender #FFF0F5-lavenderblush #7CFC00-lawngreen #FFFACD-lemonchiffon #ADD8E6-lightblue #F08080-lightcoral #E0FFFF-lightcyan #FAFAD2-lightgoldenrodyellow #90EE90-lightgreen #D3D3D3-lightgrey #FFB6C1-lightpink #FFA07A-lightsalmon #20B2AA-lightseagreen #87CEFA-lightskyblue #778899-lightslategrey #B0C4DE-lightsteelblue #FFFFE0-lightyellow #00FF00-lime #32CD32-limegreen #FAF0E6-linen #FF00FF-magenta #800000-maroon #66CDAA-mediumaquamarine #0000CD-mediumblue #BA55D3-mediumorchid #9370DB-mediumpurple #3CB371-mediumseagreen #7B68EE-mediumslateblue #48D1CC-mediumturquoise #C71585-mediumvioletred #191970-midnightblue #F5FFFA-mintcream #FFA500-orange |
#FFE4E1-mistyrose #FFE4B5-moccasin #FFDEAD-navajowhite #000080-navy #FDF5E6-oldlace #808000-olive #6B8E23-olivedrab #FF4500-orangered #DA70D6-orchid #EEE8AA-palegoldenrod #98FB98-palegreen #AFEEEE-paleturquoise #DB7093-palevioletred #FFEFD5-papayawhip #FFDAB9-peachpuff #CD853F-peru #FFC0CB-pink #DDA0DD-plum #B0E0E6-powderblue #800080-purple #FF0000-red #BC8F8F-rosybrown #4169E1-royalblue #8B4513-saddlebrown #FA8072-salmon #2E8B57-seagreen #FFF5EE-seashell #A0522D-sienna #C0C0C0-silver #87CEEB-skyblue #6A5ACD-slateblue #708090-slategray #FFFAFA-snow #00FF7F-springgreen #4682B4-steelblue #D2B48C-tan #008080-teal #D8BFD8-thistle #FF6347-tomato #40E0D0-turquoise #EE82EE-violet #F5DEB3-wheat #FFFFFF-white #F5F5F5-whitesmoke #FFFF00-yellow #9ACD32-yellowgreen |
2) Caractères accentués Exemples:
à
â
ç
é
è
ê
ï
3) Caractères spéciaux (dont les méta-caractères)
&
<
>
"
'
(utile pour être vu sous Unix)