HTML 5 Css 3
HTML 5 Css 3
1
HTML5 et CSS3
2
HTML5 et CSS3
12. dirname 40
13. min, max, step 40
14. Attributs personnalisés 41
Balise <details> 41
Balise <embed> 41
Balise <figure> 42
Balise <figcaption> 42
Balise <mark> 42
Balise <canvas> 43
Balise < SVG > 45
Le Scalable Vector Graphics (SVG) 45
Inkscape 45
3
HTML5 et CSS3
4
HTML5 et CSS3
Les propriétés 89
Fonctionnement des fonctions de timing -•transition-timing-function 91
La fonction CSS cubic-bezier() 92
Outil permettant de réaliser des courbes de Bézier en ligne 93
La fonction steps() 94
A propos de CSS3 Grid Layout 95
Réaliser un fond dégradé sans image 96
Mise en place des media queries 97
Appliquer une media query 98
Chargement d'une feuille de style différente 98
Le meta viewport pour les mobiles 100
Flexbox 101
display : box 101
Empilement vertical ou horizontal 103
Ordre d’empilement 104
Flexibilité : remplir l’espace 105
Tableau des compatibilités 107
Mémento des propriété CSS3 108
Propriétés du texte 108
Propriétés de couleur et de fond 110
Propriétés des boîtes 111
Propriétés de positionnement et d'affichage 114
Propriétés des listes 115
Propriétés des tableaux 116
Autres propriétés 117
5
HTML5 et CSS3
6
HTML5 et CSS3
Avant
7
HTML5 et CSS3
Maintenant
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="[Link]" />
</head>
<body>
<header class="ma-class-en-css">
<!-- menu du haut -->
<nav class="ma-class-en-css">
<ul>
<li><a href="mon-url">nom de mon lien</a></li>
<li><a href="mon-url">nom de mon lien</a></li>
<li><a href="mon-url">nom de mon lien</a></li>
</ul>
</nav>
</header>
</div>
<footer class="ma-class-en-css">
<!-- menu du bas -->
<nav class="ma-class-en-css">
<ul>
<li><a href="mon-url">nom de mon lien</a></li>
<li><a href="mon-url">nom de mon lien</a></li>
<li><a href="mon-url">nom de mon lien</a></li>
</ul>
</nav>
</footer>
</body>
</html>
8
HTML5 et CSS3
9
HTML5 et CSS3
10
HTML5 et CSS3
HTML 5, en tant que successeur de HTML 4.01, conserve par défaut la permissivité
syntaxique de son prédécesseur : majuscules autorisées pour les noms d’éléments
et d’attributs, apostrophe simple ou double non obligatoire pour signaler les valeurs.
En outre, HTML 5 poursuit les libertés de son ancêtre. Ainsi, les éléments <p>, <dd>,
<dt>, <li>, <optgroup>, <option>, <td>, <th>, <tr>, <thead> et <tfoot> ne nécessitent
pas de balise fermante pour être valides.
Seule la version XHTML 5 oblige à fermer ces éléments.
<!doctype html>
<meta charset=UTF-8>
<title>titre de page</title>
<p>hello world !
11
HTML5 et CSS3
Balise Description
<!--...--> Commentaire dans le document HTML
<!DOCTYPE> L'inclusion du DOCTYPE dans un document HTML assure que le navigateur
interprétera la version HTML ainsi déclarée.
En HTML5 le doctype à déclarer est : <!DOCTYPE html>.
<a> Utilisée pour les hyperliens. Attention : l'attribut "name" n'existe plus pour les
liens.
Attribut(s) spécifique(s)
<abbr> Pour une abréviation. Son attribut "title" ne doit être utilisé que pour l'extension
de l'abréviation et rien d'autre.
Une nouvelle version d'<abbr title="Hypertext Markup
Language">HTML</abbr> est enfin sortie.
Exemple:
<address>
Ecrit par Marc Albert :
<a href="[Link]
</address>
12
HTML5 et CSS3
Balise Description
<applet> Non utilisé
<area> Définie une zone ou plusieurs zones pour une carte image. Cette balise
s'utilise toujours avec la balise <map>
<article> Utilisé pour du contenu ayant son propre sens indépendamment du reste
des autres éléments de la page, ce contenu est distribuable et réutilisable.
Cela peut-être un billet de forum, un article de journal, un gadget, un
commentaire d'utilisateur... La balise <article> peut avoir son propre header et
footer. Confusion possible avec la balise <section> qui regroupe des éléments
de thématique identique.
Exemple:
<article>
La grande messe sur l'utilisation des standards du Web a démontré que (...)
</article>
ou
<article>
<p> La grande messe sur l'utilisation des standards du Web a démontré que
(...)</p>
</article>
<aside> Balise de structure supposant avoir un titre de type <h1>. Cette balise permet
de regrouper des informations non essentielles relatives au site Web. Lorsque
la balise <aside> se trouve dans un article, son contenu se réfère à l'article lui
même et non au site Web (par exemple des notes de pages, un glossaire ou
tout élément relatifs à l'article).
13
HTML5 et CSS3
<audio> L'élément HTML <audio> est utilisé pour rajouter un contenu sonore dans un
document. Il peut contenir plusieurs sources audio introduites avec l'attribut src
ou l'élément <source>. Le navigateur décidera lequel utiliser. Du contenu
alternatif peut aussi être ajouté pour les navigateurs ne supportant pas cette
fonctionnalité.
Un contenu alternatif peut être ajouté pour les navigateurs ne supportant pas
l'élément <audio>.
Attributs:
autoplay
Un attribut booléen. Si celui-ci est renseigné (même avec une valeur "false"),
l'élément audio sera joué automatiquement dès qu'assez de données auront
été chargées pour que la lecture ne soit pas interrompue.
controls
Si l'attribut est présent, le navigateur offrira à l'utilisateur des contrôles pour
qu'il puisse gérer la lecture, le volume, la navigation, et la pause ou la reprise
de la lecture.
loop
Un attribut booléen. S'il est renseigné, la lecture du fichier se fera en boucle..
muted
Un attribut booléen, indiquant si le son de l'élément audio doit être coupé. Sa
valeur par défaut est false, indiquant que l'élément audio doit être joué.
preload
Indique si la musique peut être préchargée dès le chargement de la page ou
non. Cet attribut peut prendre les valeurs :
auto (par défaut) : le navigateur décide s'il doit précharger toute la musique,
uniquement les métadonnées ou rien du tout.
metadata : charge uniquement les métadonnées (durée, etc.).
none : pas de préchargement. Utile si vous ne voulez pas gaspiller de bande
passante sur votre site..
src
L'URL du fichier audio à inclure.
14
HTML5 et CSS3
Balise Description
<b> Utilisé dans un paragraphe pour une partie de texte en gras, sémantiquement
faible, on lui préférera la balise <strong> pour donner de l'importance au texte.
<base> Cette balise permet de définir l'URL de base (l'utilisation de cette balise est
controversée).
Exemple:
<bdo dir="rtl">
Ce texte sera affiché comme s'il était écrit de la droite vers la gauche
</bdo>
<bdi> L'élément HTML <bdi> (ou élément d'isolation de texte bi-directionnel) isole
une portée (span) de texte pouvant être formaté dans une direction différente
de celle du texte qui l'entoure.
15
HTML5 et CSS3
Balise Description
<blockquote 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, un utilisateur peut utiliser cette balise pour citer le commentaire
d'un autre utilisateur. Nous n'utiliserons pas cette balise pour un dialogue.
Confusion possible avec la balise <q>.
Exemple:
<blockquote cite="[Link]
<p>
L'élément BLOCKQUOTE indique une citation longue
(avec un contenu de type bloc) et l'élément Q
est censé être utilisé pour des citations courtes
(avec un contenu de type en-ligne) ne nécessitant
pas un saut de paragraphe.
</p>
<p>L'utilisation de l'élément BLOCKQUOTE
pour obtenir le retrait d'un texte est déconseillée
en faveur de l'utilisation de feuilles de style.
</p>
</blockquote>
<body> Partie principale du document HTML
<br> Utilisée dans un paragraphe, cette balise permet de créer un saut de ligne.
16
HTML5 et CSS3
Balise Description
<cite> Utilisée pour le titre d'une oeuvre, d'un document ou d'un évènement. Cette
balise peut-être utilisée conjointement avec la balise <q>. Cette balise ne peut
être utilisée pour une personne.
<del> Utilisé pour indiquer qu'une partie de texte est supprimée, mais conservée pour
en garder la trace, on la stylisera en CSS. On peut utiliser cette balise
conjointement avec la balise <ins> pour indiquer le nouveau texte qui est à
prendre en compte. Confusion possible avec la balise <s>qui indique qu'un
texte n'est pas correct ou non pertinent.
<details> Pour apporter des détails sur Widget, il peut être utilisé pour cacher/afficher
des informations complémentaires. Il peut être le conteneur de la balise
<summary>.
17
HTML5 et CSS3
Balise Description
<dfn> Représente le terme d'une définition, on l'utilise dans un paragraphe ou une
liste de définitions. On peut utiliser cette balise conjointement avec <abbr>.
Dans la même section, il est possible de créer un lien pointant sur cette
définition, utile pour la création d'infobulle par exemple.
<dl> Pour une liste de définitions. Confusion possible : cette balise ne peut être
utilisée pour créer des dialogues, les balises <p> restant appropriées.
<em> Utilisé dans un paragraphe pour mettre une partie de texte en emphase.
<figcaption> Utilisée dans le conteneur <figure>, avant ou après le contenu, cette balise
permet d'écrire une légende ou une description.
18
HTML5 et CSS3
Balise Description
<figure> Utilisée pour regrouper un ou plusieurs médias ( illustrations, diagrammes,
exemples de code, photos...) attachés au document sans pour autant en
suivre le flux. Les images s'y trouvant n'ont pas obligation d'être inséré dans
une balise <p> et dans le cas d'une liste d'images, on peut omettre les listes à
puce. On utilisera la balise figcaption pour décrire les médias utilisés.
Confusion : cette balise ne doit être utilisée dès qu'il y a une image dans un
article, on peut aussi la confondre avec la balise <aside>.
<header> Pour l'entête d'une section et/ou d'une page, cette balise est utile pour une
introduction et/ou des éléments de navigation. Cette balise peut-être utilisée
dans la balise <section> et dans la balise <article>.
<hgroup> Regroupe des titres de niveau Hn dans la balise <head> (à noter : cette balise
a été supprimée puis réintégrée, son avenir est incertain.).
<html> Déclaration du document HTML. On lui rajoutera l'attribut lang pour déclarer la
langue utilisée.
19
HTML5 et CSS3
Balise Description
<i> Utilisée dans un paragraphe pour indiquer qu'une partie du texte est différent
du reste. Il ne faut pas utiliser cette balise lorsque <b>,
<cite>,<dfn>,<em>,<q>,<small> ou <strong> peuvent être utilisées. Note :
Certains analyseurs de site nous disent que cette balise est obsolète, ce qui
est totalement faux.
<ins> Pour insérer un nouveau texte dans un document révisé. On peut utiliser cette
balise avec <del> qui permet d'indiquer qu'une portion de texte n'est plus
valable.
<kbd> Lorsque le texte est utilisé pour définir des actions au clavier.
<link> Permets de lier une ressource externe à la page HTML. Attention l'attribut
"title" à une valeur sémantique différente.
<map> Utilisée pour créer une carte d'image avec des zones réactives. L'attribut
"name" est obligatoirement requis.
20
HTML5 et CSS3
Balise Description
<menu> Pour une liste de commande. Confusion possible avec la balise <nav>.
<nav> Pour regrouper des liens qu'ils soient internes à la page ou pour des pages
liées. Il est recommandé, mais non obligatoire d'utiliser les listes à puce pour
lister les liens.
<noscript> Utilisée pour indiquer un message dans le cas où JavaScript serait désactivé.
<option> Pour déclarer un item dans une liste déroulante. Peut-être utilisé
comme"commands".
<pre> Ecrire un texte préformaté. L'utilisation de la balise <p> n'est pas obligatoire.
Peut-être lui même le conteneur de la balise <code>.
21
HTML5 et CSS3
Balise Description
<progress> Pour une barre de progression.
<q> Utilisée pour une citation courte provenant d'une ressource externe. Si l'on
connait l'URL de la source de la citation, on pourra l'indiquer grâce à l'attribut
"cite". Dans tous les autres cas, on utilise les guillemets sans balise spécifique.
On peut aussi utiliser la balise <cite> pour citer un auteur. Confusion possible
avec la balise <blockquote>.
<rp> Utilisé en annotations ruby pour définir ce qui est à montrer aux navigateurs ne
supportant les éléments ruby.
<s> Utilisé pour identifier une partie de texte qui n'est pas correct ou non pertinent.
Confusion possible avec la balise <del>qui permet d'indiquer qu'un texte doit
être remplacé ou supprimé.
<section> Utilisée pour regrouper des éléments différents, mais partageant la même
thématique Cette balise est le plus souvent utilisé avec un header.
<small> (Attention la balise a été redéfinie, elle ne sert plus à minimiser un texte).
La balise small est utilisée comme contenu relatif mais non essentiel. On
utilisera pour déclarer un copyright, des disclaimers, des mises en garde...
22
HTML5 et CSS3
Balise Description
<source> Utilisée dans les balises <video> et <audio> pour indiquer l'url et le type des
médias.
<span> Utilisée pour mettre en style une portion de texte qui se différencie des autres.
Cette balise ne doit pas être utilisée si une autre balise de formatage de texte
convient mieux.
<style> Permets de définir un style dans le document HTML. Attention, l'attribut title à
une valeur sémantique différente pour cette balise.
<sub> Déclarer un indice : Petit caractère placé en bas et à droite d'un autre
caractère.
<sup> Déclarer un exposant : petit caractère placé en haut et à droite d'un autre
caractère.
23
HTML5 et CSS3
Balise Description
<th> Pour déclarer une cellule dans l'entête d'un tableau.
<wbr> Balise non fermante à utiliser à l'intérieur d'un mot long pour forcer un retour à
la ligne.
24
HTML5 et CSS3
<head>
<title>Titre de la page</title>
<meta charset="utf-8">
</head>
<body>
<div id="page">
<!-- DIV : Aucun sens sémantique – container général -->
<header> Entête de la page </header>
<nav>Menu de la page </nav>
<aside>Liens lié à l’élément qui le borde </aside>
<section>
<article> Contenu - Article 1 </article>
<article> Contenu - Article 2</article>
<article> Contenu - Article 3 </article>
</section>
<footer> Pied-de-page de la page </footer>
</div>
</body>
</html>
25
HTML5 et CSS3
26
HTML5 et CSS3
Nom Détails
27
HTML5 et CSS3
<!--[if lt IE 9]>
<script src="//[Link]/svn/trunk/[Link]">
</script>
<![endif]-->
28
HTML5 et CSS3
L'élément HTML <audio> est utilisé pour rajouter un contenu sonore dans un
document. Il peut contenir plusieurs sources audio introduites avec l'attribut src ou
l'élément <source>. Le navigateur décidera lequel utiliser. Du contenu alternatif peut
aussi être ajouté pour les navigateurs ne supportant pas cette fonctionnalité.
Un contenu alternatif peut être ajouté pour les navigateurs ne supportant pas
l'élément <audio>.
Attributs:
Comme tous les autres éléments HTML, cet élément possède les attributs globaux.
autoplay
Un attribut booléen. Si celui-ci est renseigné (même avec une valeur "false"),
l'élément audio sera joué automatiquement dès qu'assez de données auront été
chargées pour que la lecture ne soit pas interrompue.
controls
Si l'attribut est présent, le navigateur offrira à l'utilisateur des contrôles pour qu'il
puisse gérer la lecture, le volume, la navigation, et la pause ou la reprise de la
lecture.
loop
Un attribut booléen. S'il est renseigné, la lecture du fichier se fera en boucle..
muted
Un attribut booléen, indiquant si le son de l'élément audio doit être coupé. Sa valeur
par défaut est false, indiquant que l'élément audio doit être joué.
preload
Indique si la musique peut être préchargée dès le chargement de la page ou non.
Cet attribut peut prendre les valeurs :
auto (par défaut) : le navigateur décide s'il doit précharger toute la musique,
uniquement les métadonnées ou rien du tout.
metadata : charge uniquement les métadonnées (durée, etc.).
none : pas de préchargement. Utile si vous ne voulez pas gaspiller de bande
passante sur votre site..
src
L'URL du fichier audio à inclure. Cet attribut est sujet aux spécifications du CORS. Il
est optionnel et il est possible d'utiliser l'élément <source> dans le bloc de cet
élément pour définir les fichiers audio à intégrer.
29
HTML5 et CSS3
Exemples
<audio controls="controls">
Votre navigateur ne supporte pas l’élément <code>audio</code>.
<source src="[Link]" type="audio/wav">
</audio>
30
HTML5 et CSS3
La balise <video> est reconnue par tous les navigateurs récents, y compris Internet
Explorer à partir de la version 9 (IE9).
Il suffit d'une simple balise <video> pour insérer une vidéo dans la page :
<video src="[Link]"></video>
Rajoutons quelques attributs (la plupart sont les mêmes que pour la balise <audio>) :
poster : image à afficher à la place de la vidéo tant que celle-ci n'est pas lancée. Par
défaut, le navigateur prend la première image de la vidéo mais, comme il s'agit
souvent d'une image noire ou d'une image peu représentative de la vidéo, je vous
conseille d'en créer une ! Vous pouvez tout simplement faire une capture d'écran
d'un moment de la vidéo.
controls : pour ajouter les boutons « Lecture », « Pause » et la barre de défilement.
Cela peut sembler indispensable, mais certains sites web préfèrent créer eux-mêmes
leurs propres boutons et commander la lecture avec du JavaScript. En ce qui nous
concerne, ce sera largement suffisant !
width : pour modifier la largeur de la vidéo.
height : pour modifier la hauteur de la vidéo.
loop : la vidéo sera jouée en boucle.
autoplay : la vidéo sera jouée dès le chargement de la page. Là encore, évitez d'en
abuser, c'est en général irritant d'arriver sur un site qui lance quelque chose tout
seul!
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 :
auto (par défaut) : le navigateur décide s'il doit précharger toute la vidéo, uniquement
les métadonnées ou rien du tout.
Les proportions de la vidéo sont toujours conservées. Si vous définissez une largeur
et une hauteur, le navigateur fera en sorte de ne pas dépasser les dimensions
indiquées mais il conservera les proportions.
Exemple:
31
HTML5 et CSS3
Champ de
<input type="search" name="" list="datalist" value="">
recherche
<label>Choix 1
<input type="radio" name="radio1" value="radio1">
</label>
Groupe radio
<label>Choix 2
<input type="radio" name="radio1" value="radio2">
</label>
32
HTML5 et CSS3
<select name="select">
<option>Alpha</option>
Select <option>Beta</option>
<option>Delta</option>
</select>
<select name="select2" size="3">
<option>Alpha</option>
Select liste <option>Beta</option>
<option>Delta</option>
</select>
<menu type="context">
<li>Nouveau</li>
<li>Ouvrir</li>
Menu
<li>Sauver</li>
</menu>
Pa supporté
<menu type="toolbar">
<li><button type="button" onclick="fnew()">Nouveau</button></li>
Toolbar <li><button type="button" onclick="fopen()">Ouvrir</button></li>
<li><button type="button" onclick="fsave()">Sauver</button></li>
</menu>
Un site qui reprend toutes les nouveautés du formulaire et vous permet de les tester
dans vos navigateurs: [Link]
33
HTML5 et CSS3
Balise <datalist>
Exemple:
<datalist id="age">
<option value="bébé">
<option value="enfant">
<option value="adolescent">
<option value="adulte">
<option value="papi ou mami">
</datalist>
La balise <datalist> spécifie une liste pré-définis d’options pour un élément <input>.
La balise <datalist> est utilisé pour fournir une « saisie semi-automatique» sur les
éléments <input>. Les utilisateurs verront une liste déroulante d’options prédéfinies
lors de l’entrée des données.
Utiliser l’attribut list de l’élément <input> pour le relier avec un élément <datalist>.
34
HTML5 et CSS3
Exemple:
35
HTML5 et CSS3
1. Placeholder
Placeholder est un attribut qui permet de renseigner un texte indicatif par défaut
dans un champ de formulaire.
C'est une valeur qui s'efface dès que l'utilisateur active le champ de formulaire.
Exemple:
36
HTML5 et CSS3
2. Required
Exemple:
3. Pattern
Exemple:
4. Contenteditable
Tout élément de HTML peut devenir éditable par l'internaute. Ce peut être un
paragraphe <p>, une liste <ul>, etc...
Pour avoir une utilité, il faut que cela soit stocké pour une prochaine session. Cette
attribut est couplé avec les fonctions localStorage, qui conservent des données dans
un espace réservé au navigateur.
37
HTML5 et CSS3
5. Form
C'est une balise, mais c'est aussi maintenant un attribut pour les objets de
formulaire. Cela permet de les placer n'importe où dans la page et de les associer à
un formulaire en indiquant sont ID.
Exemple:
<form id="x">
</form>
<button form="x" />
6. Novalidate
Attribut de form qui indique que les données de formulaire doivent être envoyées
sans validation. On ignore alors l'attribut required.
7. draggable, dropzone
Deux attributs pour toute balise indique le premier que l'on peut déplacer l'élément,
pour le second que l'on peut le placer ici.
8. async
Attribut de script qui fait qu'un script JavaScript sera exécuté de façon asynchrone,
après chargement complet de la page, même s'il se trouve en tête de page.
Exemple
<script async></script>
9. reversed
38
HTML5 et CSS3
10. download
Pour une URL, permet de télécharger le fichier au lieu de l'afficher.
Exemple:
11. autocomplete
Cet attribut de la balise form, a deux valeurs, on, si l'autocomplétion est active, off
sinon. Quand il elle est activée, ce qui l'utilisateur tape dans un champ de texte peut
être automatiquement complété par le navigateur en fonction de ce qu'il a déjà entré
par le passé dans le même champ.
Le développeur n'a rien d'autre à incorporer.
Exemple:
12. dirname
Ces attributs concernent les champs de texte de type: number, range, date,
datetime, datetime-local, month, week, time. Il limitent les valeurs que l'on peut entrer
avec respectivement, une valeur de limite inférieure, une limite supérieure et un
incrément.
Exemple:
39
HTML5 et CSS3
N’avez-vous jamais été tenté d’employer un attribut créé de toutes pièces, non
référencé dans les spécifications ? HTML 5 autorise la mise en oeuvre de tels
attributs personnalisés sous certaines conditions :
• Le nom de l’attribut doit être composé d’au moins un caractère et être préfixé de la
chaîne data- afin d’être valide.
• Il ne doit pas contenir de caractères en majuscules.
• La valeur de l’attribut personnalisé peut être n’importe quelle chaîne de caractères.
Balise <details>
Exemple:
<details>
<summary>Copyright 2012.</summary>
<p>[Link] - Tous droits réservés</p>
</details>
La balise <details> définit les détails supplémentaires que l’utilisateur peut afficher
ou masquer à la demande.
Compatibilité navigateur de l'élément <datalist>
Internet Exlorer Internet Explorer 11 ne le supporte pas ( tout est visible).
Balise <embed>
Exemple:
40
HTML5 et CSS3
Balise <figure>
Exemple:
<figure>
<img src="[Link]" alt="Logo de Marc Lambert" width="300" height="250" />
<figcaption>Photo 01 : Le logo de Marc Lambert.</figcaption>
</figure>
Balise <figcaption>
Exemple:
<figure>
<img src="[Link]" alt="Logo [Link]" width="300" height="250" />
<figcaption>Photo 01 : Le logo de [Link].</figcaption>
</figure>
Balise <mark>
Son style par défaut est celui d'un texte surligné en jaune (dans les navigateurs qui le
reconnaissent).
mark
{
background-color: red;
color: white;
}
41
HTML5 et CSS3
Balise <canvas>
42
HTML5 et CSS3
Exemple:
Partie HTML
<canvas id="dessin" width="500" height="200"></canvas>
Partie CSS
canvas {outline: 1px solid green}
Partie JavaScript
<script>
var draw = [Link]("dessin");
var context = [Link]("2d");
[Link](0, 0, 200, 100);
</script>
43
HTML5 et CSS3
SVG est un format d'image léger lorsqu'il s'agit de représenter des formes simples,
car seules les informations décrivant ces formes sont stockées (coordonnées,
couleurs, effets) contrairement aux images bitmap (JPG, PNG, GIF) qui doivent
mémoriser le contenu pixel par pixel.
Ce principe rend les images SVG étirables sans perte de qualité. Il est également
une alternative à Flash pour les petites animations lorsqu'il est combiné à SMIL, ou
pour présenter des données qui doivent être dynamiques.
Inkscape est un outil gratuit et puissant qui permet de créer des images SVG.
Site web: [Link]
HTML5 introduit un nouvel élément <svg> afin d'embarquer du contenu SVG dans
une page web.
</svg>
44
HTML5 et CSS3
Exemple :
[Link]
{
margin:0;
padding:10px;
color:#000;
}
[Link][title^="ess"]
{
color:#fff;
background:#333;
}
<p class="example"> je n'ai pas d'attribut title</p>
<p class="example" title="comment"> j'ai un attribut title mais il ne commence pas
par "ess"</p>
<p class="example" title="essai"> j'ai un attribut title commençant par "ess"</p>
<p class="example" title="esson"> j'ai un attribut title commençant par "ess"
également</p>
45
HTML5 et CSS3
[attr$="stringValue"]
Ce sélecteur permet de sélectionner un élément DOM dont l'attribut "attr" finit
exactement par la valeur "stringValue".
Exemple :
p.example2
{
margin:0;
padding:10px;
color:#000;
}
p.example2[title$="sai"]
{
color:#fff;
background:#045FB4;
}
<p class="example2"> je n'ai pas d'attribut title</p>
<p class="example2" title="comment"> j'ai un attribut title mais il ne commence pas
par "ess"</p>
<p class="example2" title="essai"> j'ai un attribut title commençant par "ess"</p>
<p class="example2" title="esson"> j'ai un attribut title commençant par "ess"
également</p>
46
HTML5 et CSS3
[attr*="stringValue"]
Ce sélecteur permet de sélectionner un élément DOM dont l'attribut "attr" comporte au
moins une fois la valeur "stringValue".
Exemple :
p.example3
{
margin:0;
padding:10px;
color:#000;
}
p.example3[title*="val"]
{
color:#fff;
background:#990000;
}
<p class="example3"> je n'ai pas d'attribut title</p>
<p class="example3" title="comment"> j'ai un attribut title mais il ne contient pas
"val"</p>
<p class="example3" title="val"> j'ai un attribut title contenant au moins "val"</p>
<p class="example3" title="evaluer"> j'ai un attribut title contenant au moins "val"
également</p>
<p class="example3" title="eval"> j'ai un attribut title contenant au moins "val"
également</p>
47
HTML5 et CSS3
Exemple :
.example4 div
{
margin:0;
padding:10px
color:#000;
}
.example4 div~p
{
color:#fff;
margin:20px;
width:200px;
padding:5px;
border:1px solid #333;
background:#006644;
}
<div class="example4">
<div>je suis l'élément particulier div</div>
<p> je suis un p qui suit le div (l'élement particulier)</p>
<p>je suis un p qui suit le div (l'élement particulier)</p>
<span>je suis un span</p>
<p>je suis un p qui ne suit pas le div (l'élement particulier)</p>
</div>
48
HTML5 et CSS3
[Link] pseudo-classes
Plusieurs pseudo-classes ont été ajoutées :
:root
Ce sélecteur représente un élément qui est la racine d'un document.
Par exemple, en HTML 4, l'élément est html.
:nth-child(expression)
Ce sélecteur permet de cibler tous les éléments en se basant sur leur position dans la
liste des enfants de leur parent.
expression peut être un nombre, une expression numérique ou un mot clé tel que "odd"
ou "even".
49
HTML5 et CSS3
Exemple de pseudo-classes :
.exempleTable
{
width:100%;
border:1px solid #444;
}
.exampleTable tr:nth-child(even)
{ //tous les enfants aux numéros pairs
background:#999999;
text-shadow: 2px 2px 5px #111;
color:#fff;
}
.exampleTable tr:nth-child(odd)
{ //tous les enfants aux numéros impairs
background:#990000;
color:#fff;
}
.exampleTable tr:nth-child(3n)
{ //tous les 3 enfants
background:#045FB4;
color:#fff;
}
.exampleTable tr:nth-child(7)
{ //l'enfant numéro 7
background:#006400;
text-shadow: 2px 2px 2px #fff;
color:#000;
}
50
HTML5 et CSS3
<table class="exampleTable">
<tr>
<td>1ere ligne</td>
</tr>
<tr>
<td>2eme ligne</td>
</tr>
<tr>
<td>3eme ligne</td>
</tr>
<tr>
<td>4eme ligne</td>
</tr>
<tr>
<td>5ere ligne</td>
</tr>
<tr>
<td>6eme ligne</td>
</tr>
<tr>
<td>7eme ligne</td>
</tr>
<tr>
<td>8eme ligne</td>
</tr>
</table>
51
HTML5 et CSS3
:nth-last-child(expression)
Ce sélecteur accepte les mêmes arguments que :nth-child() et correspond au dernier
enfant d'un élément parent.
C'est le même principe que le :nth-child() sauf que l'on part de la fin.
Exemple:
.exampleTable2{
width:100%;
border:1px solid #444;
}
.exampleTable2 tr:nth-last-child(odd){ /*tous les enfants aux numéros
impairs depuis la fin.*/
background:#990000;
color:#fff;
}
.exampleTable2 tr:nth-last-child(-n+2){ /*les 2 derniers enfants.*/
background:#045FB4;
color:#fff;
}
.exampleTable2 tr:nth-last-child(7){ /*l'enfant numéro 7 en partant de la fin
donc la 2ème ligne du tableau.*/
background:#006400;
text-shadow: 2px 2px 2px #fff;
color:#000;
}
52
HTML5 et CSS3
<table class="exampleTable2">
<tr>
<td>1ere ligne</td>
</tr>
<tr>
<td>2eme ligne</td>
</tr>
<tr>
<td>3eme ligne</td>
</tr>
<tr>
<td>4eme ligne</td>
</tr>
<tr>
<td>5ere ligne</td>
</tr>
<tr>
<td>6eme ligne</td>
</tr>
<tr>
<td>7eme ligne</td>
</tr>
<tr>
<td>8eme ligne</td>
</tr>
</table>
53
HTML5 et CSS3
:last-child
Correspond à :nth-last-child(1).
:first-child
Correspond à :nth-child(1).
:nth-of-type(expression)
Ce sélecteur représente un élément qui a expression frères du même type devant lui
dans l'arbre DOM.
Exemple:
img:nth-of-type(2n+1) { float: right; }
img:nth-of-type(2n) { float: left; }
:nth-last-of-type(expression)
Ce sélecteur représente un élément qui a expression - 1 frères du même type après
lui dans l'arbre DOM.
Exemple
body > h2:nth-of-type(n+2):nth-last-of-type(n+2)
représente tous les h2 fils d'un élément XHTML body sauf le premier et le dernier.
:first-of-type
Correspond à :nth-of-type(1). :first-of-type représente un élément qui est le premier
enfant de son type dans la liste des enfants de son élément parent.
:last-of-type
Correspond à :nth-last-of-type(1). Représente un élément qui est le dernier enfant de
son type dans la liste des enfants de son élément parent.
:only-child
Correspond à un élément qui n'a aucun frère. Cette pseudo-classe correspond à :first-
of-type:last-of-type ou :nth-of-type(1):nth-last-of-type(1).
:checked
Correspond aux éléments cochés d'un formulaire.
:empty
Correspond aux éléments n'ayant pas d'enfant ou ne contenant rien (un paragraphe
vide par exemple).
54
HTML5 et CSS3
:target
Représente un élément qui est la cible de l'URI.
Exemple :
p:target
{
background:#900
}
Tout élement p qui sera la cible de l'URI (via l'ID # en tant que ancre) aura pour
couleur d'arrière plan la valeur "#900".
:valid
Représente un élément qui dans un formulaire est valide.
:invalid
Représente un élément qui dans un formulaire est n'est pas valise.
55
HTML5 et CSS3
Les pseudo-élements
::first-line
Applique la règle de style à la premiere ligne du texte de l'élément.
Exemple:
p::first-line
{
text-transform: uppercase
}
::first-letter
Applique la règle de style à la première lettre du texte de l'élément.
Exemple
p::first-letter
{
font-size:2em
}
La 1ère lettre de(s) élément(s) "p" a une taille de police de 2em.
56
HTML5 et CSS3
::selection
Applique la règle de style à la sélection du texte de l'élément faite par l'utilisateur.
Exemple:
p::selection
{
background:#006644
}
A la sélection, le texte sélectionné aura une couleur d'arrière plan de valeur '#006644'.
Remarque:
IE sur mobile ne l'accepte pas.
Chrome ne traite pas ce pseudo-élément sur les input.
::before et ::after
Génère un contenu avant ou après un contenu d'un élément.
Ces pseudo-elements existent en CSS2.1 sous forme :before et :after.
Exemple:
[Link]:before
{
content: "Note : "
}
cette règle insère la chaîne "Note : " avant le contenu de chacun des éléments P
dont l'attribut "class" a la valeur "note"
57
HTML5 et CSS3
58
HTML5 et CSS3
Exemples:
p
{
font-size: 14px; /* Paragraphes de 14 pixels */
}
h1
{
font-size: 40px; /* Titres de 40 pixels */
}
Exemples:
p
{
font-size: small;
}
h1
{
font-size: large;
}
p
{
font-size: 0.8em;
}
h1
{
font-size: 1.3em;
}
59
HTML5 et CSS3
La police
La propriété CSS qui permet d'indiquer la police à utiliser est font-family. Vous
devez écrire le nom de la police comme ceci :
Exemple:
h1
{
font-family: arial, "Arial Black", Verdana, sans-serif;
}
Nouveauté CSS3: la possibilité d'utiliser des polices ne se situant pas sur l'ordinateur
du client avec la propriété @font-face
Exemple:
@font-face {
font-family: 'Toons';
src: url('[Link]') format('eot'),
url('[Link]') format('woff'),
url('[Link]') format('truetype'),
url('[Link]') format('svg');
}
h1
{
font-family: 'Toons', Arial, serif;
}
Le Gras
La propriété CSS pour mettre en gras est font-weight
Les différentes valeurs sont exprimées par un mot clé ou par un poids.
font-weight: normal|bold|bolder|lighter|initial|inherit;
font-weight: 100|200|300|400|500|600|700|800|900|inherit;
Couper un mot avec la propriété word-wrap
Lorsqu' un mot est trop long, le comportement par défaut et de le faire déborder sans
affecter la dimension du conteneur.
60
HTML5 et CSS3
61
HTML5 et CSS3
Exemple:
h1
{
text-shadow: 2px 2px 2px #ff0000;
color: #000;
}
Soulignement et "décorations"
La propriété CSS associée est : text-decoration.
Voici les différentes valeurs qu'elle peut prendre :
underline : souligné.
line-through : barré.
overline : ligne au-dessus.
blink : clignotant. Ne fonctionne pas ou plus sur tous les navigateurs.
none : normal (par défaut).
Exemples:
h1
{
text-decoration: blink;
}
.souligne
{
text-decoration: underline;
}
.barre
{
text-decoration: line-through;
}
.ligne_dessus
{
text-decoration: overline;
}
L'alignement du texte
la propriété text-align nous permet de spécifier l'alignement désiré :
Les valeurs:
left : le texte sera aligné à gauche (c'est le réglage par défaut).
62
HTML5 et CSS3
Exemple:
h1
{
text-align: center;
}
p
{
text-align: justify;
}
63
HTML5 et CSS3
Columns
CSS 3 offre la possibilité de présenter un texte sur plusieurs colonnes, à l’instar des
journaux papier, via column et ses propriétés dérivées.
Ces différentes propriétés peuvent être scindées en trois parties fonctionnelles :
• Le premier groupe de propriétés définit le nombre et la taille des colonnes :
– columns (raccourci de column-count et column-width) : nombre de colonnes et
éventuellement largeur de chaque colonne ;
– column-min-width : largeur minimale de chaque colonne ;
– column-width-policy : le mode d’affichage des colonnes (valeurs "flexible", "strict"
ou "inherit").
• Le second groupe gère ce qu’il y a entre les colonnes :
– column-gap : distance entre chaque colonne ;
– column-rule (raccourci de column-rule-color, column-rule-style et column-rule-
width) : couleur, style et largeur de la séparation entre colonnes.
• Enfin, une propriété column-span permet à un élément de s’étendre sur plusieurs
colonnes.
Compatibilité columns
Le positionnement multicolonnes est - contre toute attente - plutôt bien supporté par
le collège des navigateurs. Les anciennes versions d'Internet Explorer faisant bien
entendu exception à la règle.
En pratique, il est actuellement utilisable sans problème en production sur les
navigateurs mobiles que l'on retrouve sur smartphones et tablettes.
64
HTML5 et CSS3
La transparence
La propriété utilisée est opacity qui indique le niveau de transparence.
Les valeurs sont comprises entre 0 et 1
Exemple:
div
{
opacity: 0.5;
}
Compatibilité:
Exemple:
p
{
background-color: rgb(255,0,255,0.5);
}
65
HTML5 et CSS3
La notation HSLa
La notation HSLa traduit les couleurs via des canaux de teinte, de saturation, de
luminosité et de transparence :
Ces systèmes de notation sont pris en compte sur Chrome, Safari, Opera, Firefox 4,
et Internet Explorer 9
66
HTML5 et CSS3
Exemple:
.coin
{
background-color:#E4EFFF;
border:1px solid #9FC6FF;
padding:5px;
/*arrondir les coins en haut à gauche et en bas à droite*/
-moz-border-radius:10px 0;
-webkit-border-radius:10px 0;
border-radius:10px 0;
}
67
HTML5 et CSS3
Exemple:
.ombre1
{
background-color:#C0C0C0;
border:1px solid gray;
padding:5px;
box-shadow:2px 2px 10px gray;
-moz-box-shadow:2px 2px 10px gray;
-webkit-box-shadow:2px 2px 10px gray;
}
On peut aussi rajouter la valeur inset qui va ombrer l'intérieur en donnant un effet de
relief en creux.
.ombre2 {
background-color:#C0C0C0;
border:1px solid gray;
padding:5px;
box-shadow:2px 2px 10px gray inset;
-moz-box-shadow:2px 2px 10px gray inset;
-webkit-box-shadow:2px 2px 10px gray inset;
}
68
HTML5 et CSS3
Arrière-plans multiples
CSS 3 rend possible l’affichage de plusieurs images d’arrière-plan sur un même
élément en cumulant les valeurs au sein des propriétés background-image,
background-position et backgroundrepeat, ces valeurs étant simplement séparées
par une virgule.
Le résultat est similaire à des calques d’un logiciel graphique tel que Photoshop : la
première image déclarée dans la liste sera au premier plan. Si une couleur de fond
est déclarée, elle sera toujours reléguée au dernier plan.
L’ordre de déclaration est important : dans l’exemple ci-après, la position left top
s’applique uniquement à la première image et right bottom s’applique uniquement à
la deuxième image. Si une seule propriété est spécifiée (dans notre exemple no-
repeat), elle sera appliquée à l’ensemble des images.
Exemple:
div
{
background-image: url("[Link]"),url("[Link]");
background-position: left top,right bottom;
background-repeat: no-repeat;
}
Ou, en employant la propriété raccourcie background :
div {
background: url("[Link]") left top no-repeat, url("[Link]") right bottom
no-repeat;
}
background-position admet des valeurs absolues pour le positionnement
Exemple:
div
{
background-image: url("[Link]");
background-position: 50px 30px
}
ou encore
div
{
background-image: url("[Link]");
background-position: right 20px left 10 px;
}
69
HTML5 et CSS3
70
HTML5 et CSS3
Exemple
img
{
filter: type(value);
-webkit-filter: type(value);
-moz-filter: type(value);
-ms-filter: type(value);
-o-filter: type(value);
}
71
HTML5 et CSS3
nous allons définir une valeur pour un effet noir et blanc total puis au survol de
l'image par la souris nous allons retirer l'effet.
<section class="grayscale">
<h2>CSS Greyscale</h2>
<img height="200" src="images/[Link]" />
</section>
.grayscale img
{
filter: grayscale(1);
-webkit-filter: grayscale(1);
-moz-filter: grayscale(1);
-o-filter: grayscale(1);
-ms-filter: grayscale(1);
}
.grayscale img:hover
{
filter: grayscale(0);
-webkit-filter: grayscale(0);
-moz-filter: grayscale(0);
-o-filter: grayscale(0);
-ms-filter: grayscale(0);
}
Remarque: très mal supporté par les navigateurs, pas IE (pc), pas Firefox, pas
Opera Mini
72
HTML5 et CSS3
Exemple:
nav, section
{
float:left
}
nav
{
width: 250px;
}
section
{
width: calc(100% - 250px)
}
73
HTML5 et CSS3
CSS offre différentes unités pour exprimer les dimensions. Certaines proviennent de
la typographie, comme le point (pt) et le pica (pc), d'autres sont connues pour leur
usage quotidien, comme le centimètre (cm) et le pouce (in). Et il y a également une
unité "magique" inventée spécifiquement pour CSS: le pixel px. Est-ce que cela
signifie que différentes propriétés nécessitent différentes unités ?
Non, les unités n'ont rien à voir avec les propriétés, mais avec le média de sortie:
écran ou papier.
Il n'y a pas de restriction à utiliser telle unité à tel ou tel endroit. Si une propriété
accepte une valeur en px ('margin: 5px') elle accepte également une valeur en
pouces ou en centimètres ('margin: 1.2in; margin: 0.5cm') et vice-versa.
Mais généralement, vous utilisez un ensemble différent d'unités selon que vous
affichez sur un écran ou que vous imprimez sur du papier. La table ci-dessous
recommande les différents usages:
Usage occasionnel
Recommandé use Non recommandé
La relation entre les unités absolues est la suivante: 1in = 2.54cm = 25.4mm = 72pt =
6pc
74
HTML5 et CSS3
Les unités appelées absolues (cm, mm, in, pt and pc) signifient la même chose en
CSS que partout ailleurs, mais uniquement si votre support de sortie a une résolution
assez élevée. Sur une imprimante laser, 1cm devrait correspondre exactement à 1
centimètre. Mais pour des supports avec une basse résolution, comme les écrans
d'ordinateurs, CSS n'exige pas cela. Et effectivement, le résultat tend à être différent
d'un support à l'autre et d'une implémentation de CSS à l'autre. Il est préférable de
réserver ces unités pour des supports haute-résolution et en particulier pour les
supports d'impression. Sur les écrans d'ordinateurs ou de portables, vous
n'obtiendrez probablement pas ce que vous attendez.
Auparavant, CSS exigeait que les implementations affichent les unités absolues
correctement, y compris sur les écrans d'ordinateurs. Mais comme le nombre
d'implementations incorrectes dépassait le nombre d'implementations correctes et
que cela n'allait pas en s'améliorant, CSS a abandonné cette condition en 2011.
Aujourd'hui, les unités absolues doivent fonctionner correctement sur les sorties
imprimées et sur les supports haute-résolution uniquement.
CSS de définie pas ce que "haute-résolution" signifie. Mais comme actuellement les
imprimantes d'entrée de gamme commencent à 300 dpi et que les écrans haut de
gamme atteignent 200 dpi, la limite est probablement entre les 2.
Il y a une autre raison de ne pas employer les unités absolues pour des utilisations
autres que l'impression: vous regardez des écrans différents à des distances
différentes. 1cm sur un écran d'une station de travail apparaît petit. Mais le même sur
un téléphone mobile juste en face de vos yeux apparaît grand. Il est préférable
d'utiliser des unités relatives à la place, comme em.
75
HTML5 et CSS3
L' unité ex est rarement utilisée. Son but est d'exprimer des tailles relatives à l'x-
height de la police. Le x-height est, schématiquement, la hauteur des plus petites
lettres comme le a, c, m, or o. Les polices qui ont la même taille (donc le même em)
peuvent varier considérablement concernant la taille de leurs plus petites lettres, et
lorsqu'il est important que certaines images par exemple aient le même x-height,
l'unité ex est disponible.
L'unité px est l'unité magique en CSS. Elle n'est pas relative à la police courante ni
relative aux unités absolues. L'unité px est définie pour être 'petite mais visible', et de
telle façon qu'une ligne horizontale de 1px de largeur peut être affichée de façon
nette, sans 'arête' (ni anti-aliasing). Ce qui est net, petit et visible dépend du support
et de la façon dont il est utilisé: est-ce que vous le tenez près des yeux, comme un
téléphone mobile, à la distance d'un bras, comme un écran d'ordinateur, ou à une
distance intermédiaire, comme une liseuse? Le px n'est donc pas défini comme une
longueur constante, mais comme quelque chose qui dépend du type de matériel et
de son usage spécifique.
Pour avoir une idée de l'apparence du px, prenez un écran cathodique des années
90: le plus petit point qu'il peut afficher mesure environ 1/100e de pouce (0.25mm)
ou un peu plus. L'unité px tire son nom de ces pixels d'écrans.
De nos jours, il y a des supports qui peuvent en principe afficher des points nets plus
petits (bien que vous puissiez avoir besoin d'une loupe pour les voir). Mais les
documents du siècle dernier qui utilisaient des px dans CSS sont rendus de la même
façon, quelque soit le support. Les imprimantes en particulier peuvent afficher des
lignes très nettes avec des détails bien inférieurs à 1px, mais même sur les
imprimantes, une ligne de 1px est rendue de la même façon qu'elle l'aurait été sur un
écran d'ordinateur. Les supports changent, mais le px a toujours la même apparence
visuelle.
En fait, CSS requiert que 1px soit exactement 1/96e de pouce sur toutes les sortie
imprimées. CSS considère que les imprimantes, contrairement aux écrans, n'ont pas
besoin d'avoir différentes tailles pour px pour être en mesure d'imprimer des lignes
nettes. Dans un média imprimé, un px à donc non seulement la même apparence
visuelle d'un média à un autre, mais il est en plus de la même taille (de la même
manière que pour cm, pt, mm, in et pc, comme expliqué ci-dessus).
76
HTML5 et CSS3
CSS définie également que les images matricielles (comme les photos) sont
affichées par défaut avec 1 pixel d'image correspondant à 1px. Ainsi, une photo avec
une résolution 600 x 400 aura 600px de large et 400px de haut. Les pixels de la
photo ne correspondant donc pas aux pixels du support de sortie (lequel peut être
très petit), mais correspondent aux unités px. Cela rend possible le fait d'aligner
exactement des images avec d'autres éléments du document, tant que vous utilisez
l'unité px dans votre feuille de style, et non pt, cm, etc.
Voici quelques lignes de différentes épaisseurs. Toutes ou partie peuvent être nettes
(mais au minimum les lignes 1px et 2px doivent être visibles et nettes):
Si les 4 premières lignes apparaissent identiques (ou si la ligne 0.5pt n'est pas
affichée), vous avez probablement un écran qui ne peut afficher des points inférieurs
à 1px. Si les lignes semblent de plus en plus épaisses, vous regardez probablement
cette page sur un écran en haute résolution ou sur du papier. Et si 1pt semble plus
épais que 1.5px, vous avez probablement un smartphone.
L'unité magique en CSS, le px, est souvent très adaptée, en particulier si le style
nécessite l'alignement d'un texte sur des images, ou tout simplement parce que tout
ce qui a une largeur de 1px ou d'un multiple de 1px est assuré d'avoir un rendu net.
Mais pour les tailles de police, il est préférable d'utiliser em. L'idée est (1) de ne pas
spécifier la taille de la police de l'élément BODY (en HTML), mais d'utiliser la taille
par défaut du support, parce que c'est une taille que l'utilisateur peut lire
confortablement; (2) exprimer les tailles de police des autres éléments en em: 'H1
{font-size: 2.5em}' pour rendre le H1 2½ fois plus grand que le contenu normal du
corps du document.
Le seul endroit ou vous pourriez utiliser pt (ou cm ou in) pour définir une taille de
police est dans une feuille de style pour l'impression, si vous voulez être sûr que la
77
HTML5 et CSS3
police imprimée aura exactement une certaine taille. Mais même dans ce cas, utiliser
la taille par défaut de la police est généralement plus indiqué.
L'unité px vous évite donc à devoir connaître la résolution du support. Que le sortie
soit en 96 dpi, 100 dpi, 220 dpi ou 1800 dpi, une dimension exprimée avec un nombre
entier de px sera toujours rendue correctement et de façon très similaire sur tous les
supports. Mais qu'en est-il si vous voulez vraiment connaître la résolution du support,
par exemple, savoir si on peut utiliser une ligne en 0.5px ? La réponse consiste à
vérifier la résolution avec Media Queries. Expliquer Media Queries sort du cadre de
cet article, néanmoins voici un petit exemple:
Pour rendre encore plus facile le fait d'écrire des règles de style qui ne dépendent
que de la taille de la police par défaut, CSS a introduit une nouvelle unité depuis
2013: Le rem. Le rem (pour "root em") est la taille de l'élément racine du document
dans la police de caractères. Contrairement au em, qui peut être différent pour
chaque élément, le rem est constant tout au long du document. Par exemple, pour
définir la même marge gauche pour les éléments P et H1, comparez cette feuille de
style antérieure à 2013:
p { margin-left: 1em }
h1 { font-size: 3em; margin-left: 0.333em }
et la nouvelle version:
p { margin-left: 1rem }
h1 { font-size: 3em; margin-left: 1rem }
D'autres nouvelles unités rendent possible le fait de spécifier des tailles relatives à la
fenêtre du lecteur, ce sont les unités vw and vh. Le vw équivaut à 1/100e de la
largeur de la fenêtre et le vh équivaut à 1/100e de sa hauteur. Il y a également vmin,
qui sélectionne la plus petite valeur entre vw et vh. Et vmax. (vous devinerez ce
qu'elle signifie.)
78
HTML5 et CSS3
Comme elles sont très récentes, elles ne fonctionnent pas encore partout. Mais en
ce début 2016, plusieurs navigateurs les supportent déjà.
79
HTML5 et CSS3
La propriété transition-property
Cette propriété, comme son nom l'indique, permet de définir quelles propriétés seront
affectées par les transitions. Ces propriétés sont précisées en les listant, séparées
par des virgules.
La propriété transition-duration
Cette propriété permet de préciser la durée de la transition. Si plusieurs propriétés
ont été précisées à l'aide de la propriété précédente, il est possible de préciser
plusieurs valeurs pour cette propriété en les séparant également d'une virgule.
Exemple:
h2
{
transition-duration: 5s;
}
La propriété transition-timing-function
Pour calculer les valeurs intermédiaires, le navigateur procède à une interpolation. La
fonction calculant la valeur de cette interpolation influence directement la fluidité de
l'animation.
Certaines animations sont plus rapides sur le début et ralentissent sur la fin, d'autres
sont constantes dans leur vitesse (linéaires). Afin d'exprimer ces différents modèles
d'animations, les spécifications introduisent une fonction de timing. Cette fonction de
timing va traduire les nombres d'entrée (exprimés entre 0 et 1) en d'autres nombres
80
HTML5 et CSS3
La propriété transition-delay
La transition commence, par défaut, dès que la propriété est changée suite à
l'événement. La propriété transition-delay permet d'adapter ce comportement en
retardant ou en avançant le début de la transition.
81
HTML5 et CSS3
Exemple:
.box
{
width:100px;
height: 100px;
transition: width 2s ease, height 3s linear;
}
.box:hover
{
width:200px;
height: 200px;
}
background-color
background-position
border-bottom-color
border-bottom-width
border-left-color
border-left-width
border-right-color
border-right-width
border-spacing
border-top-color
border-top-width
bottom
clip
color
font-size
font-weight
82
HTML5 et CSS3
background-color
background-position
border-bottom-color
border-bottom-width
height
left
letter-spacing
line-height
margin-bottom
margin-left
margin-right
margin-top
max-height
max-width
min-height
min-width
opacity
outline-color
outline-width
padding-bottom
padding-left
padding-right
padding-top
right
text-indent
text-shadow
top
vertical-align
visibility
width
word-spacing
z-index
83
HTML5 et CSS3
84
HTML5 et CSS3
Les transformations
La propriété transform permet d’appliquer des transformations en deux dimensions
sur un élément html.
1- rotation: rotate
2- translation: translate
3- redimensionnement: scale
4- distorsion: skew
1- La rotation
La rotation est possible via la propriété transform prenant pour valeur rotate(x).
L'argument de rotate correspond à la valeur de l'angle de rotation et peut être négatif.
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
Attention : Sous les navigateurs Webkit (Chrome et Safari), on ne peut pas appliquer
la transformation à n'importe quel tag HTML ( par exemple le span ne permet pas de
transformation de type rotation).
2- La translation
La valeur translate de la propriété transform permet de déplacer un élément en x et y
par rapport à sa position d'origine. Cette valeur peut prendre un ou deux arguments.
Le premier argument correspond à une translation en x (horizontale) et le deuxième
argument à une translation en y (verticale).
-webkit-transform: translate(20px);
-moz-transform: translate(20px);
-o-transform: translate(20px);
transform: translate(20px);
/*translation horizontale et verticale de 20px*/
Ces arguments peuvent être négatifs.
85
HTML5 et CSS3
Tout comme scale et skew,translate peut être utilisé sous cette forme :
3- Le redimensionnement
La valeur scale de la propriété transform permet de dilater/redimensionner un
élément. Cette valeur peut prendre un ou deux arguments : scale(x) ou scale(x, y).
Avec une seule valeur, le x correspond au coefficient de dilatation en largeur (width)
et en hauteur (height). Avec deux valeurs, x correspond à la largeur (width) et y à la
hauteur (height).
-webkit-transform: scale(2);
-moz-transform: scale(2);
-o-transform: scale(2);
transform: scale(2);
ou
-webkit-transform: scale(2, 1);
-moz-transform: scale(2, 1);
-o-transform: scale(2, 1);
transform: scale(2, 1);
Il est à noter que l'on peut utiliser les sous-valeurs de scale : scaleX et scaleY.
Exemple:
transform: scaleX(2) scaleY(1)
86
HTML5 et CSS3
La distorsion
La valeur skew de la propriété transform permet de tordre un élément. Cette valeur
peut prendre un ou deux arguments (unité en degré).
S'il n'y a qu'un argument, cela équivaut à une distorsion horizontale. S'il y a le
deuxième argument, celui-ci contrôlera la distorsion verticale.
glissement horizontal :
-webkit-transform: skew(30deg);
-moz-transform: skew(30deg);
-o-transform: skew(30deg);
transform: skew(30deg);
87
HTML5 et CSS3
Les animations
Les Animations permettent de modifier les valeurs de propriétés CSS plusieurs fois
dans le temps, tel un scénario Flash. C’est la possibilité d'utiliser plusieurs.
Déclarer l'animation
Il faut pour cela utiliser @keyframes, lui donner un nom, puis gérer les "étapes" en
pourcentage à l’intérieur de cette déclaration. Les mots-clés from et to correspondent
respectivement à 0 et 100%.
Remarque : Il est à noter que les keyframes 0% et 100% sont obligatoires et que
leur omission empêchera le fonctionnement de votre animation sur certains
navigateurs.:
@keyframes nomAnim
{
0% { color:blue; }
35% { color:green; }
100% { color:red; }
}
Les propriétés
88
HTML5 et CSS3
Exemple:
div
{
animation: nomAnim 5s linear 2s;
}
Les Animations CSS3 sont compatibles avec IE 10, Firefox 5, Chrome 4, Safari 4,
Opéra 12 et sur iOS et Android 4. Cependant, pour pouvoir les utiliser, il faut préfixer
toutes les propriétés ainsi que les étapes définies avec @keyframes comme suit:
div
{
-webkit-animation: nomAnim 5s linear 2s;
-moz-animation: nomAnim 5s linear 2s;
-ms-animation: nomAnim 5s linear 2s;
-o-animation: nomAnim 5s linear 2s;
animation: nomAnim 5s linear 2s;
}
Remarque:
- IE10, Firefox 16 et Opera 12.1 supportent les propriétés non-préfixées.
- Site de préfixage automatique: [Link]
89
HTML5 et CSS3
• transition-timing-function
• animation-timing-function (dans un bloc de code CSS ou au sein d'une keyframe)
Ces effets de timing permettent de gérer la fluidité d'une transition (entre deux
propriétés CSS ou entre deux keyframes). Un effet de timing peut-être représenté
sous deux formes: une fonction en escalier (stepping function), ou une courbe de
Bézier cubique.
Dans le cas de ces deux fonctions, on pourra se les représenter sur un graphique où
l'axe des Y représentera chaque étape entre la valeur initiale et la valeur finale de la
propriété CSS subissant une transition et l'axe des X représentera l'avancement
dans le temps de la transition (de son début à sa fin).
Dans le cas du graphique précédent (où une courbe de Bézier est utilisée), notre
animation commencera lentement et finira lentement.
90
HTML5 et CSS3
91
HTML5 et CSS3
La syntaxe
Une courbe de cubic-bezier sera définie par quatre points (p0, p1, p2, p3) disposés
sur un graphique où les axes X et Y auront pour valeur une échelle entre 0 et 1.
92
HTML5 et CSS3
La fonction steps()
La fonction CSS steps() vous permet de définir une transition en "escalier". Cela veut
dire que votre transition ne sera pas fluide comme si elle utilisait cubic-bezier, mais
passera par des étapes (step) bien tranchées.
La syntaxe de cette fonction est plutôt simple. Elle prendra deux paramètres :
La fonction steps() pourrait être utilisé pour imiter l'action d'une machine à écrire, ou
alors pour animer une image.
93
HTML5 et CSS3
94
HTML5 et CSS3
Exemples:
.degrade1
{
background-image:linear-gradient(to right, white, black);
}
.degrade2
{
background-image:-moz-linear-gradient(30deg, white, black);
background-image:-webkit-linear-gradient(30deg, white, black);
background-image:-o-linear-gradient(30deg, white, black);
background-image:linear-gradient(60deg, white, black);
}
95
HTML5 et CSS3
Contrairement à ce qu'on pourrait penser, les media queries ne concernent pas que
les résolutions d'écran. Vous pouvez changer l'apparence de votre site en fonction
d'autres critères comme le type d'écran (smartphone, télévision, projecteur…), le
nombre de couleurs, l'orientation de l'écran (portrait ou paysage), etc. Les
possibilités sont très nombreuses !
Les media queries fonctionnent sur tous les navigateurs récents, y compris Internet
Explorer à partir de la version 9
96
HTML5 et CSS3
Code : HTML
On peut lui ajouter un attribut media, dans lequel on va écrire la règle qui doit
s'appliquer pour que le fichier soit chargé. On dit qu'on fait une « requête de media »
(media query en anglais).
Exemple :
Code : HTML
Il existe de nombreuses règles permettant de construire des media queries, ici les
principales :
97
HTML5 et CSS3
print : impression ;
tv : télévision ;
projection : projecteur ;
On peut rajouter le préfixe min- ou max- devant la plupart de ces règles. Ainsi, min-
width signifie « Largeur minimale », max-height « Hauteur maximale », etc.
only : « uniquement » ;
and : « et » ;
not : « non ».
le : « or » n'existe pas mais peut être écrit en utilisant la virgule, comme suit:
98
HTML5 et CSS3
99
HTML5 et CSS3
Sous l’appellation Flexible box model module, CSS 3 signe son projet le plus
avancé et prometteur puisque déjà compris par un certain nombre de navigateurs
récents.
Le modèle de boîte flexible apparaît comme une extension du modèle de boîte
classique défini en CSS 2.1, bénéficiant bien entendu de nouveaux potentiels, parmi
lesquels la possibilité d’alterner entre une distribution horizontale ou verticale des
éléments, disposer de largeurs fluides dans les deux sens et, surtout, de pouvoir
définir l’ordre exact d’affichage des boîtes à l’écran.
display : box
Le modèle de boîte étendu est initié par la valeur box associée à une propriété que
nous connaissons bien à présent : display. Il vous suffit d’affecter la déclaration
display: box à un bloc pour lui faire adopter le modèle de boîte flexible et que ses
éléments se disposent automatiquement les uns à côté des autres.
Exemple:
Partie HTML
<div id="main">
<p>une boîte</p>
<p>encore une boîte</p>
<p>et encore une troisième boîte</p>
<p>et hop!</p>
</div>
Partie CSS
#main
{
display: box;
}
Dans la pratique, ce module n’étant pas finalisé, il conviendra d’utiliser les préfixes
-moz- pour Mozilla Firefox et -webkit- pour Chrome et Safari, ce qui nous donne :
Partie CSS
#main
{
display: -moz-box;
display: -webkit-box;
display: box;
}
100
HTML5 et CSS3
La propriété box-orient fait basculer les boîtes d’une distribution horizontale vers un
empilement vertical
Exemple
#main
{
display: -moz-box;
display: -webkit-box;
display: box;
-moz-box-orient: vertical;
-webkit-box-orient: vertical;
box-orient: vertical;
}
101
HTML5 et CSS3
Ordre d’empilement
Il est même possible de définir explicitement l’ordre de distribution des boîtes grâce à
la propriété box-ordinal-group. La distribution se fait du plus petit (le groupe 1) au
plus grand (le groupe 2, puis 3, etc.). La valeur par défaut de cette propriété est 1.
#main > p
{
-moz-box-ordinal-group: 2;
-webkit-box-ordinal-group: 2;
box-ordinal-group: 2;
}
Positionnement avancé
102
HTML5 et CSS3
Cet exemple définit un groupe ordinal secondaire (valeur 2) pour chaque boîte de
paragraphe, à l’exception de la dernière qui, par conséquent, s’affichera… en
premier
Comme son nom l’indique, le modèle de boîte flexible apporte en toute simplicité une
dimensionde fluidité aux éléments.
Une boîte devient flexible à partir du moment où elle se voit attribuer la propriété box-
flex avec une valeur supérieure ou égale à 1. Elle s’étend alors sur toute la surface
disponible restante au sein de son parent
#main
{
...
width: 100%;
}
#main > p:first-child
{
-moz-box-flex: 1;
-webkit-box-flex: 1;
box-flex: 1;
}
103
HTML5 et CSS3
#main > p
{
-moz-box-flex: 1;
-webkit-box-flex: 1;
box-flex: 1;
}
104
HTML5 et CSS3
105
HTML5 et CSS3
text-
capitalize, lowercase, uppercase Capitales
transform
Super propriété de
police. Combine : font-
font - weight,font-style, font-
size, font-variant, font-
family.
Alignement vertical
vertical- (cellules de tableau ou
baseline, middle, sub, super, top, bottom
align éléments inline-
block uniquement)
white-
pre, nowrap, normal Césure
space
106
HTML5 et CSS3
107
HTML5 et CSS3
nom, rgb(rouge,vert,bleu),
color rgba(rouge,vert,bleu,transparence), Couleur du texte
#CF1A20...
background-
Identique à color Couleur de fond
color
background-
url('[Link]') Image de fond
image
background-
fixed, scroll Fond fixe
attachment
background-
repeat-x, repeat-y, no-repeat, repeat Répétition du fond
repeat
background-
(x y), top, center, bottom, left, right Position du fond
position
"px" ou "%"
"cover" : forcera à couvrir toute la
surface sans déformer l'image.
background- Taille de l'image dans l'arrière
Quitte à la rogner.
size plan
"contain" : forcera l'image à ne pas
dépasser de l'élément sans la
déformer.
108
HTML5 et CSS3
Remarque:
Exemple:
#example1
{
width: 500px;
height: 250px;
background-image: url([Link]), url([Link]);
background-position: center bottom, left top;
background-repeat: no-repeat;
}
109
HTML5 et CSS3
margin-
23px Marge en bas
bottom
Super-propriété de marge.
23px 5px 23px 5px Combine : margin-
margin
(haut, droite, bas, gauche) top, margin-right,margin-
bottom, margin-left.
padding-
23px Marge intérieure à droite
right
padding-
23px Marge intérieure en bas
bottom
Super-propriété de marge
intérieure.
23px 5px 23px 5px
padding Combine : padding-
(haut, droite, bas, gauche)
top, padding-right,padding-
bottom, padding-left.
border-
3px Épaisseur de bordure
width
nom, rgb(rouge,vert,bleu),
border-
rgba(rouge,vert,bleu,transparence), Couleur de bordure
color
#CF1A20...
110
HTML5 et CSS3
Super-propriété de bordure.
Combineborder-
width, border-color, border-
style.
border 3px solid black
Existe aussi en
version border-top, border-
right, border-bottom, border-
left.
border-
5px Bordure arrondie
radius
111
HTML5 et CSS3
112
HTML5 et CSS3
list-style-
inside, outside Position en retrait
position
list-style-
url('[Link]') Puce personnalisée
image
Super-propriété de liste.
list-style - Combine list-style-type, list-style-
position,list-style-image.
113
HTML5 et CSS3
114
HTML5 et CSS3
Autres propriétés
115