Meter et progress HTML5

meter

La balise <meter> peut être utilisée pour fournir l'affichage graphique pour une valeur particulière. Cela fait le choix idéal pour des choses comme les scores de quizz par exemple, etc.
<meter min="0" max="100" value="50"></meter>
meter html5
meter html5
En outre, nous pouvons spécifier une plage pour les mesures considérés comme faible, moyen ou une valeur considérés comme élevées. Cela permettent également de conditonner la couleur de l'affichage.
<meter min="0" max="20" low="8" high="16" optimum="20" value="2">2/20</meter> 
<meter min="0" max="20" low="8" high="16" optimum="20" value="10">10/20</meter> 
<meter min="0" max="20" low="8" high="16" optimum="20" value="20">20/20</meter>
2/20 10/20 20/20


Progress

Si l'élément <output> est utilisé pour afficher le résultat d'un calcul, l'élément <progress> devrait représenter l'état d'avancement d'une tâche ou d'une action au moyen d'une barre de progression. Il est possible d'animer la progression de la barre en utilisant le javascript, soit sur des évènements spécifiques, soit sur un simple timeout. 
<progress max="10" value="6"> 6 </progress> 
Si le navigateur ne supporte pas l'élément, son contenu sera affiché à la place. Prenons l'exemple:

Code HTML5:

<progress id="barre" max="100" value="0"></progress> 
<span id="avancement"></span> 
<input type="button" value="Démarrer" onclick="StartProgress();" />

Code JavaScript:

var i = 0;    
var barre = document.getElementById('barre');  
var avancement = document.getElementById('avancement');
 
function StartProgress(){
  MyTimeOut = setTimeout('Progress()', 500);
}
 
function Progress(){ 
  i += 5;
  if(i <= barre.max){
     barre.value = i;
     avancement.innerHTML = i.toString() + ' %';
     MyTimeOut = setTimeout('Progress()', 500);
  }
}

Output HTML5

On utilise la balise <output> au sein de formulaires pour afficher le résultat d'un calcul à partir des autres champs, il peut être utilisé librement dans tous les navigateurs.
<output value=100> 100 </output>
output html5
Output HTML5

Avec un exemple, nous pourrions utiliser la balise <output> pour représenter le résultat d'un simple calcul mathématique basé sur un formulaire.
<form>
  <input name="num1" id="num1" type="number"> * 
  <input name="num2" id="num2" type="number"> = 
  <output for="num1 num2"></output>
</form>
Notez que nous utilisons un nouveau type de la balise <input> : number. Donc:
<form oninput="result.value = num1.value * num2.value"> 
   <input name="num1" id="num1" type="number"> *
   <input name="num2" id="num2" type="number"> = 
   <output for="num1 num2" name="result"></output>
</form>
* =

Nous pouvons aussi utiliser JavaScript pour mettre à jour la valeur de sortie <output>.

JavaScript:

var form = document.querySelector('form'),
num1 = form.num1, 
num2 = form.num2, 
output = document.querySelector('output');
    [].forEach.call(document.querySelectorAll('input'), function(el) { 
    el.addEventListener('change', function() {
        output.value = ~~num1.value * ~~num2.value; 
    });
});

JQuery:

var form = $('form'), 
num1 = form[0].num1, 
num2 = form[0].num2, 
output = $('output');
form.on('change', 'input', function() { 
    output.val( ~~num1.value * ~~num2.value );
});
Toujours même résultat. :)

HTML5 Data Attribute

Avant, nous avons eu recours généralement à des attributs d'éléments aléatoirement pour le but de stockage de données ou de contenu.
<a href="#" class="modal"> Lien </a>
<img rel="gallery" src="image.jpg" alt="Image">

Avec HTML5 data attribute, nous n'avons plus besoin d'accéder à ces attributs lorsque nous avons besoin de stocker les métadonnées. Au lieu de cela, nous pouvons utiliser des attributs personnalisés.
<a href="#" data-modal>
<img src="image.jpg" data-overlay="gallery">

Un attribut de donné personnalisé est formé de la même manière que l’ensemble des attributs.
La seule condition c’est que le ‘data-‘ doivent être précédées le nom de l'attribut, pour indiquer son rôle.

Options d’utilisation :

L’utilisation des données attributs n’a pas de limite :

HTML5 Data attribute & CSS

Que faire si vous avez besoin d’appliquer un style personnalisé à des liens qui répondent à une certaine condition ? De mettre en évidence certains de vos liens préférés ?
<ul>
   <li><a href="#">Lien 1</a>
   <li><a href="#">Lien 2 préféré</a>
   <li><a href="#">Lien 3</a>
   <li><a href="#">Lien 4 préféré</a>
   <li><a href="#">Lien 5</a>
</ul>
Pour donner un style particulier à nos liens préférés dans la liste, nous pouvons utiliser un attribut personnalisé.
<ul>
   <li><a href="#">Lien 1</a>
   <li><a href="#" data-lien-prefere>Lien 2 préféré</a>
   <li><a href="#">Lien 3</a>
   <li><a href="#" data-lien-prefere>Lien 4 préféré</a>
   <li><a href="#">Lien 5</a>
</ul>
Maintenant, nous pouvons facilement référencés à ces liens dans une feuille de style utilisant un sélecteur d’attribut.
a[data-lien-prefere] {
    color: red;
    font-weight: bold;
}
HTML5 data attribute

HTML5 Data attribute & JavaScript

Les attributs personnalisés peuvent également être facilement utilisés dans du JavaScript.
Peut-être vous avez besoin d'un moyen facile pour indiquer des sections de votre site qui devrait servir de superpositions modales.
<a href="#" data-modal data-target="contact">Contact</a>
<div id="contact" style="display: none;">
    <h2>Form Contact</h2>
    ...
</div>
Dans cet exemple, la balise <a></a> utilise deux attributs personnalisés:
  • data-modal : précise que l'ancre devrait un modal
  • data-target : indique l’id de la section précisée
Le script interroge maintenant les DOM, et capture toutes les éléments data-modal.
$('a[data-modal]').on('click', function(e) {
    e.preventDefault();
    var target = $('#' + $(this).data('target'));
    target.show();
});
Dataset

Dataset Object ou DOMStringMap, renvoie une liste de toutes les données attributs associé à un élément.
<a href="#" data-length="1m20s" data-category="video">Lien</a>
Les deux attributs de données peuvent être accessibles, comme ceci:
var link = document.querySelector('a');
console.log(link.dataset);
HTML5 data attribute dataset

Requêtes facile avec l'API Selectors

Vous êtes probablement déjà familiers avec getElementById(), getElementByTagName() et getElementByName().
// Récupérer l'attribut "id" d'un élément
document.getElementById('#id');
// Récupérer tous les éléments de la famille
document.getElementByTagName('div');
// Récupérer les éléments qui possèdent
// un attribut "name" que vous spécifiez
document.getElementByName('nom');
L'API Selectors introduit deux nouvelles méthodes pour interroger les DOM (querySelector(), querySelectorAll()).
Maintenant, nous pouvons utiliser les sélecteurs CSS que vous êtes déjà familier avec Au niveau du DOM.

Support:

querySelector()

Cette fonction renvoie le premier élément trouvé correspondant au sélecteur CSS spécifié.
// Trouver le premier élément avec un id = content
document.querySelector('#content');
 
// Trouver le premier élément input qui a un attribut type
document.querySelector('input[type]');
 
// trouver le premier élément li dans l'élémeny nav
 document.querySelector('nav li');

Un élément sélectionner peut également être utilisé sous forme de base, pour effectuer d'autres requêtes.
// Trouver le premier élément ayant un id = content
var content = document.querySelector('#content');

// Trouver le premier élément li dans notre content
content.querySelector('li');

querySelectorAll()

Lorsque vous n'avez besoin que d'un seul élément du DOM, utilisez querySelector(), il est optimisé dans ce but. Cependant, si nous avons besoin de capturer plusieurs éléments dans le DOM. Dans ces situations, querySelectorAll() est le bon choix.
Il va renvoyer tous les éléments (sous forme de tableau) correspondant au sélecteur CSS fourni.
// Select tous les éléments span
document.querySelectorAll('span');

Pour sélectionner tous les éléments span et li par exemple dans un du document, vous pouvez simplement les séparées par des virgules.
// Trouver le premier élément span ou bien li
document.querySelector('span, li');

// Trouver les éléments span et li
document.querySelectorAll('span, li');

Les balises structurelles HTML5

header & footer:

On va voir un exemple utilisons les balises <footer> et <header>. Leur utilisation peut certainement dépasser l’en-tête et le pied de page traditionnelle. Prenons l’exemple :
<div id="header"> 
  <h1>Mon Site</h1> 
  <ul>
    <li><a href="#">Accueil</a></li>
    <li><a href="#">A propos</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</div>
<div id="main"> 
  <div class="article">
    <h1>Titre de l'article</h1>
    <p>
      Corps de l'article
    </p>
  </div>
</div>
<div id="footer"> 
  <p>Copyright - 2013</p> 
  <ul>
    <li><a href="#">Accueil</a></li> 
    <li><a href="#">A propos</a></li> 
    <li><a href="#">Contact</a></li>
  </ul>
</div>
Le balisage ci-dessus est sûrement normal. C'est la structure de base d’une page HTML : un en-tête, le contenu principal, puis le pied de page. Maintenant, on va utiliser les nouveaux éléments footer et header :
Commençons par remplacer les deux balises <div id="header"> et <div id ="footer"> avec des éléments plus appropriés header et footer.
<header>
  <h1>Mon Site</h1> 
  <ul>
    <li><a href="#">Accueil</a></li>
    <li><a href="#">A propos</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
</header>
<div id="main">
  <div class="article">
    <h1>Titre de l'article</h1>
    <p>
      Corps de l'article
    </p> 
  </div>
</div>
<footer> 
  <p>Copyright - 2013</p> 
  <ul>
    <li><a href="#">Accueil</a></li> 
    <li><a href="#">A propos</a></li> 
    <li><a href="#">Contact</a></li>
  </ul>
</footer>
Notez qu'il est parfaitement acceptable d'utiliser ces deux éléments même pas dans leur emplacement traditionnelle, vous n'êtes pas limité au seul usage. Il conviendrait également, par exemple, d'utiliser la balise <header> pour désigner l'en-tête d'un article, ou d’une section. Etc... 
En outre, si votre article contient des informations, des liens vers d'autres articles, ou des liens de réseaux sociaux, vous pouvez aussi les envelopper librement dans une balise <footer>.

nav:

Ensuite, prenons les liens de navigation. Dans sa forme actuelle , nous avons une liste simple:
<ul>
  <li><a href="#">Accueil</a></li> 
  <li><a href="#">A propos</a></li> 
  <li><a href="#">Contact</a></li>
</ul>
Il n'y a certainement aucun erreur, ajoutons la nouvelle balise html5 <nav>:
<nav>
  <ul>
    <li><a href="#">Accueil</a></li> 
    <li><a href="#">A propos</a></li> 
    <li><a href="#">Contact</a></li>
  </ul>
</nav>
La balise <nav> détermine une section dans laquelle sont regroupés des liens de navigation vers d'autres pages. Elle correspond au menu principal d'un site.

article:

Nous avons été obligés d'utiliser des noms de classes pour désigner et cibler leurs articles.
<div class="article">
Maintenant, nous pouvons utiliser la nouvelle balise HTML5 <article>.
Si nous prenons l'exemple précédent, il faut actuellement avoir:
<header>
  <h1>Mon Site</h1> 
  <nav>
    <ul>
      <li><a href="#">Accueil</a></li>
      <li><a href="#">A propos</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>
</header>
<div id="main">
  <article>
    <h1>Titre de l'article</h1>
    <p>
      Corps de l'article
    </p> 
  </article>
</div>
<footer> 
  <p>Copyright - 2013</p> 
  <nav>
    <ul>
      <li><a href="#">Accueil</a></li> 
      <li><a href="#">A propos</a></li> 
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>
</footer>
La balise <article> détermine une section de la page indépendante relative au traitement d'un sujet spécifique comme un nouveau article dans un blog.

section:

La balise <section> détermine une section regroupant les éléments d'un même thème au sein d'un document.
c'est un moyen facile pour bien divisés vos sites en plusieurs sections, prenons par exemple un journaux: Il est divisé en plusieurs sections: section sportive , section politique , section financière...etc
<section>
  <h1>Sport</h1>
  <p>Bla Bla Bla Bla</p>
</section>
<section>
  <h1>Politique</h1>
  <p>Bla Bla Bla Bla</p>
</section>
<section>
  <h1>Finance</h1>
  <p>Bla Bla Bla Bla</p>
</section>
Remarquez qu'on peut utilser plusieurs balises <h1>. En HTML4 , cela a été désapprouvée.
Cependant, ce n'est plus le cas . La section va créer un nouveau contexte. Ce que vous devez comprendre, c'est que la balise <section> n'est pas destinée à remplacer le div, mais à contenir les éléments de même contexte.

aside:

La balise <aside> permet de déclarer une section associée soit au document soit à la balise <article>, Elle représente une section d'une page qui est lié au contenu qui l'entoure.
<article>
  <h1>Titre</h1>
  <aside>
    <h3>Sidebar</h3>
    <div>
      infos...
    </div>
  </aside>
</article>

Introduction à l'HTML5

HTML5 nous permet d'accéder à des nouvelles API , aussi l'accès à des éléments HTML qui peuvent décrire une page web avec plus de précision.

Exemples:
  • Avez- vous utiliser un div pour un article ? Bien sûre oui;
>> Maintenant, vous pouvez utiliser la balise <article> pour des articles (plus approprié).
  • Qu'en est-il le pied de page de votre site web , où mettez-vous votre informations de copyright et d'autres liens ? 
>> Avec HTML5, vous peut utiliser la balise <footer> (bien nommé).
Introduction-HTML5

Eléments à supprimer :

Nous allons apprendre ce qui peut être retiré à nos page HTML en toute sécurité !

Structure d'une page HTML4:
<DOCTYPE HTML PUBLIC "- //W3C/ / DTD HTML 4.01 Transitional//EN" "
 http://www.w3.org/TR/html4/loose.dtd ">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
  <title> Titre </ title>
  <link rel="stylesheet" type="text/css" href="style.css" />
  <script type="text/javascript" src="script.js"> </ script>
</head>
<body>
  // La suite
</body>
</html>
Il n'ya rien de particulièrement avec le code ci-dessus. Mais, Il ya bien quelques morceaux inutiles, qui peuvent facilement être enlevés.

Commençons par le haut:

DOCTYPE:

Tout d'abord, nous avons ce DOCTYPE.

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

Savez-vous : vous n'avez jamais mémorisé cela :). Maintenant, nous pouvons utiliser une version beaucoup plus courte et plus simple.

<!DOCTYPE html>

C'est simple. En plus, tous les navigateurs peut connaître cette DOCTYPE , même que la version du navigateur prend en charge HTML5 ou non.
Vous pouvez l'utiliser en toute confiance dans vos projets.

Prenons aussi ce code:
<!DOCTYPE html public '' >

Vous voyez les guillemets après public? C'est votre espace :). Écrivez ce que vous voulez - le navigateur ne se soucie pas.

META:

Ensuite, nous arrivons à une autre longue chaîne : la balise <meta>. C'est là où on déclare l'encodage du document.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Nous allons remplacer tout avec quelque chose simple.

<meta charset="utf-8">

Encore une fois, nous pouvons sûrement l'utiliser dans tous les navigateurs actuels.

SCRIPTES ET LIEN TYPES:

<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="script.js"> </ script>

Lorsque vous référencez les feuilles de style et des scripts, nous pouvons retirer type = "text/css" et type = "script/javascript", Ce sont les types de défaut.

<link rel="stylesheet" href="style.css">
<script src="script.js">

Et avec ce dernier changement, notre exemple balisage HTML5 ressembler à ceci:

<! DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title> Titre </ title>
  <link rel="stylesheet" href="style.css">
  <script src="script.js"> </ script>
</ head>
<body>
  // La suite
</ body>
</ html>

Qu'est-ce que HTML5?

HTML5 est ... HTML. C'est tout.

Simplement HTML5 est la nouvelle version HTML, qui prend en charge un nouveau DOCTYPE, des nouvelles balises sémantiques (comme en-tête et pied de page), support de forme améliorée, audio et vidéo, création des jeux et des graphiques complexes avec le canvas, svg,... Il nous donne également la possibilité d’accès à nouveau JavaScript API, tels que la géolocalisation, drag-and-drop, web workers et le local stockage.

2022

Vous avez probablement entendu parler à un moment donné que HTML5 ne sera pas «Recommandé» jusqu'au 2022.

En 2006, Ian Hickson a proposé un calendrier général pour le HTML5 cycle de vie.

  • Premier projet du W3C en Octobre 2007.
  • Dernière version de travail d'appels en Octobre 2009.
  • Appel à contributions pour la suite de tests en 2011.
  • Recommandation Candidate en 2012.
  • Première version de la suite de test en 2012.
  • Deuxième version de la suite de tests en 2015.
  • La version finale de la suite de tests en 2019.
  • Dernière version de travail en 2020 appels.
  • Projet de recommandation en 2022.

L’élément le plus important dans cette liste est le quatrième: "Recommandation Candidate en 2012". L'année lorsque HTML5 fonctionne, est terminée. Et qu'est-ce que vous savez: c'est l’année dernier!

La vérité est que HTML5 prêt à utiliser dès maintenant.
C’est vrai que quelques-uns des spécifications et des API sont encore dans les premiers stades, mais vous pouvez toujours utiliser de manière fiable plupart d'entre eux ... pour le moment.

Support du navigateur

Ie : 9+
FireFox : 10+
Chrome : 17+
Opera : 11.5+
Safari : 5.1+