# Élément HTML

En informatique, un élément HTML (appelé également « balise HTML » ou tag en anglais) est un élément de base utilisé pour définir la structure d'un document écrit en HTML.
Ce langage informatique est constitué d'une suite de caractères textuels définissant le nom de l'élément ainsi que ses éventuels attributs.
Le langage HTML est utilisé dans la création de sites web, additionné d'autres langages de mise en forme dynamique comme le CSS. Le langage HTML est le corps des sites web d'aujourd'hui.

## Structure

Jusqu'à la version HTML4, la structure d'un document HTML s'inspire de la méthode de modélisation SGML, conçue pour structurer les documents bureautiques classiques. La version 4 de la définition de type de document (DTD) définit 91 éléments HTML. Néanmoins la version HTML5 ne s'appuie pas sur SGML et ne définit pas de DTD.
Les éléments HTML permettent de définir des en-têtes, des paragraphes, des liens hypertextes, des listes, des séquences audio ou des séquences vidéo. Au début d'une zone de code on parle alors de balise HTML "ouvrante", et en fin de zone se trouve une balise HTML "fermante"). Une balise HTML ouvrante est constituée par un signe « < », suivi par le nom de la balise, par les éventuels attributs sous la forme attribut=valeur, et par un signe « > » (exemple : <img src="hello jpg">). Une balise HTML fermante est constituée par un signe « < », suivi par un signe « / », puis par le nom de la balise, et par un signe « > » (exemple : </img>). Une balise peut être à la fois ouvrante et fermante lorsqu'elle n'a pas de contenu : dans ce cas, elle est constituée par un signe « < », suivi par le nom de la balise, par les éventuels attributs sous la forme attribut=valeur, par un signe « / » et par un signe « > » (exemple : <img src="hello jpg"/>).

## Catégories bloc et texte

Les éléments HTML sont répartis en deux catégories : bloc (block) ou texte (inline).

### Éléments de catégorie bloc

Ce sont des structures qui contiennent d'autres blocs, des éléments de catégorie texte, ou seulement du texte. En général, ils sont affichés comme des blocs et séparés des autres blocs par des espaces traduits par des tabulations tels que les titres de section, les paragraphes, les listes, les tableaux et autres.

### Éléments de catégorie texte

Ces éléments représentent ou décrivent du texte ou des données. Ils peuvent contenir seulement du texte ou d'autres éléments de catégorie texte, et sont habituellement affichés l'un après l'autre sur une ligne à l'intérieur du bloc qui les contient, tels que les hyperliens, les citations, les images et autres.

## Éléments racines

Les éléments racines sont des éléments qui contiennent d'autres éléments HTML.

### <html>…</html>

Ces balises délimitent un document HTML (à la place d'un document XML ou d'une classe). La langue primaire du document HTML peut être définie avec l'attribut lang (avec par ex. en pour anglais). Le seul contenu autorisé est soit un élément <head> et un élément <body>, soit un élément <head> et un élément <frameset>.

### <head>…</head>

Ces balises délimitent la section d'en-tête du document. Cet élément contient les informations sur la page web. L'élément <head> contient principalement les métadonnées du document comme le titre, l'encodage des caractères, etc. Il y a sept éléments d'en-tête possibles qui incluent un élément meta pour une spécification extensible des métadonnées.

### <body>…</body>

Ces balises délimitent le corps du document. D'après les recommandations de la version 5 (HTML 5), tout ce qui doit être visible sur la page et qui décrit son fonctionnement doit se trouver à l'intérieur de cet élément.
Les éléments racines sont organisés comme suit :

## Éléments d'en-tête
### Titre

La balise <title>…</title> est utilisée pour définir le titre du document HTML, généralement affiché dans la barre de titre de la fenêtre du navigateur ou dans les onglets du navigateur lorsqu'une page web est ouverte.
L'élément <title> ne peut apparaitre qu'une seule fois dans le document HTML et est le seul élément obligatoire, bien que la plupart des navigateurs les plus populaires ne réagiront pas à son absence. Il est placé entre les balises <head></head>. Le contenu de cet élément sera utilisé par le navigateur de l'usager pour désigner la page (par exemple sur l'onglet ou dans les favoris), ainsi que par les moteurs de recherche. Cette balise sert généralement à identifier sommairement le contenu de la page, comme une propriété de celle-ci, sans faire partie du contenu. Il n'y a pas de limite au nombre de caractères que peut contenir <title>, cependant les navigateurs en limitent généralement l'affichage. De même, aucune autre balise HTML n'y sera interprétée.

### Base

La balise <base> permet d'indiquer depuis quel site ou répertoire vous souhaitez partir. Pour cela il est nécessaire d'indiquer le chemin absolu vers le répertoire cible. Par exemple, si vous êtes dans le dossier www et que vous indiquez dans votre code un chemin vers le fichier index.html, sans base, vous serez dirigé vers le chemin http://votre-site.com/index.html. Cependant si vous avez indiqué une base, par exemple http://votre-site.com/pages/, ce même lien va alors pointer surhttp://votre-site.com/pages/index.html.
Syntaxe : <base href="votre_chemin"/>

### Liaisons

La balise <link> spécifie les liens vers d'autres documents, comme les liens previous (précédent) et next (suivant), ou des versions alternatives. Un en-tête HTML peut contenir un nombre quelconque d'éléments <link>. L'élément <link> a des attributs, mais pas de contenu. On l'utilise couramment pour créer des liens avec des feuilles de style externes, en utilisant la formulation suivante : <link rel="stylesheet" type="text/css" href="url">.

### Inclusion de scripts

La balise <script>…</script> permet d'inclure du code de script (le plus souvent en JavaScript), souvent pour rendre la page interactive. Dans le cas où le navigateur d'un visiteur ne reconnaît pas la balise, le W3C recommande de mettre le code en commentaire :
<noscript>…</noscript>
Ces balises permettent d'insérer dans la page des éléments qui seront affichés uniquement si le navigateur n'est pas capable d'interpréter des scripts.

### Style

La balise <style>…</style> permet d'inclure des informations de style au format CSS.

### Objets

La balise <object>…</object> permet l'insertion d'un objet en précisant sa nature par l'attribut type. Il peut s'agir d'un Applet Java, d'une application Flash, d'une vidéo, d'un son…

### Métadonnées

La balise <meta> peut être utilisée pour spécifier l’auteur, la date de publication, la date d’expiration, la description de page, les mots-clés et toute autre métadonnée qui n’est pas fournie à travers les autres éléments et attributs d’en-tête (head). En raison de leur caractère générique, les éléments meta spécifient des
. Dans un formulaire, les éléments meta peuvent spécifier les en-têtes HTTP qui doivent être envoyés avant le contenu réel quand la page HTML est servie d’un serveur web au client. Par exemple :
Cet exemple spécifie que la page doit être servie avec un en-tête HTTP appelé « foo » qui a une valeur « bar ».
Dans le formulaire général, un méta-élément spécifie le nom (name) et les attributs de contenu (content) associés qui décrivent des aspects de la page HTML. Afin d’éviter d’éventuelles ambiguïtés, un troisième attribut optionnel scheme peut être fourni pour spécifier un cadre sémantique qui définit la signification de la clé et sa valeur. Par exemple: <meta name="foo" content="bar" scheme="DC">
Dans cet exemple, la métadonnée s'appelle « foo » ; a la valeur « bar » ; est relative au resource description framework DC ou Dublin Core.

## Bloc

Beaucoup d'éléments HTML sont conçus pour modifier la structure sémantique ou la signification d'un document. Certains sont au niveau bloc, mais la plupart sont au niveau ligne et peuvent être incluse dans le corps de texte normal.

### Éléments bloc généraux

<p>…</p> : Balise de type block, elle correspond à la création d'un nouveau paragraphe.
Syntaxe :
La balise de fermeture n'est pas nécessaire en HTML. Elle est cependant obligatoire en xHTML.
La balise <div>...</div> est une balise générique de cette catégorie qui est souvent utilisée pour réaliser la mise en forme du site sans une signification sémantique particulière.

## Niveau ligne
### Liens

Les liens, ou hyperliens, sont l'un des éléments les plus basiques et importants.
La balise <a> est utilisée pour insérer un hyperlien :
La balise ouvrante est <a href="">, la balise fermante est </a>. L'URL complète du lien doit être spécifiée à l'aide de l'attribut href lorsqu'il s'agit d'un lien externe vers un site web. En revanche, il n'est pas nécessaire d'indiquer l'URL complète pour les liens internes ou les ressources dans le même dossier.
Exemple d'utilisation avec l'URL "http://fr.wikipedia.org/wiki/Hypertext_Markup_Language" :
L'option target permet d'indiquer si la cible est ouverte dans la même fenêtre ou dans une nouvelle fenêtre du navigateur.
Exemple :

### Images et objets
#### Balise image

La balise<img> permet d'afficher des images en utilisant l'attribut src pour indiquer l'emplacement (URL) de l'image :
D'autres attributs tels que title, width et height peuvent être utilisés afin de contribuer à la mise en page et à l'accessibilité :

##### width="150"

    Règle la largeur de l'image sur 150 pixels.

##### height="150"

    Règle la hauteur de l'image sur 150 pixels.

##### title="Message"

    Insère un message qui est affiché lorsque le curseur reste immobile au-dessus de l'image.
Une balise pixel est une petite image invisible (de 1x1 pixel) incorporée dans une page web pour suivre et collecter des données sur les activités des utilisateurs en ligne. Celle-ci peut être associée aux cookies sur le disque dur des visiteurs.

#### Balise span

La balise <span> n'a pas de signification particulière. Elle est utilisée pour appliquer des styles ou des attributs spécifiques à une partie du texte au sein d'un autre élément.
Par exemple, le code suivant :
Affiche : La voiture rouge.
Elle est généralement utilisée pour décorer une phrase ou un groupe de mots. Elle va de pair avec la balise <div>…</div> qui elle est de type block.

### Formulaires

En HTML les formulaires sont entre les balises
Il existe plusieurs balises permettant de faire un formulaire, mais la principale est la balise
Elle possède plusieurs types, chacun adapté à un type spécifique d'entrée :
Il est possible de créer un champ de texte à plusieurs lignes avec la balise :
Voici un exemple de formulaire en HTML qui pourrait être utilisé dans une page d'authentification sur un site web :

## Jeu de cadres

Le système des cadres regroupe quatre balises HTML :

### <frameset> (obsolète en HTML 5)

Conteneur de cadres d'un document. Un document HTML contient soit un élément body, soit un élément frameset. Ce dernier définit alors l'étendue de la fenêtre d'affichage où vont apparaître les cadres (éléments frame) qu'il contient. Chaque cadre contient un document HTML à part entière. Leur mise en page est définie par des listes séparées par des virgules, des attributs HTML rows et cols.
Les jeux de cadre permettent de partager des données en employant un élément OBJECT dans l'élément HEAD d'un document frameset

### <frame> (obsolète en HTML 5)

Cet élément définit un seul cadre ou une région du frameset. Un document séparé peut être affiché avec l'attribut frame nommé src.
Il est aussi possible de prendre un frame pour cible d'autres documents HTML. Pour cela, il suffit d'assigner un nom au frame via l'attribut "name", il sera alors considéré par les "authors" comme la cible ("target") de liens définis par d'autres documents. L'attribut TARGETpeut être placé pour des éléments qui créent des liens (A, LINK), des image maps (AREA), et des forms (FORM).

### <noframes> (obsolète en HTML 5)

L'élément noframes permet de définir un contenu HTML alternatif pour les agents utilisateurs qui n'implémentent pas la technologie des cadres.
Exemple

### <iframe> (obsolète en HTML 5)

Introduite en 1997 par Microsoft Internet Explorer, la balise iframe signifie inline frame (cadre en ligne). Elle affiche un autre document HTML dans une frame. Mais contrairement à l'élément object, elle peut être la cible de liens définis par d'autres éléments, et peut être sélectionnée par l'agent utilisateur pour imprimer, afficher la source, etc.
Le contenu de l’élément est utilisé comme texte alternatif pour les navigateurs qui ne prennent pas en charge les iframes.
Exemple :
Les sites Facebook et Twitter utilisent des iframes pour afficher directement les contenus de sites web tiers. Google AdSense quant à lui s'en sert pour que ses bannières publicitaires apparaissent sur d'autres sites.