• HTML5 renforce la sémantique

    Sémantique du header

    Avant HTML5 dans les structures HTML l'on pouvait trouver ceci : <div id="header"> ou <div id="entete">
    Mais à quoi sert cette balise ?
    "Un groupe d'aide de navigation ou d'introduction. Un élément header contient de façon générale les headings (les éléments h1 à h6 ou l'élément hgroup). Il peut aussi contenir d'autres éléments, comme la navigation principale, un formulaire de recherche ou d'inscription, ou des logos."
    Spécification HTML5
    Il peut donc y avoir plusieurs header dans une page, puisque cette balise peut servir d'entête dans vos sections, articles et asides.
    Elles contiendront titres, navigation, formulaire, introductions en textes (définition, citation,...) et/ou en images.
    La balise header tout comme le footer nous donnent la possibilité de structurer les informations présentées dans nos documents. Une meilleure sémantique pour guider le travail d'indexation des pages par les moteurs de recherche.

    <body>
        <header>
            <img src="img/logo.jpg">
            <h1>Le titre le plus important de la page</h1>
            <p>lorem ipsum dolor set amet...</p>
            <nav>
                <ul>
                    <li>A propos</li>
                    <li>...</li>
                </ul>
            </nav>
        </header>
        <section>
            <header>
                <h1>Titre de cette section</h1>
            </header>
            <article>
                <header>
                    <h1>Titre de cet article</h1>
                </header>
                <p>...Lorem Ipsum dolor set amet...</p>
                <figure>
                    <img src="img/illustration01.jpg">
                    <figcaption>legende img</figcaption>
                </figure>
                <footer>Auteur de l'article / Date parution <time> / Navigation(ex: next article)</footer>
            </article>
        </section>
        <aside>
            <header>
                <h1>Titre de cette aside</h1>
            </header>
            <p>...Lorem Ipsum dolor set amet...</p>
            <ul>
                <li>A propos</li>
                <li>...</li>
            </ul>
        </aside>
        <footer>Liens / copyright / <address>adresse</address>  / ...</footer>
    </body>
    

    Sémantique du Footer

    Il représente le pied de page d'une section, d'un article ou d'une page.
    On y met les informations complémentaires concernant l'auteur, la date de parution, la catégorisation, les mentions légales...

    La balise <address> présente les informations de l'auteur ou du propriétaire d'un document.
    Elle permet de mettre en évidence des adresses, coordonnées et URL.

    <address>
        Rodolphe Turmel
        rodolphe@nose-store.com
    </address>
    

    Sémantique du aside

    La balise HTML5 <aside> sert à encapsuler de l'information supplémentaire relative à un article ou une page, mais qui n'est pas absolument nécessaire à sa compréhension.

    <body>
      <header>
        <h1>Mon Blog</h1>
      </header>
      <main>
          <section>
              <article>
                <h1>Mon billet de mon blog</h1>
                <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
                eiusmod tempor incididunt ut labore et dolore magna aliqua.</p>
                <aside>
                  <!—Vu que ce aside est à l'intérieur de la balise article, 
                  l'analyseur syntaxique va comprendre que le contenu de la balise est directement relié à l'article. -->
                  <h1>Glossaire</h1>
                  <dl>
                    <dt>Lorem</dt>
                    <dd>ipsum dolor sit amet</dd>
                  </dl>
                </aside>
              </article>
          </section>
          <section>
          	...
          </section>
      </main>
      <aside>
        <!—- Ce aside est en dehors de la balise article. Son contenu est donc relié à la page. -->
        <h2>Mes liens utiles</h2>
        <ul>
          <li><a href="#">Lien 01</a></li>
          <li><a href="#">Lien 02</a></li>
          <li><a href="#">Lien 03</a></li>
        </ul>
      </aside>
    </body>
    

    Sémantique main

    Il représente le contenu majoritaire du document.
    Ce contenu doit être unique dans le document, excluant tout contenu qui est répété sur plusieurs documents comme des barres latérales, liens de navigation.

    Il faut utiliser ces balises sémantiques de manière appropriée sinon on utilise des conteneurs non sémantiques comme la div(block) ou le span(inline).

  • la BALISE & ses ATTRIBUTS

    Une balise contient :
    - son nom
    - aucun ou plusieurs attribut(s)
    - aucune ou plusieurs valeur(s)
    Un attribut est un élément, présent au sein de la balise ouvrante, permettant de définir des propriétés supplémentaires.
    Les attributs se présentent la plupart du temps comme une paire clé=valeur.
    Chaque balise peut comporter un ou plusieurs attributs, chacun pouvant avoir une ou plusieurs valeurs.
    Ex d'attributs :
    alt / title / id / class / lang / style / width / height / src / ...

    ex : <img src="img/cartman.jpg" alt="Cartman mdr" title="Cartman" width="150" class="leftImg hoverImg" id="img_01" />
    Cartman qui rit

    alt = texte alternatif
    title = titre img
    width = largeur
    class = nom de la classe CSS
    id = identifiant "unique"

  • Document HTML5 Sémantique

    L'attribut "role"
    Il permet d'ajouter du contexte aux boites non sémantiques comme la div.
    Des rôles reconnaissables et utilisables par les utilisateurs de technologies d’assistance. de comprendre le rôle d’une zone pour mieux s’orienter dans le document..
    HTML5 définit une liste de valeurs :

    • article
      Contenu ayant du sens par lui-même, comme un article ou un commentaire de blog, un message sur un forum...
    • banner
      Contenu à propos du site, comme le titre de la page ou le logo.
    • complementary
      définit un contenu sans rapport direct avec le contenu principal du document : la météo sur un portail web par exemple.
    • contentinfo
      informations à propos du contenu de la page : notes, copyrights, mentions légales, déclaration de confidentialité ...
    • main
      Contenu directement lié ou englobant le contenu central du document.
    • navigation
      Contient des liens pour naviguer dans ou en dehors du document.
    • search
      Cette section contient un formulaire de recherche permettant de chercher sur le site.
  • Attribut data-

    Tous ces attributs que l'on ajoute à une balise ont un usage précis.
    Si l'on souhaite ajouter d'autres données descriptives à un élément, on utilisera l'attribut "data".
    On peut personnaliser l'attribut "data-" en y concaténant une chaine de texte

    <img src="mamoto.jpg" id="moto" alt="Une moto rouge" data-proprietaire="Simon" data-lieu="Strasbourg">
    

    L'intérêt principal est de simplifier le stockage des données dans le document directement dans un élément.
    Par exemple, dans une galerie d'images on peut stocker : le nom de l'auteur, le lieu... dans l'image elle-même, puis afficher ces informations au survol grâce à du CSS, javascript ou JQuery.

    En CSS
    
    [data-proprietaire]:hover::before {
    	content: attr(data-proprietaire) " de " attr(data-lieu);
    }
    
    En Jquery
    
    // Lire
    $("#mamoto").data("lieu");
    
    // Modifier la valeur associée
    $("#mamoto").data("lieu","Paris");
    
    // Cibler en fonction d'une valeur data
    $("#mamoto[data-lieu='paris']");
    
    En Javascript avec getAttribute and setAttribute
    
    var mamoto = document.getElementById("mamoto");
    
    var NewLieu = mamoto.getAttribute("data-lieu");
    
    mamoto.setAttribute("data-lieu", "Paris");
    

    Les attributs data-ne sont pas pensés pour être utilisés par des robots de moteurs de recherche, car il n'y a aucune standardisation des valeurs donc ces attributs sont ignorés par le navigateur.

    Une moto rouge
    Une moto rouge

  • LES LISTES

    2 types de listes :

    Liste non-ordonnée ou liste à puces
    ex :
    • fraise
    • framboise
    • pomme
    intégration de la liste à puces : <ul></ul>
    Délimiteur d’un élément de la liste : <li></li>

    <ul>
    <li>fraise</li>
    <li>framboise</li>
    <li>pomme</li>
    </ul>

    Liste ordonnée ou liste numérotée
    ex :
    1. fraise
    2. framboise
    3. pomme
    intégration de la liste numérotée : <ol></ol>
    Délimiteur d’un élément de la liste : <li></li>

    <ol>
    <li>fraise</li>
    <li>framboise</li>
    <li>pomme</li>
    </ol>

    On peut imbriquer plusieurs listes
    1. fraise
    • compote
    • confiture
    2. framboise
    3. pomme



    <ol>
    <li>fraise
    <ul>
    <li>compote</li>
    <li>confiture</li>
    </ul>
    </li>
    <li>framboise</li>
    <li>pomme</li>
    </ol>
  • BALISE DEFINITION

    - <dl> (Definition list) : élément structurel annonçant et encadrant une liste de définitions.
    - <dt> (Definition term) : élément contenant le terme à définir.
    - <dd> (Definition description) : élément contenant la description du terme précédemment écrit.

    <dl>
    <dt>html</dt>
    <dd>» langage utilisé pour affiché du contenu sur le web</dd>
    <dt>balise</dt>
    <dd>» élément présentant certaines fonctionnalités</dd>
    <dt>attribut</dt>
    <dd>» élément spécifique à une balise pouvant prendre certaines valeurs</dd>
    </dl>
    html
    » langage utilisé pour affiché du contenu sur le web
    balise
    » élément présentant certaines fonctionnalités
    attribut
    » élément spécifique à une balise pouvant prendre certaines valeurs
  • BALISES CITATION

    Différentes balises pour différents usages

    - <blockquote> : Utilisée pour une longue citation venant d'une source externe, l'adresse de la source peut-être indiquée dans l'attribut "cite".
    Dans le cas d'un forum de discussion ou d'un blog, cette balise peut être utilisée pour citer le commentaire d'un autre utilisateur.
    Ne pas utiliser cette balise pour un dialogue. A ne pas confondre avec la balise <q>.
    Suivant les navigateurs différents affichages possibles :
    - un décalage par rapport à la marge courante du document
    - un retour à la ligne précédent et suivant le bloc de texte
    - éventuellement différents autres styles (italique ...)

    <p>Victor Hugo nous dit :</p>
     <blockquote cite="http://www.victor-hugo.com/x.html">
     <p>L'appétit vient en mangeant et l'amour en possédant.</p>
    </blockquote>
    

    - <q> : Utilisée pour une citation courte provenant d'une source externe.
    L'adresse de la source peut-être également indiquée dans l'attribut "cite".

    <p>Dans la page du rapport trimestriel <cite>Augmenter vos ventes</cite>,
     on nous dit que <q cite="http://www.rapport-x/x.html>pour être efficace,
     nous devons regrouper nos compétences</q>.</p>
    

    - <cite> : Utilisée pour le titre d'une oeuvre (livre / film / chanson/...), d'un document ou d'un évènement.
    Cette balise peut-être peut-être utilisée conjointement avec la balise <q>.
    Cette balise ne peut être utilisée pour une personne.

    <p>Mon livre préféré est <cite>Les misérables</cite> de Vitor Hugo</p>
    

    Dans tous les autres cas, on utilise les guillemets sans balise spécifique.

  • Les liens

    <a></a>
    Anchor : Lien hypertexte
    Doit toujours être encadrée par une balise « block » (comme <p>)

    Lien (relatif) vers une autre page du même site :
    <p><a href="contact.html">Page contact</a></p>

    Lien (relatif) vers une autre page du même site, placée dans un dossier :
    <p><a href="maisons/chaumiere.html">Page contact</a></p>

    Lien (absolu) vers un autre site :
    <p><a href="http://www.google.fr">Lien vers Google</a></p>
    http:// est essentiel

    L'attribut target désigne comment la page va s'ouvrir.
    Valeurs de l'attribut : _blank = nouvel onglet / _self = même onglet

    Lien vers une ancre, un autre endroit de la même page par exemple
    <body id="top">
    <p><a href="#top">Remonter en haut de page</a></p>

    Il existe une propriété CSS qui permet désormais de jouer une animation smmoth pour le scroll vers une ancre :

    html {
      scroll-behavior : smooth;
    }
    

    Lien sur une image :
    Il faut encadrer <img> avec <a></a>
    <p><a href="http://www.google.com"><img src="google.jpg" alt="logo Google" width="32" height="32" /></a></p>

    Lien sur un numéro de téléphone
    Me contacter au :<a href="tel:0562894578">05.62.89.45.78</a>
    Appel au clic (smartphone)

    Lien pour télécharger un fichier (.doc, .pdf, .zip)
    <a href="cours.zip">Télécharger les cours</a>
    Le navigateur reconnaît automatiquement le type de fichier et vous propose la procédure appropriée pour le télécharger ou l'afficher.

    Les attributs: "hreflang", "media", "rel" et "target" ne peuvent être utilisé sans l’attribut href.
    hreflang : Indique la langue de la page vers laquelle pointe le lien
    media : Indique le type de document vers laquelle pointe le lien. La valeur par défaut est : all
    rel : Indique la relation entre le document actuel et celui vers lequel pointe le lien (exemple de valeur : "author / bookmark / external / next / prev / search / ...")

    Trick pour afficher le lien lors de l'impression, à détailler avec le ciblage CSS :

    @media print {
         a[href]::after {
        	content: " (" attr(href) ")";
    	}
        a[href^="#"]::after {
            content: "";
        }
    }
    
  • Les images

    <img>
    Plusieurs formats sont utilisés en HTML :
    .jpg :
    Grand nombre de couleurs (format idéale pour les photos)
    Pas de couleur de transparence
    .png :
    2 versions : PNG 8bits – 256 couleurs / PNG 24bits – 16 millions de couleurs
    Couleurs de transparence
    .webp
    Format récent développés par Google. Poids réduit de 26 % par rapport à PNG et de -25 à -34 % par rapport à JPG
    Les dernières versions des navigateurs supportent WebP.
    Gère la transparence et grand nombre de couleurs. Fichier de pixels.
    Utilisation de la balise picture pour une compatibilité maximale.
    .svg :
    SVG (Scalable Vector Graphics) est un format de dessin vectoriel
    .gif :
    Vieux format : 256 couleurs maxi
    Une couleur de transparence, image animée

    2 attributs obligatoires :
    src : source – indique où se trouve l'image à insérer.
    alt : texte alternatif – description courte de l'image – texte qui sera mis si le navigateur n'arrive pas à télécharger l'image ou sera utiliser pour les navigateurs des personnes mal-voyantes.
    Attributs optionnels :
    title : titre de l'image – permet l'affichage d'une info-bulle lors du passage de la souris sur l'image.
    width et height : Vous pouvez déclarer l'un ou l'autre, dans ce cas la proportion de l'img sera conservée.

                    
    <img src="avion.jpg" alt="avion" title="un bel avion" width="250" />
    
  • Illustration légendée

    Des nouveaux venus avec le HTML5 : Balises <figure> et <figcaption>
    Le rôle de <figure> est d'illustrer des photos et de légender des graphiques ou schémas.
    Elle s'intègre à l'extérieur de la balise <p>

    Les éléments <figure> et <figcaption> fonctionnent ensemble pour associer une légende à une illustration ou tout autre élément média.

    <figure>
      <img src="image.jpg" alt="" />
      <figcaption>Légende associée</figcaption>
    </figure>
    

    <figure>
    C'est un conteneur dans lequel s'insèrent divers éléments comme des images, des schémas, des vidéos, des tableaux ou encore des blocs de code. L'objectif est de lier ce contenu à une légende, définie par l'élément <figcaption>.

    <figcaption>
    Enfant direct de <figure>, son rôle est de légender son parent, sous forme de texte et/ou de liens.
    Il peut se placer avant ou après le contenu principal de <figure>.

    Cartman mdr
    Holy shit, that's awsome !!

    Il est possible de regrouper une liste d'images et de les lier à l'aide d'un unique élément <figcaption> :

    Cartman's friend Balcons dans une rue de Porto Cartman's friend : kenny
    South Park : Cartman's friends.

    Exos :
    Intégrer 4 images avec chacune leur légende.

  • Balise picture

    cette balise <picture> permet de proposer différentes sources d'une image soit pour avoir une compatibilité maximale soit pour proposer une variation de l'image selon le media.

    <picture>
      <source srcset="img/awesomeWebPImage.webp" type="image/webp">
      <img src="img/creakyOldJPEG.jpg" alt="Alt Text!">
    </picture>
    
    <picture>
      <source srcset="logo-wide.png" media="(min-width: 600px)" />
      <img src="logo-narrow.png" alt="Logo" />
    </picture>
    
  • video & audio

    Les balises <video> et <audio> offrent en HTML5 une solution simple, native pour les navigateurs dans l'intégration d'une vidéo ou d'une bande son dans une page web.

    <video width="400" height="222" controls>
    <source src="videos/pixar.mp4" type="video/mp4">
    <source src="videos/pixar.webm" type="video/webm">
    <source src="videos/pixar.ogg" type="video/ogg">
    Ici l'alternative à la vidéo : un lien de téléchargement, un message, etc.
    </video>
    Ici l'alternative à la vidéo : un lien de téléchargement, un message, etc.
    Vidéo Pixar
    <audio controls preload="none">
    <source src="audio/son.mp3" type="audio/mpeg">
    <source src="audio/son.ogg" type="audio/ogg">
    </audio>

    La version mp4 est placée en premier afin d'être sûr que les iPhone, iPad et autres iPod puissent la lire.

    Attributs

    L'attribut controls donne accès aux contrôles de lecture (boutons de navigation, volume, etc, selon les possibilités du navigateur), ou les masque s'il est omis.

    L'attribut preload="auto" permet de de spécifier au navigateur de débuter le téléchargement de la vidéo dès chargement dfe la page, anticipant le fait que l'utilisateur lise la vidéo. Attention, cette option est à manier avec prudence car elle peut ralentir le chargement global de la page.

    L'attribut autoplay="true" comme son nom l'indique, permet de lancer la lecture automatiquement. Cela peut également être problématique avec une connexion à faible bande passante ou sur un terminal mobile. De manière générale, évitez d'imposer vos choix à l'utilisateur... et à sa connexion internet.

    L'attribut poster="image.jpg" permet d'indiquer une image à afficher par défaut dans l'espace réservé par la vidéo, avant que la lecture de celle-ci ne soit lancée.

    L'attribut loop indique que la lecture doit s'effectuer en boucle.

    Conversion de fichiers

    Plusieurs logiciels permettent de générer les fichiers MP4, WebM et OGV. Le plus simple et pratique à mon sens est d'utiliser VLC player.
    Dans média choisir convertir / enregistrer.
    Logiciel de conversion en ligne : Miro Video Converter

  • EXOS

    Exercice 1 : Listes
    1/ Créer dans votre éditeur de code, une page HTML5
    2/ Enregistrer-la de la manière suivante : listes.html
    3/ Faire une liste ordonnée
    4/ Faire une liste à puces
    5/ Faire une liste ordonnée elle même intégrée dans une liste à puces
    6/ placez le fichier via FTP dans le dossier html_02
    7/ Testez-la sous Chrome
    8/ Quelle est la différence entre les 2 types de liste dans le code ? Donnez la réponse sous forme de paragraphe dans votre code

    Exercice 2 : Images
    1/ Créer dans votre éditeur de code, une page HTML5
    2/ Enregistrer-la de la manière suivante : images.html
    3/ Choisir trois images avec différents formats. Les intégrer dans la page web sans oublier leurs attributs
    4/ Testez-la sous Chrome
    5/ Insérez l'attibut height afin d'harmoniser leur intégration
    6/ Intégrez la balise figure pour vos 3 images avec une légende
    7/ Quelles sont vos observations ou remarques ? Donnez la réponse sous forme de paragraphe dans votre code
    8/ placez le fichier via FTP dans le dossier html_02

    Exercice 3 : Liens
    1/ Créer dans votre éditeur de code, une page HTML5
    2/ Enregistrer-la de la manière suivante : liens.html
    3/ Intégrez un titre, plusieurs longs paragraphes avec l'aide de lorem ipsum
    4/ Créer des liens vers des pages web de votre choix
    5/ Créer dans le dernier paragraphe, un lien de type ancre ayant pour cible le titre.
    6/ placez le fichier via FTP dans le dossier html_02
    7/ Testez-la sous Chrome

    Exercice 4 : Liens suite
    1/ Créer dans votre éditeur de code, une page HTML5
    2/ Enregistrer-la de la manière suivante : liens_02.html
    3/ Intégrez un menu avec la balise nav et la balise liste
    Items : A propos / Les services / Nous contacter
    4/ Intégrez des liens sur chacun des éléments de la liste
    5/ Intégrez 3 balises section chacune contenant :
    un titre de section(A propos / Les services / Nous contacter),
    un article et son titre,
    une définition et une citation liées à l'aricle, contenues dans une balise aside
    6/ Ajouter aux liens du menu des ancres pointant vers les différentes sections

    Exercice 5 : Intégrer la structure html5 de ce zoning


    Exercice 6 : Produire un zoning puis la structure html5 de cette maquette :


    Projet – Créer votre site web
    1/ Créer un sous-dossier intitulé Projet
    2/ Créer une première page accueil ⇒ index.html
    3/ Sur cette page :
    a/ Mettre le title de votre page web
    b/ Créer une structure HTML5, une liste dans la balise nav avec le nom de chacune des pages que vous allez créer (Cette liste se trouvera sur chacune des pages créées)
    c/ Transformer chaque ligne de la liste en lien vers les autres pages de votre site
    4/ Créer une deuxième page site
    5/ Sur cette page :
    a/ Mettre le title de votre page web
    b/ Créer une structure HTML5
    c/ Mettre la liste sous forme de liens comme pour la page accueil
    d/ Faire une liste de lien (4-5 liens) vers des sites qui vous intéressent
    e/ Décrire ces sites dans de courts articles
    6/ Créer une troisième page images
    7/ Sur cette page :
    a/ Répéter les points a à c de la page précédente
    b/ Choisir 3-4 images
    c/ Les mettre les unes en dessous des autres
    d/ Utiliser la balise figure pour décrire ces images
    8/ Créer une quatrième page video ou audio
    9/ Sur cette page :
    a/ Répéter les points a à c de la page précédente
    b/ Choisir 1 video et un son à intégrer, y ajouter la balise figure et figcaption
    10/ Commenter votre code