Géolocalisation HTML5

La géolocalisation fait partie des API gravitant autour de HTML5 (Geolocation API Specification) et des nouvelles fonctionnalités introduites par la mobilité.
Il permet au navigateur de pointer votre emplacement actuel. L'API nous permet soit d'effectuer une suivi sur une base ponctuelle ou continu, qui peut être utile dans les situations où le visiteur de votre site est en mouvement.

D'ailleurs, nous allons voir un exemple de code minimal de cette API (Géolocalisation HTML5) avant d'entrer dans les options disponibles.
Voici la démonstration la plus simple exemple que je peux gérer:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Géolocalisation HTML5</title>
</head>
<body>
 
<script> 
(function(geo){
  if(geo){
    geo.watchPosition(function(location) {
      console.log(location);
    });
  }
})(navigator.geolocation); 
</script>
 
</body>
</html>
Collez ce code dans une page HTML vide, et l'afficher dans le navigateur. Toutefois, vous pouvez constater que rien n'est affiché au navigateur.

Pour que la géolocalisation html5 fonctionne correctement vous devez soit enregistrer le fichier sur votre hébergeur, ou utilisez votre localhost pour accéder à la page - comme WAMP, XAMPP, MAMP, ....

Une fois que vous déplacer le fichier, recharger la page, et le navigateur demander l'accès à suivre votre position géographique.
Géolocalisation HTML5
Géolocalisation HTML5
Quand vous pensez à ce sujet : Après que je clique sur "Partager sa localisation", quelles sont les informations a-t-on besoin pour se géolocaliser ou bien quelles sont les informations partagés ?

D'ailleurs, la demande de la permission est nécessaire avant de suivre. Sinon, cela pourrait être un énorme problème de sécurité!
Ensuite, afficher la console, et vous trouverez un objet, qui contient quelque informations:
Géolocalisation HTML5
L'API donne aussi accès lorsqu'il y a déplacement à la vitesse et à la direction (en ° par rapport au nord géographique).

Test

Comme avec toutes les nouvelles API, nous devons d'abord déterminer si l'API y reconnaît par le navigateur. Comme vous l'avez appris dans l'article de la détection (Feature Detection HTML5).
le test de la géolocalisation html5 est très simple:
if ( navigator.geolocation ) alert('Géolocalisation HTML5 fonctionne :)');
// Ou, avec Modernizr:
if ( Modernizr.geolocation ) alert('Géolocalisation HTML5 fonctionne :)');

Les deux méthodes de base:

L'API Géolocalisation est composé de deux méthodes principales:
1. getCurrentPosition : permettant un ciblage ponctuel
2. watchPosition : pour un suivi continu
Ces deux méthodes sont très semblables, à l'exception watchPosition continuer à mettre à jour votre code. Naturellement, cela devrait être utilisé dans des situations où la position de l'utilisateur est changée en permanence.

getCurrentPosition()

Ces deux méthodes acceptent un, deux, ou trois arguments.
1. successCallback : exécuter lorsque le navigateur suivi le visiteur.
2. ErrorCallback : exécuter si la tentative de suivre le visiteur échoue.
3. PositionOptions : facultatif objet pour les options enableHighAccuracy, timeout, et maximumAge.

Ces arguments peuvent être appliquées, comme ceci:
navigator.geolocation.getCurrentPosition (successCallback, errorCallback, {
  enableHighAccuracy: true, 
  timeout: 15000, 
  maximumAge: 0
});
Vous pouvez tester ce code pour récupérer votre position:
if ( navigator.geolocation ) { 
  navigator.geolocation.getCurrentPosition(function(emplacement) {
    console.log(emplacement);
  });
}
Généralement, les deux propriétés dont vous avez besoin sont latitude et longitude. Nous pouvons identifier ces valeurs à la console, comme suit:
console.log( emplacement.coords.latitude, emplacement.coords.longitude);

watchPosition ()

Cela devrait être la méthode préférée dans la plupart des situations. La différence de base entre getCurrentPosition() et watchPosition() que la dernier continuera en gardant un œil sur la position de l'utilisateur.
watchPosition() retourner une valeur qui identifie la position actuelle. Cela peut être utilisé pour effacer ou stopper ce suivi continu, on utilise la méthode clearWatch():
var watch = navigator.geolocation.watchPosition(function(location) { 
});
// Plus tard
navigator.geolocation.clearWatch(watch);
console.log(watch);

Options

enableHighAccuracy : Obtient une position plus précise via GPS.
navigator.geolocation.watchPosition(successCallback, errorCallback, { 
  enableHighAccuracy: true
});
timeout : Durée avant renvoi vers la function d'erreur.
navigator.geolocation.watchPosition(successCallback, errorCallback, { 
  timeout: 15000 // quinze secondes
});

maximumAge : Durée de la mise en cache de la position actuelle de l'utilisateur. Si maximumAge : 0, donc pour chaque chargement de page, une nouvelle position seront acquises. Sinon, après la première demande, le navigateur attendre l'expiration de maximumAge et initialiser une nouvelle position.
navigator.geolocation.watchPosition(successCallback, errorCallback, { 
  maximumAge: 1000 * 60 * 60 // une heure
});

Contrôler le lecteur vidéo HTML5 avec JavaScript

En plus des contrôles intégrés, nous pouvons également contrôler une vidéo avec la nouvelle API médias de HTML5.
Contrôler le lecteur vidéo HTML5 avec JavaScript
Contrôler le lecteur vidéo HTML5 avec JavaScript

Detection:

Détecter si le navigateur support les balise <video> et <audio> est simple (Feature Detection HTML5).
Nous avons seulement besoin de déterminer si la méthode "canPlayType" est disponible.
Si le navigateur reconnaît la balise <video>, il a également reconnaît la balise <audio>. 
Tous les navigateurs qui reconnaissent une, sera également reconnaître l'autre.
if ( 'canPlayType' in document.createElement('video') ) {
  // Code
}
if ( 'canPlayType' in document.createElement('audio') ) {
  // Code
}
Ou bien:
var supportMedia = (function() {
  return ('canPlayType' in document.createElement('video'));
})();
if ( supportMedia ) { 
  // Code
}
Si vous utilisez Modernizr, vous pouvez écrit:
if ( Modernizr.video ) { ... }
if ( Modernizr.audio ) { ... }
Dans certains cas, il est aussi utile de déterminer si les navigateurs reconnaissent un codec particulier(mp4, webm, ogg, ...). Est-il possible?
Oui bien sûre. Modernizr fournit une solution élégante. Par exemple:
Modernizr.video  // navigateur prend en charge la balise video
Modernizr.video.webm // navigateur prend en charge le format WebM
Modernizr.video.h264 // navigateur prend en charge le format H.264
Les API HTML5 audio et vidéo sont identiques. Donc on pourra tester le support de l'audio avec:
Modernizr.audio.mp3
Modernizr.audio.ogg
Modernizr.audio.wav

Méthodes:

Les méthodes disponibles pour les médias que ce soit audio ou video sont:

  • play() => commence ou continue la vidéo référencée.
  • pause() => pause la vidéo.
  • load() => récupérer une nouvelle ressource multimédia.
  • canPlayType() => détermine si le navigateur supporte un codec particulier.
Ces méthodes peuvent être utilisées, comme ceci:
var video = document.getElementById('video');
video.play();
video.pause();
video.canPlayType('audio/ogg');

événements:

  • play: Lorsque la vidéo est lancée.
  • pause: Lorsque la vidéo est en pause.
  • ended: Lorsque la vidéo est terminée.
  • progress: Lorsque les médias ont été récupérées.
  • canplay: Lorsque la vidéo a été entièrement chargées.

attributs:

  • duration: La durée de la vidéo associée.
  • currentTime: La position actuelle de la vidéo. Par exemple, lorsque la vidéo est en pause.
  • autoplay: Une valeur booléenne indiquant si la vidéo a été fixé à autostart.
  • poster: L'image d'affiche fourni.
  • paused: Une valeur booléenne indiquant si la vidéo est actuellement pause.
  • ended: Une valeur booléenne indiquant si la vidéo est terminée.

Prenons un exemple pratique:

HTML5:
<video id="video" width="500" height="500">
  <source src="video.mp4">
  <source src="video.webm">
  <source src="video.ogg">
</video>
<button id="button">Play</button>
JavaScript:
var video = document.getElementById("video"),
var button = document.getElementById("button");

// Lancer la vidéo lorsque le bouton est cliqué.
button.addEventListener('click', function() {
  video[video.paused ? 'play' : 'pause'](); 
}, false);

// Changer le text en Pause si la vidéo est lancée
video.addEventListener('play', function() {
  button.innerHTML = 'Pause';
}, false);

// Changer le text en Play si la vidéo en pause
video.addEventListener('pause', function() {
  button.innerHTML = 'Play';
}, false);

// Changer le text en Play si la vidéo est terminée
video.addEventListener('ended', function() {
  button.innerHTML = 'Play';
}, false);
JQuery:
var $video = $('#video'),
video = $video[0];

$video
.on('play', function() {
  $('#button').text('Pause');
})
.on('pause ended', function() {
  $('#button').text('Play');
});
$('#button').on('click', function() { 
  video[video.paused ? 'play' : 'pause']();
});

HTML5 Video

Nous avons maintenant la possibilité de fournir l'audio et lecture vidéo dans le navigateur. Avant, si nous voulons intégrer une vidéo dans un site web:
<object width="500" height="500"> 
  <param name="movie" value="URL"> 
  <param name="allowFullScreen" value="true"> 
  <param name="allowscriptaccess" value="always"> 
  <embed src="URL" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="500" height="500">
  </embed>
</object>
Probablement, vous n'avez jamais écrit manuellement ce code. La plupart des hébergeurs vidéo, tels que YouTube, offre une option "Embed" que vous pouvez la copier-coller.
Cependant, le support de la vidéo n'a pas été fournie natif dans le navigateur. Ce dernier passerait la vidéo à une plugin de type Flash.

Utilisation: 

 La balise <object> peut maintenant être remplacée par:
<video src="video.mp4"></video>
//ou bien:
<video>
  <source src="video.mp4"></source>
</video>
Support de navigateur:
html5 video
HTML5 video

Nous pouvons faire chaque navigateur heureux, en fournissant de multiples balises <source>:
<video> 
  <source src="video.mp4"> 
  <source src="video.webm">
  <source src="video.ogg">
</video>
Le navigateur va lire chaque balise dans l'ordre. Si ne le support pas, il passera à la suivante.

L'attribut "type" permet d'empêcher le navigateur de "renifler" chaque balise source, nous pouvons spécifier un type MIME.
<video>
  <source src="video.mp4" type="video/mp4"> 
  <source src="video.webm" type="video/webm">
</video>
De cette façon, le navigateur n'a pas besoin de télécharger le méta informations pour la vidéo. 
Mais, qu'est-ce qui se passe dans les navigateurs qui ne reconnaissent pas la balise vidéo?
Absolument rien. Nous pouvons fournir un lien pour ces situations.
<video>
  <source src="video.mp4">
  <source src="video.webm">
  <a href="video.mp4">Télécharger le vidéo</a>
</video>
Ce lien de téléchargement ne s'affiche que dans les navigateurs qui ne le support pas la balise video.

L'attribut "controls"

 Permet d'ajouter les boutons 'Lecture', 'Pause' et la barre de défilement.
<video controls>
  <source src="video.mp4">
  <source src="video.webm">
</video>

L'attribut "autoplay"

L'attribut 'autoplay' nous permet de lire la vidéo immédiatement lorsque la page est chargés:
<video controls autoplay> 
  <source src="video.mp4"> 
  <source src="video.webm">
</video>

L'attribut "poster"

Par défaut, l'image afficher de la vidéo sera la première affiche de la vidéo. L'attribut "poster" permet de spécifier une image personnalisée.
<video controls poster="image.jpg"> 
  <source src="video.mp4"> 
  <source src="video.webm">
</video>
Il peut être utilisé aussi dans des situations où les données vidéo n'est pas encore disponible  preload = none), le contenu ou la taille de la vidéo est vide.
<video preload=none controls poster="image.jpg">

L'attribut "loop"

La spécification de l'attribut "loop" permet de lire la vidéo en boucle automatiqument.
<video controls poster="image.jpg" loop> 
  <source src="video.mp4"> 
  <source src="video.webm">
</video>

L'attribut "preload"

Indique si la vidéo peut être préchargée dès le chargement de la page ou non. Cet attribut peut prendre les valeurs:
none: pas de préchargement. Indique au navigateur de commencer à charger la vidéo uniquement lorsque l'utilisateur active les contrôles.
auto(par défaut): le navigateur décide s'il doit précharger la vidéo.
meta: charge uniquement les métadonnées (durée, etc.).

Logiciel de conversion:


Feature Detection HTML5

Vous voulez savoir si le navigateur reconnaît les nouveautés HTML5, Allons-y. D'abord, je vous recommandons d'utiliser une bibliothèque appelée "modernizr" pour effectuer des tests de fonctionnalité, il est certainement important d'avoir une idée de ce qui se passe derrière la scène.

feature detection html5
Feature Detection HTML5
Quand nous essayons d'appliquer un type input que le navigateur ne le support pas, il sera toujours afficher l'input de type "texte". Pour tester si le navigateur prend en charge un type quelconque:
var input = document.createElement ('input');
input.setAttribute ('type', 'color');
if (input.type == 'color') {
  //Navigateur prend en charge ce type
}
Pour déterminer si un navigateur prend en charge un attribut:
if ('placeholder' in document.createElement('input')) {
  //Navigateur prend en charge l'attribut placeholder
}
Ce code détermine simplement si un attribut existe dans l'objet document.createElement('input'). C'est exactement la même chose que :
var langues = {
  francais : 'premier',
  anglais  : 'deuxieme'
};

if ('francais' in langues ) { ... }

Les balises:

audio et vidéo:

Presque tous les navigateurs modernes supportent la balise audio et vidéo. Nous pouvons encore fournir le test pour les anciens navigateurs. Nous pouvons tester des médias par la méthode "canPlayType":
if (document.createElement('audio').canPlayType) {
  // Mettez votre code ici
}
ou bien:
if ('canPlayType' in document.createElement('video')) {
  //Code
}

canvas:

Si nous avons besoin de tester le support de canvas :
if (document.createElement('canvas').getContext) {
  //recupérer votre canvas
}

Local storage:

Tester le support de LocalStorage est simple. Nous pouvons générer des erreurs utilisons le block try{...}catch{...}:
try {
  if ('localStorage' in window.localStorage != null)
    return true; 
} catch (e) {
    return false;
}
Ce code détermine si localStorage exists dans l'objet window. Si des erreurs se produisent dans le processus, il retourne false.

Autres API:

Le test pour les autres nouvelles API est plus ou moins le même processus.

if ( navigator.geolocation )
Offline
if ( window.applicationCache )
Web Workers
if ( window.Worker )
History
if ( window.history )
//ou bien
if ( window.history && history.pushState )

HTML5 Input Type


En plus de nouveaux attributs HTML5, nous avons aussi de nouveaux types de la balise <input />.
  • email
  • range
  • color
  • number 
  • datetime 
  • date 
  • month 
  • week
  • time
  • url 
  • tel
  • search


email:

Le type "email" autoriser uniquement la structure des adresse email valide.
<input type="email" >

input type email


range:

Le type "range" nous permet de créer un curseur native.
<input type="range" >
input type range

Plus particulièrement, il peut recevoir des attributs: min, max, step, et value, etc.
Pour une démonstration rapide, nous allons prendre un exemple:
HTML5:
<input type="range" id="range" min="0" max="10" step="2" value="0"> 
<output for="range"></output>
Maintenant, nous allons utiliser JavaScript/JQuey pour définir la valeur rendu.
JavaScript:
var range = document.querySelector('#range'), 
output = range.nextElementSibling;
output.value = range.value;
range.addEventListener('change', function() {
  output.value = range.value; 
});
JQuery:
var range = $('#range'),
output = range.siblings('output');
output.val( range.val() );
range.on('change', function() {
  output.val( range.val() ); 
});
La valeur produit correspondant à ce nous avons spécifié dans l'attribut "range".


number:

Permet de saisir seulement des chiffres, peut-être lorsque vous avez besoin de l'âge ou d'un numéro quelconque.
<input type="number" >
input type number

Vous pouvez changer le style de ce type, on utilise le sélecteur:
input::-webkit-inner-spin-button { 
  /* votre style */
}


date:

Le type "date" nous donne la possibilité d'indiquer aux utilisateurs de sélectionner une date valide.
<input type="date" >
Quelques options de ce type:
min:
Certains sites vous obligent à choisir une date dans un délai spécifique. L'attribut "min" et "max" peut être utilisé pour cela:
<input type="date" min="2013-12-15" max="2013-12-30">
Dans les navigateurs qui supporte le type "date" seules les dates spécifié seront sélectionnable.

input type date-min-max

step:
Par ailleurs, si vous voulez limiter le choix à chaque cinq journée par exemple on peut utiliser l'attribut "step"
<input type="date" step="5">
input type date-step
d'autres options:
En plus, HTML5 offre également des choix alternatifs:
<input type="datetime">
<input type="date">
<input type="month">
<input type="week">
<input type="time">


color:

<input type="color">
les navigateurs prennent en charge des différents couleur.

input type color


url:

Le type "url" permet de s'assurer que le text saisi par l'utilisateur est un url valide.
<input type="url">

input type url


tel:

Leur avantage actuel est de présenter la forme d'un numéro de téléphone. Dans les navigateurs mobiles qui supportent ce nouveau type, permet d'afficher correctement un pavé numérique lors de la mise en place du clavier.
<input type="tel">
Si vous voulez valider un numéro de téléphone, vous aurez la possibilitée d'utiliser l'attribut pattern. Par exemple, imaginons que j'ai besoin un numéro de téléphone au format (0000-000-000):
<input type="tel" pattern="\d{4}-?\d{3}-?\d{3}">
Cela permettra d'assurer que la forme ne soumettra si la valeur fournie prend la forme d'0000-000-000 ou 0000000000.


search:

type "search"; à première vue, ne fait pas beaucoup plus que créer une input avec des coins arrondis.
<input type="search">
Peut-être une icône de recherche s'affichera sur le côté gauche de l'input, aussi permet au navigateur de se souvenir vos requêtes de recherche précédents.
<input type="search" results="3">

* la version google chrome utiliser est 31.

Formulaires HTML5: required-autofocus-pattern-maxlength-placeholder

required:

Nous pouvons spécifier qu'une "input" exige une valeur sans utiliser du javascript - au moins dans les navigateurs qui prennent en charge l'attribut required.
<input type="text" required>
Si on clique sur le bouton d'envoi d'une formulaire, et aucun valeur n'a pas été saisi, une bulle contextuel s'affiche, indique au utilisateur de saisir une valeur.

required


autofocus:

Une autre tâche de JavaScript que nous avons invoquée est l'autofocus pour placer le focus dans une input spécifique. Avec jQuery:
$('#input').focus();
HTML5 nous offre maintenant l'attribut "autofocus", ce qui enlève nos besoin du JavaScript.
<input type="text" autofocus>


pattern:

Si le navigateur va effectuer une validation, nous avons besoin de contrôler simplement si une valeur est saisi ou non. C'est là que l'attribut "pattern" entre en scène. Nous pouvons utiliser des expressions régulières pour spécifier le format que nous exigeons.
Imaginons que je dois indiquer à l'utilisateur de créer un nom d'utilisateur, compris entre sinq et dix caractères.
<form>
  <input type="text" required pattern="\w{5,10}">
  <input type="submit">
</form>

pattern

maxlength:

HTML5 introduit l'attribut "maxlength", ce qui nous permet de limiter le nombre de caractères qui peuvent être saisis.
Pour reprendre l'exemple précédent, si nous devons limiter le nombre de caractères à dix (sans utiliser l'attribut "pattern"):
<input type="text" required maxlength="10">


placeholder:

http://webeur.blogspot.com/2013/12/placeholder-html5.html

Placeholder HTML5

Parfois, il est très utile d'indiquer aux utilisateurs ce qu'ils doivent saisir. Traditionnellement, JavaScript doit être utilisé pour obtenir cet effet. Ci-dessous un exemple utilisons HTML et JQuery:

HTML:
<input type="text" id="email-input" value="Enter votre email" />

JQuery:
var emailInput = $('#email-input'),
emailDefault = emailInput.val();
emailInput.on({
  focus: function() {
    var $this = $(this);
    if($this.val() == 'Enter votre email') $this.val('');
  },

  blur: function() {
    var $this = $(this);
    if($this.val() == '') $this.val(emailDefault);
  }
});
Lorsque l'utilisateur clique sur l'entrée, la valeur disparut immédiatement, et lorsqu'il clique en sortie la valeur de défaut s'affiche à nouveau.
C'est très long n'est ce pas :). Avec HTML5, nous pouvons utiliser l'attribut "placeholder" pour réaliser cet effet exact :

HTML5:
<input type="text" id="email-input" placeholder="Enter votre email">
Placeholder html5

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+

Comment devenir un webmaster

Si vous souhaitez une réponse définitive pour savoir comment devenir un webmaster, vous pourriez pas obtenir ce que vous cherchez :).
Il y a plusieurs façons de devenir un développeur web ou webmaster. Quelques pistes à une carrière en tant que webmaster sont plus directs que d'autres - tout dépend de votre situation et vos objectifs personnels.
Comment devenir un webmaster

Certaines personnes obtiennent des diplômes ou baccalauréats des grades associés du domaine de l'informatique (développement web pour notre cas), et ils trouvent un emploi directement après leurs études. Ceci est le moyen le plus facile pour devenir webmaster. Il est particulièrement facile d'entrer dans le domaine de carrière de cette façon. Et pour avoir une certaine expérience, nous vous conseillez de terminer un programme de stage avant de terminer votre diplôme.

D'autres personnes qui obtiennent de différents types de degrés, comme un baccalauréat en marketing ou en linguistique et apprendre quelques avantages sur le développement web au moment de leur travaillent pour une entreprise quelconque qui fait quelque chose lié à la technologie internet. Si vous avez déjà une carrière dans un domaine différent et que vous voulez changer de carrière au développement web, peut-être tout ce que vous devez faire est de prendre quelques classes.

Comment devenir un webmaster

Puis il y a des gens qui n’obtiennent pas aucuns degrés. Ces personnes peuvent prendre quelques cours en programmation soit en ligne ou bien une école, et ils peuvent avoir des certifications, mais ils ne ont pas obtenir des diplômes traditionnels de toute sorte.
Si vous êtes vraiment bon à ce que vous faites et vous pouvez construire une réputation pour vous-même cela peut être une possibilité, mais ce sera difficile. Une bonne façon d'entrer dans ce domaine sans diplôme est d'obtenir un emploi faisant du support technique ou de rédaction technique pour toute entreprise qui a un site web, et d'apprendre autant que possible pendant que vous y êtes. Il est possible d'apprendre comment leurs webmasters construire les pages et comment ils gèrent leur site web simplement en faisant du bénévolat pour aider avec certains de le gros du travail de maintenance web.

Maintenant vous êtes un webmaster, il peut être un travail très satisfaisant pour toi. Donc, les développeurs web peuvent commencer avec 1900 € par mois, mais comme un webmaster expérimenté vous pouvez faire autant que 3500 € (Salaire s’échange selon votre pays ou bien selon l'entreprise).