du -b
)
Une page web est un simple fichier texte, très léger, que le navigateur interprète pour l'afficher joliment démo sur sandbox?
Les informations contenues sur le web sont accessibles de plusieurs façons différentes : navigateurs visuels, mais aussi textuels ou audio, robots…
le fichier texte ne doit pas décrire à quoi doit ressembler la page, mais quelle est la nature de chacun de ses éléments : on parle de sémantique
Exemple d'une page wikipédia
demander de citer des types d'éléments, puis ajouter * { border: 1px solid black; padding: .1em; }
dans l'éditeur de style
background-color: rgba(200,0,0,0.1) !important; padding: 1rem !important;
pour voir la hiérarchie…la structure d'une page web est arborescente
De nos jours le HTML ne sert pas qu'à représenter des documents textuels
les pages web incluent des images, des vidéos, des sons
une page web n'est plus forcément un document : elle peut être une application
Mais les principes de base sont toujours les mêmes.
<
» et
« >
». Exemple:
<h1>Mon avis sur le langage HTML</h1>
Le HTML, c'est <em>génial</em> !
h1
et em
), mais la balise fermante a un slash au début.h1
(un titre)
et un élément de type em
(du texte mis en valeur).
<p>Il est <strong>interdit</strong> de manger de la choucroute ici.</p>
Ici on a un élément p
(un paragraphe) qui contient du texte et un élément strong
(du texte mis fortement en valeur).<em><strong>ceci est mal balisé</em></strong>
… sinon on ne sait pas quel élément contient l'autre !
a
) :
<a href="http://example.com">un lien vers un site</a>
Ici l'attribut sert à indiquer l'URL vers lequel pointe le lien.
href
), le signe =
,
et une valeur entre guillemets.<img src="toto.jpg" alt="Une photo de Toto" />
>
».Une page HTML correcte a une certaine structure de base.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8" />
<title>Hello HTML</title>
</head>
<body>
<h1>Hello HTML</h1>
<p>Bye now.</p>
</body>
</html>
RésultatLa figure de droite représente l'arbre DOM (Document Object Model) : c'est la façon dont le navigateur « voit » le HTML.
html
<head>
) : informations de « service » sur le document, permettant notamment aux navigateurs de le présenter et aux robots de l'indexer<body>
) : contenu proprement dit<?xml version="1.0" encoding="utf-8"?>
<!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">
<!DOCTYPE html>
<html lang="fr">
Sans prologue, le navigateur passe en quirks mode : il croit qu'il a affaire à une très vieille page web et essaie d'émuler les anciens navigateurs
head
<head>
<title>Titre significatif (pour les moteurs de recherche)<title>
<meta charset="UTF-8" />
<meta name="ROBOTS" content="INDEX, FOLLOW" />
<meta name="keywords" content="cours, HTML, licence" />
<link rel="stylesheet" media="screen" href="diapos.css" />
</head>
body
<body>
<h2>Un titre de section</h2>
<p class="intro">
Ici le texte du paragraphe
introductif, qui aura une présentation
spécifique...
</p>
<p>
du texte et encore du texte...,
parfois <em>mis en valeur</em>, parfois non...
</p>
</body>
Le navigateur ne se contente pas d'interpréter les balises quand il met en forme du HTML
Le contenu d'un fichier HTML ne se retrouve pas tel quel à l'écran
En particulier, toute suite de caractères d'espacement (espace, saut de ligne, tabulation) est considérée comme un seul caractère espace par le navigateur
Si on veut vraiment sauter une ligne au milieu d'une phrase, il faut utiliser la balise <br />
Mais attention : il est très rare d'avoir vraiment besoin de sauter une ligne, en général
l'utilisation de paragraphes (élément p
) suffit et est plus propre
titres : <h1>...</h1> , <h2>...</h2>
paragraphe : <p>
séparateur : <hr />
listes : <ul> et <ol>, qui contiennent des items de liste <li>
division générique : <div>...</div>
image : <img src="maphoto.jpg" alt="ma photo" />
lien (« ancre ») : <a href="http://www.w3.org">hypertexte</a>
saut de ligne : <br />
inline générique : texte <span>texte spécial</span> texte
Un élément inline doit toujours être intégré dans un élément de bloc
Un élément inline autre qu'une ancre ne peut contenir que des éléments inline
section
, article
, main
, nav
, aside
, header
, footer
, main
figure
, figcaption
audio
, video
, canvas
main
: le contenu principal de la page ; doit être uniquenav
: navigation globale (site) ou locale (dans la page)header
: un « en-tête ». Peut être une bannière, mais aussi un en-tête d'article, etc.footer
: un « pied ». Peut être un pied de page, mais aussi un pied d'article, etc.article
: a du sens indépendamment du reste de la pageaside
: non indispensable pour la compréhensionsection
: découpage logique, unité thématique à laquelle il serait envisageable d'ajouter un titre (même si en pratique il n'y en a pas forcément).
section
dans des article
, mais aussi des article
dans des section
!div
générique !Aide à la décision (PDF)
Basé sur 7 catégories de contenu (passer la souris sur l'image)
Détails : recommandation W3C
Éléments transparents : exemple de la balise a
Un fichier HTML5 est conforme (ou valide) s'il respecte la norme HTML5 du W3C
Un fichier XHTML est conforme s'il respecte la DTD qui a été indiquée dans son prologue (comme tout fichier XML)
On vérifie la conformité grâce au validateur mis en place par le W3C : http://validator.w3.org (validateur local validator.info.unicaen.fr)
Un aspect fondamental, trop souvent négligé : permettre à tout le monde d'accéder aux informations
C'est l'objectif principal des éléments de structuration de HTML5
Web Accessibility Initiative (WAI)
WAI-ARIA : définition d'attributs pour l'accessibilité
Règle de base : une page lisible sans style et sans JavaScript a une accessibilité minimum garantie. Penser à toujours regarder à quoi ressemblent vos pages en ne gardant que le HTML. C'est le strict minimum !
Rappelez-vous aussi que bonne accessibilité va généralement de pair avec bonne ergonomie et bon référencement.
Quand on est dev web, il est fondamental de savoir se documenter en ligne
Les technologies évoluent assez vite : ce qui était vrai il y a 5 ans ne l'est plus forcément
Il faut apprendre à vérifier la pertinence des informations trouvées
évaluer si telle documentation est toujours d'actualité, notamment en fonction de la date de parution
reconnaître les signes : par exemple, si les balises sont en majuscules dans les exemples, la page a probablement une quinzaine d'années ⇒ il est peu probable qu'elle apporte une réponse pertinente à votre question…
À droite de chaque page de cours, je mets une boîte avec de nombreux liens. Certains visent à approfondir un sujet, d'autres sont des tutoriels que j'ai trouvés bien faits. A priori, commencer par regarder à cet endroit (plutôt que chercher aléatoirement sur le web) peut être une bonne idée.