📃 HTML#

../../_images/html5.png

HyperText Markup Language

C’est un format de donnĂ©es conçu pour reprĂ©senter les pages web. Il s’agit d’un langage de balisage textuel qui peut ĂȘtre Ă©ditĂ© dans n’importe quel Ă©diteur de texte. Une page web est un document HTML qui est un ensemble de balise HTML. HTML est le fond de nos documents.

Historique d’Internet#

  • 1989 - 1992 InspirĂ© de SGML, titre du document, hyperliens, structuration du texte en titres, sous-titres, listes et texte brut

  • 1993 NCSA Mosaic DĂ©but de normalisation en se basant sur les implĂ©mentations des navigateurs. Apport des images et des formulaires

  • 1992 Netscape Nombreux Ă©lĂ©ments de mise en forme et surtout le CSS (Cascading Style Sheets)

  • 2000 - 2006 Abandon de HTML pour XHTML (Extensible HyperText Markup Language) pour reprendre la simplification de XML

  • 2007 - 2015 HTML5 et abandon de XHTML2

  • L’avenir ? HTML Living Standard

Rendering Engine

Programme qui rend le contenu balisé (HTML) avec des informations de formatage (CSS).

Document HTML#

Un document HTML est un ensemble entĂȘte et corps. Par convention l’extension est .html. Le fichier de base de tout site se nomme index.html. Un document HTML est un simple fichier contenant du texte formattĂ© avec des balises HTML.

Avertissement

Les noms de fichiers que vous utiliserez dans tout programme informatique devront ĂȘtre en minuscules sans caractĂšres spĂ©ciaux !

Quelques exemples:

  • index.html ✔

  • Index.html ✖

  • Accueil.html ✖

  • accueil.html ✖

  • mon_fichier.txt ✔

  • Mon spuer fichier.txt ✖

  • foldername ✔

  • Mon dossier(1) ✖

Anatomie d’une balise HTML#

Tout texte entre les chevrons (brackets) < et > est considéré comme une balise. <p> est une balise ouvrante, </p> est la balise fermante qui lui correspond.

../../_images/balise.png

Note

Les éditeurs de code reconnaissent les balises et les mettent automatiquement en couleur pour faciliter la lecture du code HTML.

Rùgle d’emboütement#

Toute balise B ouverte Ă  l’intĂ©rieur d’une balise A doit Ă©galement ĂȘtre fermĂ©e Ă  l’intĂ©rieur de A.

<p>EmboĂźtement <strong>correct</strong>!</p>
<p>EmboĂźtement <strong>incorrect</p>!</strong>

Attribut d’une balise#

Certaines balises en plus du contenu textuel ont besoin d’information supplĂ©mentaire (qui n’apparait pas dans le document). Cette information est donnĂ©e par des attributs, qui ont la forme nom=valeur et sont placĂ©s entre les chevrons de la balise ouvrante, aprĂšs son nom.

<a href="https://ugaritic.fr/">DY.info</a>

Balise auto-fermante#

Certaines balises particuliùres n’attendent pas de contenu textuel. Ces balises vides n’ont donc pas de balise fermante correspondante. Il convient d’indiquer explicitement l’absence de balise fermante en ajoutant la barre oblique à la fin de la balise ouvrante.

<img src=".." alt=".." />

Important

HTML considĂšre tous les caractĂšres d’espacements (espaces, retours Ă  la ligne
) comme des sĂ©parations entre mots, et les affiche comme une simple espace. Cela donne de la souplesse dans la mise en page du code HTML (notamment en utilisant l’indentation, comme en programmation).

Squelette de base HTML#

Il est constituĂ© d’un marqueur pour identifier le type de standard en dĂ©but de fichier (ligne 1), d’une balise dĂ©limitant le document (html) puis d’une entĂȘte et d’un corps.

<!DOCTYPE html>
<html>
    <head></head>
    <body></body>
</html>

L’entĂȘte head#

Sert à indiquer le titre du document des informations (meta-données) sur celui-ci (auteur, date de création, de maj, 
) qui ne sont pas directement affichés des styles, des scripts, 
 Ce sont des informations sur le document, peu de balises y sont autorisées, son contenu ne sera jamais affiché sur la page !

Pour indiquer le titre du document on utilise la balise title et pour ajouter des informations sur le document la balise meta.

<!DOCTYPE html>
<html>
    <head>
        <title>Hello HTML!</title>
        <meta charset='UTF-8' />
        <meta name="author" content="Samy Delahaye" />
    </head>
    <body></body>
</html>

Il existe diffĂ©rente normes pour coder les accents dans les chaĂźnes de caractĂšre, utf-8 est la plus rĂ©cente. latin1 est la norme historique pour les langues occidentales. L’utilisation d’utf-8 est fortement recommandĂ© de nos jours!

Le corps body#

Contient l’ensemble de la page qui sera visible dans le navigateur. C’est le fond de notre documents, CSS en sera la forme. Les donnĂ©es sont encapsulĂ©es dans des balises correpondant au type de la donnĂ©e (titre, paragraphe, image, liste, 
). Il existe deux grandes familles d’élĂšment HTML: BLOCK et INLINE.

Les blocks#

Titres, paragraphes, listes, ou tableaux, ce sont de « grandes » structures qui contiennent d’autres structures ou Ă©lĂšments. Ils provoquent automatiquement une sĂ©paration verticale et prennent par dĂ©faut 100% de la largeur du document.

../../_images/block.png

Les titres#

Un document typique est une sĂ©quence de titres (ou en-tĂȘte, en anglais heading), et de paragraphes. Les titres ont diffĂ©rents niveaux d’importance, repĂ©rables Ă  leur typographie (et parfois Ă  leur numĂ©rotation), et donnent une structure hiĂ©rarchique au document (en parties, sous-parties, etc.).

<h1>Title level 1</h1>
<h2>Title level 2</h2>
<h3>Title level 3</h3>
<h4>Title level 4</h4>
<h5>Title level 5</h5>
<h6>Title level 6</h6>

Les paragraphes#

Les paragraphes sont délimités par la balise <p>.

<p>In a hole in the ground there lived a hobbit.</p>
<p>Not  a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat: it was a hobbit-hole, and that means
comfort.</p>

Listes en HTML#

Une liste est un paragraphe d’un type particulier contenant une Ă©numĂ©ration d’élĂ©ments.

Liste non ordonnée
<ul>
    <li>sucre</li>
    <li>céréales</li>
    <li>lait</li>
</ul>
Liste ordonnée
<ol>
    <li>sucre</li>
    <li>céréales</li>
    <li>lait</li>
</ol>
Liste descriptive
<dl>
    <dt>Name</dt>
    <dd>Skywalker</dd>
    <dt>Firstname</dt>
    <dd>Luke</dd>
</dl>

Note

  • ul signifie unordered list

  • ol signifie ordered list

  • li signifie list item

  • dl signifie descriptive list

  • dt signifie descriptive title

  • dd signifie descriptive data

Tableau#

Permet de reprĂ©senter un tableau de donnĂ©es, c’est-Ă -dire des informations exprimĂ©es sur un tableau en deux dimensions.

<table>
    <thead>
        <tr>
            <th>Name</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Skywalker</td>
        </tr>
    </tbody>
</table>

Les inlines#

Hyperliens, les citations, ou images, ce sont de « petites » structures qui reprĂ©sentent de petits morceaux de textes ou de donnĂ©es. Ils sont affichĂ©s l’un aprĂšs l’autre sur une ligne Ă  l’intĂ©rieur du bloc qui les contient.

../../_images/inline.png

Les liens#

ReprĂ©senter par la balise a, pour anchor, permet de crĂ©er des liens internes au document ou externe (vers d’autres documents).

<a href="https://ugaritic.fr" title="rendez vous sur Ugaritic.fr"> Ugaritic</a>

Les images#

Représenter par la balise img, les attributs src (source) et alt}` (alternative text) sont obligatoires.

<!-- Distant img -->
<img src="http://..." alt="Sad kitten" />
<!-- Local img -->
<img src="img/kitten.jpg" alt="Sad kitten" />

Quelques inlines utiles#

<p>The word <strong>strong</strong> is bolded.</p>
<p>The word <em>emphasize</em> is emphasized.</p>

Span et Div#

HTML fournit deux balises neutres (c.à.d. sans sémantique particuliÚre) : <span> qui est un inline et <div> qui est un block.

Ces Ă©lĂ©ments sont utiles pour rajouter de la structuration au document, notamment en portant des classes personnalisĂ©es. Il est toutefois prĂ©fĂ©rable d’utiliser une balise sĂ©mantique proche du contenu qu’une balise neutre.

Sections#

Jusqu’à HTML 4.01, la structuration en sections Ă©tait laissĂ©e implicite. Depuis HTML5, on est encouragĂ© Ă  utiliser la balise <section>, d’autant que les anciens navigateurs l’ignoreront purement et simplement.

Utilisation des sections#

Via l’utilisation des sections, ce code html

<h1>The Skeksis</h1>

devient

<section>
    <h1>The Skeksis</h1>
</section>
<h1>The Skeksis</h1>
<h2>Description</h2>
<p>Reptilian and bird-like creatures</p>

devient

<section>
    <h1>The Skeksis</h1>
    <section>
        <h2>Description</h2>
        <p>Reptilian and bird-like creatures</p>
    </section>
</section>

Sections spécialisées#

Il existe des sections plus spécialisées, nous reviendrons sur leurs utilisations durant le chapitre sur les bonnes pratiques.

  • main contenu principal de la page

  • article contenu auto-suffisant

  • aside encart

  • header en-tĂȘte de la section parent (ou du doc)

  • footer pied de la section parent (ou du doc)

  • nav section contenant des liens (navigation)

Indication

Le W3C fournit un service de validation en ligne http://validator.w3.org, son utilisation vous est vivement recommandée.

DOM - Document Object Model#

Lors du chargement de la page, le navigateur créé un arbre DOM. Il est construit comme un arbre d’objets standard du W3C. Il s’agit d’une interface de mise Ă  jour du contenu, structure et style de document HTML/XML.

../../_images/dom.png

Premier pas en HTML#

À faire

  • CrĂ©er un nouveau dossier TP1

  • CrĂ©er un fichier index.html

  • Pourquoi ce nom de fichier ? Avez-vous pensĂ© Ă  l’encodage du fichier ? Pourquoi UTF-8 ?

  • CrĂ©er le squelette de document HTML5 dans le fichier prĂ©cĂ©dent

  • L’entĂȘte de notre document HTML contient deux Ă©lĂšments, quels sont leurs utilitĂ©s ?

  • Quel Ă©lĂ©ment correspond au corps du document ? Quel est son utilitĂ© ?

  • Au sein du corps du document crĂ©ez les Ă©lĂ©ments suivants:
    • Des titres de niveau 1 Ă  6

    • Un paragraphe

    • Une image, Quelle est l’utilitĂ© des attributs src et alt ?

    • Un lien vers une page html (news.html que vous aurez au prĂ©alable créé), Quelle est l’utilitĂ© des attributs href et title ?

    • Une liste dĂ©sordonnĂ©e

    • Une liste ordonnĂ©e

    • Une liste descriptive

  • Nous avons mĂ©langĂ© des Ă©lĂ©ments de type inline et block, voyez-vous la diffĂ©rence entre ces deux types d’élĂ©ments ?

Astuce

Voici le squelette de tout document HTML5:

<!DOCTYPE html>
<html>
    <head>
        <title>Hello World!</title>
        <meta charset="utf-8" />
    </head>
    <body>
    </body>
</html>
nb: un commentaire en HTML#
<!-- COMMENTAIRE -->

Mise en forme de rĂšgles#

À faire

  • TĂ©lĂ©chargez le texte et mettez en forme celui-ci (comme l’exemple ci-dessus) en utilisant les balises suivantes:

<p>
<h1>
<h2>
<h3>

Note

La mise en forme sera différente, mais cherchez surtout à reproduire la structure logique du document.

  • TĂ©lĂ©chargez le modĂšle HTML correspondant Ă  l’exemple, et recopiez votre code Ă  l’intĂ©rieur de la balise <body> . Ce modĂšle contient un lien vers la feuille de style appropriĂ©e.

Note

Dans les deux cas, ne tenez pas compte pour l’instant des mots en gras, italique et soulignĂ©.

  • AmĂ©liorez votre version de l’exemple ci-avant en ajoutant les balises <section>.

  • Reprenez votre code HTML reproduisant l’exemple ci-avant, et ajoutez les balises manquantes.
    • Le rendu doit maintenant ĂȘtre trĂšs proche de celui de l’exemple.

  • Dans l’exemple ci-avant pouvez-vous identifier une liste ? Reprenez votre code HTML reproduisant cet exemple et modifiez-le en consĂ©quence.
    • Le rendu doit maintenant ĂȘtre identique Ă  celui de l’exemple.

Structurons notre page#

À faire

  • Au sein du corps du document dĂ©fini prĂ©cĂ©demment crĂ©ez plusieurs articles de type actualitĂ©s

Indication

Une actualitĂ© est Ă  minima constituĂ© d’un(e):

  • titre

  • auteur

  • contenu

  • date de publication

  • catĂ©gorie

  • miniature

Exemple d’un article en HTML#
<div>
    <h2>The Last Jedi trailer is out !</h2>
    <ul>
    <li>Written by Samy Delahaye</li>
    <li>On Thurday 21, sept. 2017</li>
    </ul>
    <p>Insert some fanboy text here !</p>
    <a href=".." title="..">Read more !</a>
</div>

Astuce

Si vous cherchez du texte de remplissage pour vos tps, je vous conseille l’excellent site fillerama

  • Un menu de navigation n’est rien d’autre qu’une liste de liens non ordonnĂ©e.

  • CrĂ©er un menu de navigation en utilisant les balises ul, li et a.

  • Ajouter la classe menu Ă  la balise ul

<div class="maclass"></div>

RĂšgles 2 (bonus)#

Si vous ĂȘtes en avance sur le reste du groupe.

Téléchargez l'archive suivante contenant une partie des rÚgles du jeu citadelles.

Remettez le fichier de rĂšgles en forme comme prĂ©cĂ©demment. Toutefois le mot carte peut parfois ĂȘtre suivi de certains nom de personnage, de lieu, etc.. dans ce cas il convient de le remplacer par l’image correspondante prĂ©sente dans le dossier img.

Livre dont vous ĂȘtes le hĂ©ros#

TĂ©lĂ©chargez ce fichier html. Il contient un livre dont vous ĂȘtes le hĂ©ros minimaliste.

Faites en une version interactive avec des liens internes.

Chapitres dont vous ĂȘtes le hĂ©ros#

Faites en une version interactive ou chaque entrée est une page HTML distincte (en utilisant ces fichiers HTML ).