html5

The future is near

HTML5 Video – La Guerre des Codecs

Non, ce n’est pas le titre du prochain box office, mais bien la triste réalité avec HTML5 aujourd’hui. Pour ceux qui ne suivent pas HTML5, la spécification est pratiquement complète et il ne manque vraiment pas grand chose pour qu’on puisse justifier de faire le grand saut vers ce langage prometteur.

Il reste encore certains trucs sur lesquels ils doivent s’entendre et le codec à utiliser pour l’utilisation de la vidéo (<video>) fait parti de ce qui n’est pas coulé dans le béton.

En effet, il existe actuellement la guerre entre 2 codecs : H.264 et Ogg Theora Codec.

H.264

Le codec coûte 5 millions/année (oui oui) et il est utilisé par Apple (Safari) et Google (Chrome)

OGG

Codec open source actuellement utilisé par Firefox et Opera.

Microsoft dans tout ça? À ce jour, nous ne savons toujours pas vers quel codec ils vont se tourner.

Bon, le choix n’est pas très difficile à faire. OGG devrait être adopté par tous et l’histoire se terminerait là, mais ça ne semble pas être aussi simple. Google semble dire que le Ogg Theora Codec n’est pas encore tout à fait au point et qu’il est préférable de se tourner vers H.264 pour l’instant. Si vous vous souvenez, l’année dernière Google a acheté On2 Technologies qui est une importante compagnie créant de la compression vidéo de haute qualité. On2 Technologies a créé le VP3 Codec qui est la base du Ogg Theora Codec. Étrange? Google fait rarement quelque chose pour rien.

Il est clair pour moi que Google ne veut pas utiliser le codec Ogg puisqu’ils doivent être en train d’en développer un qui sera également open source. Nous risquons d’en savoir plus à ce sujet en 2010.

Post to Twitter Tweet This Post

La balise <datalist> en HTML5

Le nom le dit, la balise <datalist> est une liste contenant des données. Mais n’existe-t-il pas déjà la balise <select> qui s’occupe de nous afficher des éléments dans une liste? Oui, mais la balise <datalist>, elle, nous l’associons avec un autre élément du formulaire comme un champ texte par exemple.

Cette nouvelle sorte de liste est en quelque sorte plus permissive dans le sens qu’elle nous suggère diverses options, mais nous ne sommes pas absolument obligés de choisir une de ces options là. Nous pouvons entrer notre propre valeur si la liste ne nous suggère pas ce que nous voulons.

Compatibilité

Pour l’instant, cette nouveauté d’HTML5 semble seulement fonctionner sur Opera. Firefox, Chrome et Safari devraient supporter cette balise dans leur prochaine version.

À savoir

Un peu comme lorsque nous associons un label et son champ respectif à l’aide de l’attribut for, cette fois, c’est avec l’attribut list que nous associons une liste à un champ texte.

Exemple

<form method="post" action="">
    <ul>
        <li><label for="txtMetier">Quel est votre métier?</label></li>
        <li><input type="text" list="metiers" autofocus /></li>
        <li>
            <datalist id="metiers">
                <option>Designer Web</option>
                <option>Integrateur Web</option>
                <option>Programmeur</option>
            </datalist>
        </li>
    </ul>
</form>

Consultez l’exemple de balise datalist en HTML5.

Consultez la spec d’HTML5 pour en savoir davantage sur la balise <datalist>.

Post to Twitter Tweet This Post

Formulaires HTML5 (partie 2 de 2)

Voici la suite du billet formulaires HTML5 partie 1. Ce billet comporte deux exemples reprenant les attributs décrient dans la première partie. Vous remarquerez que ces deux formulaires ressemblent beaucoup à ceux que vous pouvez construire en HTML4 ou XHTML.

Comme je l’avais mentionné, il n’y a rien de très complexe dans les nouveautés concernant les formulaires en HTML5. Les nouveautés vont surtout nous permettre de valider plus rapidement les champs de nos formulaires.

<form id="presetForm1" method="post" action="">
    <ul>
        <li><label for="txtName">courriel</label></li>
        <li><input class="text" type="email" id="txtName" maxlength="100"
        autofocus required /></li>
        <li><label for="txtPass">mot de passe</label></li>
        <li><input class="text" type="password" id="txtPass"
        required /></li>
        <li><label for="txtNom">nom</label></li>
        <li><input class="text" type="text" id="txtNom" value="Optionel..."
        onfocus="this.value='';"/></li>
        <li><label for="txtDate">date de naissance (ex: 1900-03-27)
        </label></li>
        <li><input class="text" type="date" id="txtDate" /></li>
        <li><label for="txtTel">téléphone (ex: 514-123-4567)</label></li>
        <li><input class="text" type="tel" id="txtTel" value="Optionel..."
        onfocus="this.value='';" /></li>
        <li><label for="txtUrl">site web</label></li>
        <li><input class="text" type="url" id="txtUrl" maxlength="250"
        value="Optionel..." onfocus="this.value='';" /></li>
        <li><input class="submit" type="submit" value="Send" /></li>
   </ul>
</form>

Observations sur l’exemple

Le champ courriel contient les attributs « autofocus » et « required » ce qui veut dire qu’en arrivant sur la page, c’est sur ce champ que le pointeur de notre souris sera. Ce champ est également obligatoire avec l’attribut required. De plus, le champ est de type « email » ce qui indique qu’il faut nécessairement entrer un courriel dans ce champ.

Le champ password est obligatoire avec l’attribut required.

Le champ date de naissance est de type « date » ce qui indique qu’il faut nécessairement entrer une date au format (Year-Month-Day) dans ce champ.

Le champ téléphone est de type « tel » ce qui indique qu’il faut nécessairement entrer un numéro de téléphone dans ce champ.

Le champ site web est de type « ul » ce qui indique qu’il faut nécessairement entrer une url dans ce champ.

Les nouveaux attributs et valeurs de l’attribut type sont assez simples. Nous comprenons rapidement leurs utilisations. Dans un billet futur, je ferai un exemple en intégrant Javascript aux nouveaux formulaires d’HTML5.

Post to Twitter Tweet This Post

Formulaires HTML5 (partie 1 de 2)

De nos jours, quel site web ne contient pas un formulaire sur au moins une de ces pages? Personnellement, je crois que je ne pourrais pas en nommer. Les formulaires se retrouvent sur des millions de pages sur la toile. Une des nouveautés d’HTML5 que j’attends avec impatience est les formulaires “2.0”. Cette nouveauté va grandement simplifier la programmation de nos formulaires actuels.

Les formulaires actuels

Actuellement, il peut être laborieux de créer un formulaire pour un site web. Si nous le concevons intelligemment, nous devons avoir recours à d’autres langages comme Javascript/PHP/ASP et s’assurer d’effectuer plusieurs vérifications.  Sans vérification, l’usager peut entrer n’importe quoi et le formulaire devient inutile. Par exemple, il nous faut vérifier si l’usager entre un courriel valide ou encore si l’usager n’entre pas des lettres dans le champ téléphone. Les programmeurs utilisent normalement des « regexp » pour faciliter la validation des formulaires.

Les formulaires en HTML5

Ils ne sont pas vraiment différents que dans la version actuelle d’HTML, mais ils ont quelques ajouts intéressants que je vais décrire ci-dessous.

Les nouveaux attributs intéressants de balise <input>

autocomplete : Cet attribut peut permettre l’autocomplétion sur un champ texte par exemple. L’autocomplete est devenu assez populaire avec AJAX. Nous n’avons qu’à penser au moteur de recherches de Google qui nous suggère des mots lorsque nous commençons à taper des lettres. Il peut avoir la valeur « on » ou « off ».

autofocus : Met le focus sur l’élément en question. En arrivant sur une page, le pointeur est placé sur le champ ayant l’autofocus.

multiple : Permet d’entrer plusieurs valeurs.

pattern : Attribut fort intéressant qui permettra d’entrer une expression régulière (regexp). L’expression régulière entrée servira à valider la valeur entrée dans le champ en question.

Il y en a plusieurs autres, mais ceux que je viens de décrire risquent d’être plus utilisés.

Ce qui est également fort intéressant, c’est les nouvelles valeurs que peut prendre l’attribut « type ». Cet attribut permet de spécifier quel type de champ nous utilisons dans notre formulaire (texte, bouton radio, etc).

Voici certaines valeurs intéressantes que peut prendre l’attribut type :

url : En spécifiant cette valeur, nous indiquons que nous devons entrer une adresse de site web.

tel : En spécifiant cette valeur, nous indiquons que nous devons entrer un numéro de téléphone.

email : En spécifiant cette valeur, nous indiquons que nous devons entrer un courriel.

date : Nous devons spécifier une date au format suivant : 1900-03-27

number : La valeur entrée dans le champ doit absolument être un nombre. Aucune chaîne de caractères.

Et les autres : search, month, week, time, datetime, datetime-local, range et color pour ne pas les nommer.

Comme vous le voyez, beaucoup de nouvelles choses dans les formulaires. Rien de très complexe, mais il y aura sans aucun doute beaucoup de tests à faire pour s’assurer que tout fonctionne correctement. À noter également que ces nouveautés ne sont pas encore prises en compte par Firefox. Vous pouvez par contre vous amuser sous Chrome 3  et Safari 4.

Je vous reviens la semaine prochaine avec la suite de ce billet sur les formulaires en HTML5. Vous y découvrirez entre autres des exemples mettant en pratique les nouveautés décrites plus haut.

Pour plus de détails, je vous invite fortement à regarder la spécification d’HTML5 sur les formulaires.

Post to Twitter Tweet This Post

La balise <time> en HTML5

L’article d’aujourd’hui concerne la nouvelle balise <time> en HTML5 qui va encore une fois améliorer la sémantique de nos pages web.

La balise <time> sert à indiquer l’heure ou la date. Jusque là, tout est simple.

Elle contient deux attributs : pubdate et datetime.

L’attribut pubdate est un booléen et indique une date de publication. S’il est présent, il faut spécifier la date entre <time></time>. Un article peut contenir au maximum un élément <time> ayant l’attribut pubdate (quand même logique…).

Si l’attribut datetime est présent (ex : datetime= « 2009-10-12 »), il n’est pas nécessaire que notre élément <time> contienne quelque chose. Dans le cas contraire, nous devons spécifier la date et l’heure avec l’élément <time>.

Son utilisation

La balise <time> peut être utilisée à plusieurs endroits différents dépendamment du contenu de notre site. Pour prendre à nouveau l’exemple d’un blog, la balise <time> en HTML5 pourrait être intégrée dans l’en-tête de nos articles pour indiquer la date de publication.

Voici 4 exemples de l’utilisation de la balise <time>  :

<p>Je devrais arriver à <time>19h30</time>.</p>

Avec l’attribut pubdate

<header>
    <h3>Is HTML5 a FLASH killer?</h3>
    <p>Publié le <time pubdate>2009-10-12</time></p>
</header>

Avec l’attribut datetime

<p>Écrit le <time datetime=”2009-10-12”></time></p>

Avec l’attribut pubdate et datetime

<p>Publié <time pubdate datetime=”2009-10-12”>aujourd’hui</time></p>

Dans le dernier cas ci-dessous, nous ferions un rendu de la date dynamiquement à l’aide d’un autre langage de programmation.

<p>Publié <time pubdate datetime=”2009-10-12”></time></p>

Un autre exemple serait d’utiliser la balise pour nos tweets sur Twitter. En effet, après chaque tweet nous retrouvons l’heure à laquelle notre tweet a été publié.

Ex :

<ul id="twitter_update_list">
    <li>Comment « plugger » subtilement des mots-clés comment HTML5
    dans mon blog. <time>1 hour ago</time></li>
</ul>

La balise <time> en HTML5 sera de plus en plus utilisée dans les futurs sites web. Elle peut sembler complexe au début, mais une fois que nous comprenons bien la distinction entre les attributs pubdate et datetime, nous pouvons bien l’exploiter. C’est une autre balise avec laquelle les développeurs pourront s’amuser avec Javascript, PHP, etc.

Vous pouvez également consulter la spécification du W3C sur HTML5 concernant la balise <time>.

Post to Twitter Tweet This Post

La balise <progress> en HTML5

Comme vous le savez, plusieurs nouvelles balises sont présentes en HTML5. En voici une autre qui est un peu moins connue/populaire.

Quelle est l’utilité de la balise <progress> ?

La balise <progress> permet d’indiquer la progression d’une tâche quelconque. Elle pourrait très bien être intégrée à des applications en ligne comme Basecamp ou toute autre application de gestion de projets. Nous pouvons facilement imaginer son utilité pour des barres de progression en nous indiquant le status d’une tâche (peu avancée, moindrement avancée, complétée, etc).

Les attributs de la balise <progress>

Cette balise peut contenir deux attributs : value et max.

L’attribut value détermine la progression d’une tâche jusqu’à maintenant tandis que l’attribut max va servir à déterminer la valeur maximale qu’une tâche peut avoir avant d’être complétée.  À noter que la valeur des deux attributs se doit d’être un float et ne doit pas dépasser 1.

Voici un exemple de l’utilisation de la balise <progress> avec une interaction Javascript :

<p>Progression de ma tâche: <progress value="0" max="1">
<span id="p"></span>%</progress></p>

<script>
    var progressBar = document.getElementById('p');
    progressBar.textContent = 0;
    function updateProgress(newValue) {
        progressBar.textContent = (newValue * 100);
    }
</script>

<p><a href="#" onclick="updateProgress(1);" title="Update progress bar">
J'ai terminé cette tâche</a></p>

Pour en savoir plus sur la balise <progress>, je vous invite à lire la description complète se trouvant dans la spécification d’HTML5 du W3.

Télécharger l’exemple sur la balise progress.

Post to Twitter Tweet This Post

Construire une simple interface de blog en HTML5

Vous voulez savoir par où commencer pour vous créer une simple interface en HTML5? Vous voulez qu’elle ait un look de blog et qu’en plus elle soit liquide? Quelle chance que vous soyez tombé sur ce blog..!

Je vais vous expliquer ci-dessous comment je m’y suis pris pour construire ma propre interface de blog en HTML5 (que j’ai par la suite adaptée pour Wordpress, mais que je ne décrirai pas dans ce billet).

Tout d’abord, il nous faut notre en-tête principal qui contiendra le titre, le slogan et la navigation principale du site.

L’utilisation de la nouvelle balise <header> est parfaite pour nos besoins mentionnés plus haut. Nous utiliserons cette balise qui elle-même contiendra la balise <hgroup> (voir mon billet la nouvelle balise hgroup) qui elle s’occupera de contenir le titre (<h1>) et slogan du site (<h2>).

Voici le code jusqu’à maintenant :

<header>
    <hgroup>
        <h1><a href="http://www.blog-html5.com" title="Blog HTML5">
        html<span>5</span></a></h1>
        <h2>The future is near</h2>
    </hgroup>
</header>

Nous avons donc en place notre en-tête qui contient le titre et slogan du site. Il nous faut maintenant y intégrer notre navigation principale.

<nav>
    <ul>
        <li><a href="http://www.blog-html5.com" title="Blog HTML5 - html5">
        HTML 5</a></li>
        <li><a href="http://www.blog-html5.com" title="Blog HTML5 - html5">
        HTML 5</a></li>
        <li><a href="http://www.blog-html5.com" title="Blog HTML5 - html5">
        HTML 5</a></li>
        <li><a href="http://www.blog-html5.com" title="Blog HTML5 - html5">
        HTML 5</a></li>
    </ul>
</nav>

À noter que nous utilisons maintenant la balise <nav> pour contenir notre navigation principale. Cette balise a été créé pour aider la sémantique du code en HTML5 afin que l’on repère plus facilement les zones navigables d’un site web. Il faut par contre faire attention de ne pas surutiliser cette balise qui ne doit pas être utilisée à chaque fois que l’on a une série de liens.

Jusqu’à maintenant, rien de trop complexe, seulement la mise en place des nouvelles balises à leurs endroits respectifs. Nous pouvons déjà remarquer que la sémantique est améliorée et que l’on ne retrouve pas de div=” header” ou ul=”nav”.

Une fois l’en-tête créé, on s’attaque au contenu même de l’interface. Le contenu contient évidemment nos articles de blog. Nous avons donc besoin d’une section qui contiendra plusieurs articles. Comme si c’était arrangé avec le gars des vues, la balise <section> ainsi que la balise <article> vont s’occuper de tout ça.

La balise <section> parle assez d’elle-même. Elle sert à définir une section quelconque d’un site Web. Dans notre cas, c’est la section qui contient nos articles de blog.

Voici le code qui va répondre à nos besoins :

<section>
    <article>
        <header>
            <h3>Mon blog sur HTML5</h3>
            <p class="articleDate"><time>12 octobre 2009</time></p>
        </header>
        <p>HTML5 est pour bientôt. Blablabla.</p>
        <footer>
            <ul>
                <li>Auteur Simon Guérin</li>
            </ul>
        </footer>
    </article>
</section>

Encore une fois ici, la sémantique parle d’elle-même. Nous avons une section qui contient un article qui lui-même contient un en-tête (titre du blog + sa date de publication), le texte de l’article et finalement un pied de page (auteur de l’article).

Rien de très sorcier mise à part de comprendre la mise en place des nouvelles balises HTML5. Un article a toujours un titre et une date de publication. Il est donc logique de placer le tout dans l’en-tête de l’article (<header>). Nous retrouvons également le pied de page défini par la nouvelle balise <footer> qui est parfaite pour définir l’auteur de l’article. L’approche utilisée ici peut s’appliquer à beaucoup d’autres scénarios. Il suffit de prendre le temps d’analyser chacune des sections d’un site web.

Nous avons un en-tête, nos articles, mais il manque quelque chose non? L’affichage de nos tweets! Nous allons placer à la droite de nos articles, nos derniers tweets provenant de Twitter. Pour ce faire, je vais utiliser la balise <aside> qui a pour définition de représenter une section qui est reliée au contenu tout près de cette même balise. Elle peut également servir pour représenter une « sidebar ». Je crois que cette nouvelle balise va fortement être utilisée pour souvent représenter le contenu à droite dans un blog (Twitter, tags clouds, derniers billets, etc).

Le code à rajouter est le suivant :

<aside id="twitter_div">
    <h2>My Twitter feed</h2>
    <ul id="twitter_update_list">
        <li></li>
    </ul>
</aside>

Vous devez également rajouter les 2 lignes suivantes avant la fermeture de la balise </body>. Ces 2 lignes permettent de synchroniser le tout avec Twitter. À noter que vous devrez changer mon nom americanwhore par votre Twitter username.

<script type="text/javascript" src="http://twitter.com/javascripts/
blogger.js"></script>
<script type="text/javascript" src="http://twitter.com/statuses/
user_timeline/americanwhore.json?callback=twitterCallback2&amp;
amp;count=10"></script>

En somme, les nouvelles balises HTML5 vues dans ce billet n’ont pas été créé par hasard. HTML5 va grandement améliorer la sémantique des pages Web et il deviendra plus simple d’interpréter le contenu de chaque page.

Télécharger l’exemple complet pour créer une simple interface de blog en HTML5.

Vous pouvez également voir un autre exemple que j’ai fait en gardant le même code HTML5, mais arrangé différemment avec CSS.

Post to Twitter Tweet This Post

Vignettes Valide HTML5

Mon côté designer avait envi de créer des vignettes pour indiquer qu’une page est valide HTML5 par le W3C. Elles sont faites par plaisir d’avoir mes propres vignettes HTML5 d’ici à ce que le W3C en crée à leur tour.

Vous pouvez les utiliser sans problème sur vos sites. It’s free!

PS : Ne sachant pas parler français, elles sont en anglais.

Blog HTML5 - Valid Icons HTML5

Post to Twitter Tweet This Post

HTML5 Hack pour Internet Explorer (Partie 2)

Comme mentionné dans un billet antérieur, HTML5 n’est pas encore pris en compte par Internet Explorer.

Il existe par contre un fichier Javascript permettant de « contourner » le problème. Il suffit de placer les quelques lignes de code ci-dessous dans votre balise <head> pour que votre HTML5 soit rendu sous Internet Explorer.

<!–[if lte IE 8]>

<script type=”text/javascript” src=”js/html5.js”></script>

<![endif]–>

Télécharger le fichier html5.js

Voir aussi cet article d’HTML5 Doctor qui explique comment utiliser HTML5 sous Firefox 2 et Camino

Post to Twitter Tweet This Post

Thème Wordpress HTML5

Ayant un blog traitant principalement d’HTML5, j’ai eu l’idée de créer mon propre thème Wordpress (qui est mon thème actuel) roulant sous HTML5.

Le thème est encore en beta, mais il est tout à fait fonctionnel. Il vous faudra, par contre, légèrement l’adapter selon vos besoins et avoir quelque peu de connaissance en HTML pour pouvoir l’éditer.

Le nom du thème est Inspire qui fait évidemment référence au nom de domaine de mon portfolio, soit  http://www.ins.pire.me.

Je vous invite donc à l’essayer et de me tenir informé si vous l’utilisez.

Dans un billet que je vais écrire sous peu, j’expliquerai comment construire une interface simple de blog en HTML5. Vous pourrez donc créer votre propre interface facilement.

Télécharger le thème Wordpress Inspire fait en HTML5 par Simon Guérin

Cheers.

Note pour les programmeurs/intégrateurs : Vous remarquerez peut-être plusieurs erreurs reliées aux “html entities”. En effet, il semble avoir encore un problème de ce côté avec HTML5. J’y reviendrai dans un autre billet…

Post to Twitter Tweet This Post