Académique Documents
Professionnel Documents
Culture Documents
HTML 5 - CSS 3
INITIATION
f o rm ati o n @ d a m d . f r - ht tp s : //d i s c o r d .g g /u f g a c c z v wd 1
Sommaire
2
1A. HISTORIQUE
AU DÉBUT DES ANNÉES 1968 : Le projet Arpanet, est approuvé par l’ARPA et donc financé.
1960, J.C.R. LICKLIDER DU 1969 : Premier noeud de raccordement entre L’Université de Los Angeles et l’Université de Standford.
MASSACHUSETTS INSTITUTE OF 1972 : Mis au point par Ray Tomlinson, le premier courriel est envoyé & première démonstration publique d’Arpanet.
TECHNOLOGY (MIT) DÉCRIVIT 1983 : Arpanet adopte la norme TCP/IP, c’est le démarrage d’Internet avec un millier de poste connecté.
POUR LA PREMIÈRE FOIS LES 1991 : Tim Berners-Lee du CERN participe à la création du World Wide Web en développant un Système Hype texte
INTERACTIONS SOCIALES organisé en web, naissance du protocole http et de l’internet grand public.
POSSIBLES AVEC UN RÉSEAU Depuis 2000 : démocratisation de l’internet du haut débit vers le très haut débit. Google et son moteur de recherche
D’ORDINATEURS. devient incontournable tout comme les autres membres des GAFA.
3
1A. HISTORIQUE
LE HTML
Créé en 1991 lors de la création du World Wide Web (en même temps Il ne cesse de progresser depuis sa création, sous l’impulsion
que le protocole HTTP, l’hyperlien et les adresses web) le html n’est pas un du consortium W3C (world Wide Web Consortium) et du
langage de programmation mais un langage de balisage permettant de WHATWG (Web Hypertext Application Technology Working
présenter des documents web. Group) qui veillent à faire évoluer les standards :
/ 1995-1996 : HTML 2
Son sigle signifie “HyperText Markup Language” en anglais, littéralement
/ 1997: HTML 3.2 et HTML 4.0
“langage de marquage hypertexte”. Le balisage HTML est incorporé dans
/ 2000-2006 : xHTML
le texte du document et est interprété par un navigateur Web.
/ Depuis 2007 : HTML 5
La première page web est toujours en ligne : Chacune des ces versions a été l’occasion d’intégrer de
4
1A. HISTORIQUE
LE HTML
Comme tout langage, le HTML repose sur une syntaxe précise et sur des éléments possédants des attributs spécifiques.
Le but du cours n’est pas de connaître tous ces éléments (la liste est très longue et je vous invite à jeter un coup d’oeil à un recueil dédié à l’ensemble des
balises HTML) mais de comprendre la logique du langage et de savoir manipuler ses éléments de base indispensables.
5
1B. ÉLÉMENTS, ATTRIBUTS ET BOÎTES EN HTML
Un élément HTML peut être soit constitué d’une paire de balises et d’un contenu, soit (plus rarement) d’une balise unique qu’on dit alors orpheline.
/ L’ÉLÉMÉNT P / L’ÉLÉMÉNT BR
L’élément p ci-dessous est constitué d’une balise ouvrante, d’un balise L’élément br ci-dessous (servant à créer un retour à la ligne) n’est lui
fermante (notez la présence du slash), et d’un contenu (textuel) entre constitué que d’une balise orpheline.
les balises.
ÉLÉMÉNT P ÉLÉMÉNT BR
6
1B. ÉLÉMENTS, ATTRIBUTS ET BOÎTES EN HTML
La balise ouvrante d’un élément HTML peut contenir des attributs, qui sont parfois même obligatoires.Les attributs vont venir compléter les éléments en
les définissant plus précisément ou en leur apportant des informations supplémentaires. Un attribut contient toujours une valeur, qu’on peut cependant
parfois omettre dans le cas des attributs ne possédant qu’une seule valeur (la valeur est considérée comme évidente).
d’autres sites ou d’autres pages, va avoir besoin d’un attribut href lui demander deux attributs : src (source) et alt (texte alternatif d’une
Notez que cet élément n’est constitué que d’une seule balise orpheline,
tout comme l’élément br.
7
1B. ÉLÉMENTS, ATTRIBUTS ET BOÎTES EN HTML
LE HTML
Toutes les balises HTML que nous allons voir répondront à ce schéma : une balise + des attributs qui lui sont propre
<nav> <section>
<em>
<ul> <audio>
<div>
<h1> <form>
<table>
8
1B. ÉLÉMENTS, ATTRIBUTS ET BOÎTES EN HTML
Vous devez absolument comprendre le modèle des boîtes pour ensuite 2 Ensuite, autour du contenu, la deuxième boîte contient en plus la
marge intérieure de l’élément qu’on appelle en CSS le “padding”.
pouvoir positionner les différents éléments de votre page où vous le
souhaitez et créer de belles pages web. Le modèle des boîtes nous dit que 3 La troisième boîte va contenir en plus la bordure de l’élément.
4 3 2 1 Contenu
Grâce au modèle des boîtes, nous allons comprendre comment définir des
l’élément. Nous allons également pouvoir positionner les éléments les uns
9
1C. NOTRE ESPACE DE TRAVAIL ET NOS OUTILS
ORGANISONS-NOUS !
Avant de nous lancer dans le développement, préparons le terrain en nous organisant physiquement :
Créons un dossier “monsite”, sur le bureau par exemple, dans lequel nous allons créer l’arborescence suivante :
/ Mon site
10
1C. NOTRE ESPACE DE TRAVAIL ET NOS OUTILS
L’éditeur de texte
Le HTML étant avant tout un texte qui sera interprété par le navigateur, nous avons besoin d’un éditeur de texte. On pourrait très bien se débrouiller avec le
bloc-note de Windows ou un équivalent mais nous allons nous faciliter la tâche avec un éditeur spécialisé.
Je vous propose d’utiliser Visual Studio Code (mais Brackets ou un autre éditeur de ce genre pourrait très bien faire l’affaire).
Un navigateur
Les navigateurs actuels tels que Chrome, Firefox, Safari, Edge, etc. savent tous interpréter le HTML 5 avec plus ou moins quelques petites différences.
Je vous propose de travailler avec Chrome que nous allons enrichir avec une extension qui nous sera utile : Colorzilla
N’oubliez pas d’utiliser le mode de conception adaptative pour tester le mode responsive de votre site et voir l’aspect qu’il aura sur une tablette ou un
smartphone. Pour cela, cliquez sur le menu hamburger et choisissez “Développement web” puis “vue adaptative”
11
1C. NOTRE ESPACE DE TRAVAIL ET NOS OUTILS
L’accessibilité
L’accessibilité est la mise à disposition de vos sites web au plus grand nombre. On pense souvent que cela s’adresse aux personnes ayant un handicap,
mais cela concerne également d’autres groupes comme ceux utilisant des appareils mobiles ou ceux qui ont des connexions internet de faible débit.
On peut aussi dire que l’accessibilité c’est traiter tout le monde de la même manière, et donner les mêmes opportunités à tous, peu importe leurs
handicaps ou les circonstances. De la même manière qu’il est injuste d’empêcher une personne d’accéder à un bâtiment parce qu’elle est en fauteuil rou-
lant (les lieux publics sont souvent équipés de rampes d’accès ou d’ascenseur de nos jours), il est également injuste d’empêcher une personne d’accéder à
un site web parce qu’elle a des troubles de la vue, ou qu’elle utilise un téléphone portable.
Rendre son site accessible est la bonne chose à faire, mais c’est aussi demandé par la loi de certains pays, et cela peut vous ouvrir des marchés conséquents
pour qui vos services et vos produits ne seraient sinon pas accessibles.
/ Le HTML sémantique (qui rend votre site plus accessible grâce à des balises comme header, nav, article, aside, footer) rend également votre site plus
optimisé pour les moteurs de recherche, ce qui améliore le référencement de votre site.
/ Se préoccuper de l’accessibilité c’est faire preuve d’éthique et de morale, ce qui améliore votre image publique.
/ Des bonnes pratiques améliorent l’accessibilité rendent également votre site plus facilement utilisable par différents groupes comme les utilisateurs
de téléphones portables, les personnes ayant un faible débit, etc. Le responsive design et l’optimisation de ses images prennent tout leur sens.
12
1C. NOTRE ESPACE DE TRAVAIL ET NOS OUTILS
L’indentation
Indenter correspond à créer des retraits en début de ligne de façon cohérente et logique.
Indenter va nous permettre d’avoir un code plus propre et plus lisible, donc plus compréhensible. Indenter permet également de plus facilement
détecter les erreurs potentielles dans un code.
Le but de l’indentation est de nous permettre de discerner plus facilement les différents éléments ou parties de code.
Regardez plutôt les deux exemples suivants.
13
1C. NOTRE ESPACE DE TRAVAIL ET NOS OUTILS
Les commentaires
Les lignes de commentaires vont être des lignes de texte que l’on va écrire au milieu de notre code, afin de donner des indications sur ce que fait le
code en question. Ces commentaires seront invisibles pour vos visiteurs (sauf s’ils affichent le code source des pages), ils ne servent qu’aux développeurs
créant ou lisant le code.
/ Dans le cas d’un gros / long projet, afin de bien se rappeler soi même pourquoi nous avons écrit tel ou tel code, ou encore pour se repérer
dans le code ;
/ Si l’on souhaite distribuer son code, ou si l’on travaille à plusieurs, cela fait beaucoup plus professionnel et permet aux autres développeurs
de comprendre beaucoup plus rapidement et facilement le code distribué.
Les commentaires peuvent être mono-ligne ou multi-lignes. Pour écrire un commentaire en HTML, nous allons nous y prendre de la façon suivante :
14
1C. NOTRE ESPACE DE TRAVAIL ET NOS OUTILS
Vous devez toujours vous efforcer d’écrire un code valide. Cela évitera des bugs potentiels et votre site sera au final mieux référencé sur les moteurs de re-
cherche.
Pour vérifier la validité d’un code HTML ou CSS, le W3C (World Wide Web Consortium), c’est-à-dire l’organisme qui gère l’évolution des langages comme le
HTML et le CSS entre autres, a mis à disposition des validateurs de code, gratuits.
Vous pouvez trouver les validateurs HTML et CSS aux adresses suivantes : pour le HTML et pour le CSS.
15
1D. STRUCTURE D’UNE PAGE WEB
STRUCTURE
En simplifiant au maximum la structure d’une page web, deux éléments apparaissent : le head et le body
/ LE HEAD
Le HEAD ne contient pas d’informations destinées à l’internaute, mais
HEAD
des méta informations destinées aux navigateurs et aux outils de re-
cherche.
/ LE BODY
Le BODY contient quant à lui toutes les informations présentées aux
internautes ( images, contenu multimédia, texte …).
BODY
16
1D. STRUCTURE D’UNE PAGE WEB
Quelle est la première balise HTML à insérer ? <HTML> bien sûr ! <HTML lang=“fr”>
17
1D. STRUCTURE D’UNE PAGE WEB
Balise déclarant le titre de la page. Les règles de l’art nous imposent une
<title>Mon titre de page</title>
balise title propre à chacune des pages.
</head>
</HTML>
18
1D. STRUCTURE D’UNE PAGE WEB
<body>
N’oubliez pas !
</body>
Une page d’accueil se nomme toujours index.html ou index.php.
</HTML>
19
1D. STRUCTURE D’UNE PAGE WEB
ON RÉCAPITULE...
20
1D. STRUCTURE D’UNE PAGE WEB
LE RÉSULTAT
Notre première page est terminée, elle fonctionne mais elle est un peu vide…
Pour terminer cette première partie, je vous invite à répondre a ce petit Quizz !
21
HTML 5
22
1E. LE HTML 5
HTML5 est une combinaison de nouvelles balises HTML, de propriété CSS3, de JavaScript mais structurellement séparées de la spécification HTML5.
/ Le Doctype en HTML 5 :
<!DOCTYPE html>
Une prise en compte native des formats multimédia (vidéos, sons …).
23
1E. LE HTML 5
Le HTML5 a été créé pour répondre à un besoin d’unification de ce qui peut aujourd’hui être utilisé pour réaliser des sites Web, à savoir le HTML, les feuilles
de style (CSS) pour la partie graphique, et le JavaScript pour l’interactivité.
Il doit également répondre à un besoin de simplification de ce qui peut aujourd’hui exister, en minimisant à la fois l’utilisation de plugins externes dépas-
sés (comme Flash) et l’écriture de scripts dédiés à l’interactivité (en les remplaçant par des balises qui font déjà ce travail).
Le langage répond également à un besoin d’être multiplateformes, ce qui permet d’amener plus facilement le monde du Web sur les plateformes mobiles
par exemple (sites responsive).
Pour toutes ces raisons, le W3C recommande dès à présent aux développeurs Web d’utiliser HTML 5.
24
1E. LE HTML 5
Le HEAD contient toujours les méta informations destinées aux navigateurs et aux
HEAD
outils de recherche.
Le header est l’entête de la page, on y retrouve des éléments tels qu’un logo, une ban-
<header>
nière, une accroche, etc.
<nav> La «nav », est le menu de votre site (par ex : accueil, mon cv, mon book, etc.)
<section>
<aside> Aside : section dont le contenu est complémentaire à un article (par ex. : les dernières
<article>
news relatives à un sujet cité)
Le pied de page contient habituellement des informations sur l’auteur, les données
<footer> relatives au droit d’auteur (copyright) ou les liens vers d’autres documents en relation.
25
LES INDISPENSABLES
AVANT DE COMMENCER
26
1E. LE HTML 5 - LE LIEN HYPERTEXTE
LE LIEN HYPERTEXTE
Avant d’aller plus loin dans la création de notre page, il nous faut comprendre ce qu’est un lien hypertexte.
Un lien hypertexte relie un mot, une expression ou une image d’un document à une autre partie d’un document ou à un autre fichier.
Un clic sur un lien hypertexte permet d’accéder à tout fichier qu’il soit sur un serveur distant ou en local.
Comment se « code un lien » ? à l’aide de la balise <a /> et de son attribut “href”
/ L’attribut target=“_blank“ permet d’ouvrir le lien dans une nouvelle fenêtre ou onglet.
/ L’attribut target=“_parent“ ouvre la page cible à la place de la page en cours.
27
1E. LE HTML 5 - LES IMAGES
LES IMAGES
C’est une balise de type orpheline (comme <br />). Cela veut dire qu’on n’a pas besoin de l’écrire en deux exemplaires comme la plupart des autres balises.
La balise doit être accompagnée de deux attributs obligatoires :
/ src : cela signigie “source“ indique où se trouve l’image que l’on veut insérer. Il s’agit soit d’un chemin absolu (ex. : http://www.site.com/fleur.png),
soit d’un chemin relatif (ce qu’on fait le plus souvent).
Ainsi, si votre image est dans un sous-dossier img, vous devrez taper : src=“img/fleur.png“.
/ alt : cela signifie “texte alternatif“. On doit toujours indiquer un texte alternatif à l’image, c’est-à-dire un court texte qui décrit ce que contient
l’image. Ce texte sera affiché à la place de l’image si celle-ci ne peut pas être téléchargée (cela arrive), ou dans les navigateurs en mode texte desti-
nés aux mal voyants qui ne peuvent malheureusement pas “voir“ l’image.
Cela aide aussi les robots des moteurs de recherche pour les recherches d’images.
Pour la fleur, on mettrait par exemple : alt=“Une fleur“.
Quand votre image est un élément essentiel du contenu de votre page, elle doit toujours être insérer dans une balise <figure></figure> dans laquelle vous
pouvez, si vous le souhaitez, ajouter une légende à l’aide de la balise <figcaption></figcaption>
28
1E. LE HTML 5 - LES IMAGES
Insérer un titre
La balise <img /> peut également contenir une balise “title” qui est facultative :
L’attribut permet d’afficher une bulle d’aide qui apparait au survol de la photo avec la souris.
Attention au poids de vos images qui risquent de rendre votre page longue à charger.
Pensez à les optimiser en amont : passage en 72 ppp (résolution des écrans) et taille raisonnable.
29
1E. LE HTML 5 - LA BALISE VIEWPORT
LA BALISE VIEWPORT
Avoir un site responsive est aujourd’hui indispensable (le contraire sera prochainement pénalisé par Google !), commençons donc par ajouter une nouvelle
balise indispensable qui doit être placer dans le HEAD :
Par cette balise l’affichage s’adaptera à la largeur de l’écran, que ce soit un ordinateur, une tablette ou un smartphone.
Cela nous permettra un peu plus tard de prévoir un affichage différent selon la largeur de l’écran sur lequel le site est affiché.
On reparlera de cette balise dans notre approche du responsive design dans les CSS.
30
1E. LE HTML 5 - LA BALISE DIV
LA BALISE DIV
Il peut être utilisé afin de grouper d’autres éléments pour leur appliquer
un style (en utilisant les attributs class ou id) ou parce qu’ils partagent des
attributs aux valeurs communes, tel que lang. Il doit uniquement être utili-
sé lorsqu’aucun autre élément sémantique (par exemple <article> ou <nav>)
n’est approprié.
Vous noterez que les codes “<” et “>” servent à insérer les caractères
“<“ et “>” qui seraient interprétés comme du code s’ils étaient tapés
directement.
31
1E. LE HTML 5 - LA BALISE SPAN
LA BALISE SPAN
Cet élément va s’avérer pratique dans certains cas où nous aimerions mettre
en forme une portion de texte à l’intérieur d’un élément sans pouvoir la
cibler de façon simple.
Il nous sera également très utile au moment d’appliquer des styles en CSS.
Notez dès maintenant que l’on peut identifier des éléments en leur donnant
un id (comme ici) ou une class (voir dia précédente). Nous en reparlerons
plus tard dans les CSS où nous verrons que leur utilisation est indispensable.
32
1E. LE HTML 5 - LES LISTES
LES LISTES
Les listes HTML vont nous permettre d’ordonner du contenu en l’affichant sous forme… de liste.
Les listes vont être très utiles pour apporter de la clarté et de l’ordre à nos documents, ainsi que pour créer des menus de navigation.
Il existe également un troisième type de liste un peu particulier et moins utilisé : les listes de définitions (utilisation de la balise <dl>).
33
1E. LE HTML 5 - LES LISTES NON ORDONNÉES
Les listes non-ordonnées vont être utiles pour lister des éléments sans
hiérarchie ni ordre logique.
Par exemple, si je souhaite lister les mots “pomme“, “vélo“ et “guitare“, sans
plus de contexte, j’utiliserai une liste non-ordonnée.
Pour créer une liste non-ordonnée, nous allons avoir besoin d’un
élément ul (pour “unordered list“, ou “liste non-ordonnée“ en français) qui va
représenter la liste en soi ainsi que d’éléments li (“list items“ = “éléments de
liste“) représentant chaque élément de la liste.
C’est ce type de liste qui va nous permettre de créer facilement des menus.
34
1E. LE HTML 5 - LES LISTES ORDONNÉES
Nous allons utiliser les listes ordonnées lorsqu’il y aura une notion d’ordre
ou de progression logique entre les éléments de notre liste.
Pour créer une liste ordonnée, nous allons cette fois-ci utiliser l’élément ol
(pour “ordered list” ou “liste ordonnée”) pour définir la liste en soi et à nouveau
des éléments li pour les différents éléments de la liste.
/ “1” : valeur par défaut. Ajoute des chiffres devant chaque élément de la liste ;
/ “I” : Ajoute des chiffres romains majuscules devant chaque élément de la liste ;
/ “i” : Ajoute des chiffres romains minuscules devant chaque élément de la liste ;
/ “A” : Ajoute des lettres majuscules devant chaque élément de la liste ;
/ “a” : Ajoute des lettres minuscules devant chaque élément de la liste ;
Notez l’importance de l’indentation pour éviter d’être perdu dans les éléments
de liste !
35
1E. LE HTML 5 - LES LISTES DE DÉFINITIONS
Pour créer une liste de définitions, nous allons cette fois-ci utiliser l’élément dl
signifiant «description list» ou «liste de description / définition» en français pour
définir la liste en soi, puis des éléments dt (description term) pour chaque
élément à décrire et enfin l’élément dd pour la définition / description en soi.
Pensez bien lorsque vous créez une liste de définitions à toujours placer le
terme à définir avant sa définition, c’est-à-dire l’élément dt avant l’élément dd.
Cela est normalement assez intuitif.
36
1E. LE HTML 5 - AU TRAVAIL !
AU TRAVAIL !
Pour mettre en pratique ce que nous voyons, je vous propose de travailler sur un cas concret qui va nous servir tout au long de la semaine.
Il s’agit de « BIGBURG », un food truck spécialisé dans la street food, pour qui nous allons construire un petit site.
Commençons donc par l’ébauche de la page d’accueil qui devra présenter un logo (que vous récupérez dans le dossier « boîte à outils » de notre répertoire
partagé et devrez placer dans votre répertoire “img”), un titre et un menu de navigation comprenant les éléments suivants :
/ Burgers
/ Produits
/ Services
/ Contact
37
1E. LE HTML 5 - BIGBURG
BIGBURG
<!DOCTYPE html>
Insérons tous les éléments que nous avons vus jusqu’à présent pour le <HTML lang=”fr”>
<head>. <head>
<meta charset=”utf-8”>
En ayant toujours à l’esprit mon futur référencement, je n’oublie pas <meta name=”viewport” content=”width=device-width, initial-scale=1” />
d’indiquer un titre pour ma page ainsi qu’une meta description explicite <title>BIGBURG - Le meilleur de la street food</title>
(elle sera reprise par les moteurs de recherche !). <meta name=”Description” content=”BIGBURG, le meilleur de la
street food, vous propose sa gamme de burgers.”>
Créons un <header> et insérons le logo du food truck que l’on a </head>
récupéré. <body>
<header>
N’oublions pas d’ajouter un titre ! <img src=”img/logo.png” alt=”logo BIGBURG”>
<p>Le food truck spécialisé dans les burgers</p>
Pour la navigation, <nav>, nous allons utiliser des liens dans une liste à </header>
puces : <nav>
/ la balise <ul></ul> ouvre et ferme la liste <ul>
/ les balises <li></li> représentent chacun des éléments de la liste. <li><a href=”#”>Nos burgers</a></li>
<li><a href=”#”>Nos produits</a></li>
Pour l’instant, nous avons insérer le caractère # à la place du lien pour <li><a href=”#”>Équipe</a></li>
indiquer qu’un lien est présent mais ne pointe vers rien <li><a href=”#”>Nous trouver</a></li>
<li><a href=”#”>Contact</a></li>
</ul>
</nav>
</body>
</HTML>
38
1E. LE HTML 5 - FOOD & COOK
39
1E. LE HTML 5 - INSERTION DE CONTENU MULTIMÉDIA
Comme je vous l’ai dit, l’un des principaux intérêts du HTML 5 est la prise en compte native des formats multimédia. Donc profitons-en pour ajouter du son
et de la vidéo sans avoir besoin de passer par l’ajout d’un plug-in qui peut-être source de problème (Flash en est un bon exemple !).
Les balises à utiliser sont les suivantes : <audio controls> et <video controls>
<audio controls>
<source src=“emplacement/fichier” type=“audio/type d’extension”>
</audio>
Les types d’extensions recommandés sont “mp3”, “mp4” ou “ogg”. En indiquant plusieurs sources avec des extensions différentes, on permet au navigateur
de sélectionner le fichier qui lui convient.
<video controls>
<source src=“emplacement/fichier” type=“video/type d’extension”>
</video>
Le type d’extension peut être “mp4” ou “mpg”. Là aussi, plusieurs sources peuvent être renseignées pour permettre au navigateur de choisir le fichier qu’il
saura lire.
40
1E. LE HTML 5 - INSERTION DE CONTENU MULTIMÉDIA
La balise <video> contient également quelques attributs qui peuvent vous intéresser :
/ autoplay : qui indique que la vidéo doit automatiquement être lancée dès qu’elle peut être jouée sans être arrêtée par le chargement des données.
/ height et width : qui indiquent la hauteur et/ou la largeur de la zone où afficher la vidéo, exprimée en pixels.
/ loop : qui, lorsqu’il est présent, indique que la vidéo doit être jouée en boucle.
/ poster : qui indique une URL qui contient une vignette à afficher tant que la vidéo n’est pas lancée par l’utilisateur. Si cet attribut n’est pas utilisé, rien n’est
affiché jusqu’à ce que la première image de la vidéo soit disponible, ensuite, c’est cette image qui est affichée comme vignette sur la vidéo.
/ preload : cet attribut à valeur contrainte est une indication destinée au navigateur sur la meilleure façon de charger la vidéo (selon l’auteur de la page). Il
peut prendre l’une des valeurs suivantes :
41
1E. LE HTML 5 - MISE EN FORME DU TEXTE
Comme avec un traitement de texte traditionnel, le HTML permet de mettre en forme les caractères au sein de nos paragraphes insérés
grâce à la balise <p></p> :
42
1E. LE HTML 5 - MISE EN FORME DU TEXTE
Les éléments <h1> à <h6> représentent six niveaux de titres dans un document, <h1> est le plus important et <h6> est le moins important.
Un élément de titre décrit brièvement le sujet de la section qu’il introduit.
A noter :
/ L’information d’un titre peut être utilisée, par exemple, pour construire automatiquement une table des matières d’un document.
/ Les niveaux inférieurs ne doivent pas être utilisé afin de réduire la taille de la police d’un titre (il faut pour cela utiliser la propriété CSS font-size à la place
comme nous le verrons plus tard).
/ On évitera de sauter des niveaux de titre : on commence toujours par <h1> puis <h2> et ainsi de suite. Pour être logique et dans un souci de cohérence (en
particulier avec les moteurs de recherche), il ne doit y avoir qu’un seul titre de niveau 1 sur une page.
Syntaxe :
43
1E. LE HTML 5 - A VOUS DE JOUER !
A VOUS DE JOUER !
Pour le contenu multimédia, je vous invite à télécharger un fichier sonore sous 2 formats mp3 et ogg sur http://lasonotheque.org ou utiliser ceux présent
dans la boîte à outils et à les placer ces fichiers dans le dossier /son.
Je vous invite également à télécharger un fichier vidéo sur : http://www.mazwai.com (prenez un extrait d’environ 30 s) ou récupérer la video de la boîte à
outils et placez la dans le dossier /video.
Placez les balises dans le code html et voyez comment le navigateur les interprète.
Ajoutez un titre h2 intitulé «Minuteur» pour le son et un titre h2 intitulé «Recette du jour» pour la vidéo.
44
1E. LE HTML 5 - ÉLÉMENTS BLOCK ET INLINE
/ Les blocks qui se placent verticalement à la suite les uns des autres en occupant (par défaut) toute la largeur de la page
par un retour à la ligne automatique.
/ Les éléments de types inline, qui eux, se placent horizontalement à la suite les uns des autres.
A noter qu’un élément de type inline est toujours inclus dans un élément de type block.
BLOCKS INLINE
header <a>
footer <em>
<p> <strong>
<hn> <img>
45
1E. LE HTML 5 - LES TABLEAUX
LES TABLEAUX
La création des tableaux en HTML est ancienne et à, avant les évolutions de HTML 5, été détourné de sa fonction principale pour créer des mises en pages
élaborées. Si ces détournements n’ont plus lieu d’être, il est parfois utile de présenter des informations sous la forme de tableaux pour plus de clarté.
/ <td></td> : cellules
Le tableau a le mérite d’exister, mais il manque un peu de mise en forme. Heureusement, les CSS nous permettront d’arranger cela !
46
1E. LE HTML 5 - CAS PRATIQUE
CAS PRATIQUE
Ajoutez un titre h2 intitulé «Produits» suivi de 2 ou paragraphes (avec la balise <p>) pour donner un peu de «matière» à notre site.
Récupérez du faux texte sur le site http://www.faux-texte.com/ ou un texte d’un concurrent.
Créez un tableau de 3 colonnes et 4 lignes avec une ligne d’en-tête (intitulés : emplacement, jour, horaires) dans notre projet BIGBURG.
47
1E. LE HTML 5 - LES FORMULAIRES
LES FORMULAIRES
Les formulaires HTML sont un des vecteurs principaux d’interaction entre un utilisateur et un site web ou une application. Ils lui permettent d’envoyer
des données au site web. La plupart du temps, ces données sont envoyées à des serveurs web mais la page peut aussi les intercepter et les utiliser elle-
même.
Un formulaire HTML est composé d’un ou plusieurs items. Ceux-ci peuvent être des zones de texte (sur une seule ligne ou plusieurs lignes), des boîtes de
sélection, des boutons, des cases à cocher ou des boutons radio. La plupart du temps, ces items sont associés à un libellé qui décrit leur rôle.
/ <form></form> : sert à déclarer le formulaire. C’est entre ces balises que le formulaire est codé.
- action : c’est l’adresse de la page ou le programme qui va gérer le formulaire et qui enverra un message de confirmation à l’internaute
ou stockera le formulaire dans une base de données.
- method : est le procédé utilisé pour transmettre les données du formulaire => GET ou POST
/ <button></button> : il s’agit d’un bouton qui peut valider l’envoi (submit) ou remettre le formulaire à 0 (reset)
48
1E. LE HTML 5 - LES FORMULAIRES
LES FORMULAIRES
1 2
Déclarons notre formulaire, indiquons vers quelle page les données
seront envoyées 1 et avec quelle méthode. 2
3
4
Nous avons aussi besoin de donner un nom à nos données dans la
balise <input>. Ces noms sont importants pour deux raisons. Du côté du
navigateur, cela sert à déclarer quelles données doivent être envoyées.
5
Du côté du serveur, chaque information doit avoir un nom pour être
manipulée correctement. 4
à l’intérieur du champs. 5
Email :
Message :
Notez bien que la balise <input> est orpheline au contraire de la balise
<textarea></textarea>
49
1E. LE HTML 5 - LES FORMULAIRES
LES FORMULAIRES
Avec la méthode GET, les données du formulaire sont transmises directement dans l’url, ainsi n’importe qui pourrait récupérer des informations sensibles.
L’internaute peut aussi à tout moment modifier directement les données dans l’url et retransmettre le formulaire => Attention à votre base de données !!
De plus, la méthode GET est limitée par la longueur maximum d’une URL (en théorie une chaîne de 255 caractères maximum).
Vous aurez donc compris que nous utiliserons plutôt la méthode POST dans nos formulaires pour plusieurs raisons : elle est indispensable pour des codes
non ASCII, des données de taille importante, et elle est recommandée pour modifier les données sur le serveur, et pour les données sensibles (comme ex-
pliqué par le W3C).
50
1E. LE HTML 5 - LE FOOTER
LE FOOTER
Comme dans le <header>, nous allons créer un menu sous forme de liste à
puces.
51
1E. LE HTML 5
/ un tableau,
/ un formulaire,
/ un footer,
52
1E. LE HTML 5
RÉCAPITULATIF
/ Si je ne déclare pas d’encodage précis avec <meta charset=“utf-8”>, je vais au devant de problème avec les caractères accentués !
/ Mes pages sont toujours composées d’un Head et d’un Body qui est lui même composé d’un Header, d’une Nav, d’un contenu regroupé en Sections ou
Articles (avec éventuellement un Aside) et d’un Footer.
/ Mon contenu textuel est hiérarchisé grâce à des balises comme les <hn> et <em> ou <strong>.
/ Les listes non ordonnées me permettent de créer facilement un menu dans ma page.
/ Je peux facilement ajouté du son et des vidéos grâce aux balises <audio controls> et <video controls>.
/ Je dois toujours prendre garde à préserver l’accessibilité de mon site : il doit être responsive, mes images doivent être adaptées (poids) et posséder des
balises Alt, mon contenu doit être pertinent et présenté de manière logique.
53
CSS
54
2A. LES CSS - DÉFINITION
Les CSS (“Cascading Style Sheets” en anglais) ou feuilles de style en cascade forment un langage informatique de qui décrit la présentation des
documents HTML et XML. Alors que la structure d’un document est écrite dans un fichier HTML, toute la présentation est déportée dans une feuille de
style CSS séparée. Les styles sont donc appliqués au dernier moment, dans le navigateur web des visiteurs. Cette séparation fournit un certain nombre de
bénéfices, permettant d’améliorer l’accessibilité, de changer plus facilement de présentation, et de réduire la complexité de l’architecture d’un document.
/ La structure du document et la présentation peuvent être gérées dans des fichiers séparés ;
/ La conception d’un document se fait dans un premier temps sans se soucier de la présentation, ce qui permet d’être plus efficace ;
/ Dans le cas d’un site web, la présentation est uniformisée : les documents (pages HTML) font référence aux mêmes feuilles de styles.
Cette caractéristique permet de plus une remise en forme rapide de l’aspect visuel ;
/ Un même document peut donner le choix entre plusieurs feuilles de style, par exemple une pour l’impression et une pour la lecture à l’écran.
Certains navigateurs web permettent au visiteur de choisir un style parmi plusieurs ;
/ Le code HTML est considérablement réduit en taille et en complexité, puisqu’il ne contient plus de balises ni d’attributs de présentation.
55
2A. LES CSS - STRUCTURE
56
2A. LES CSS - STRUCTURE
57
2B. LES CSS - IMPLÉMENTER LES CSS
✗ ✓
Ce n’est clairement pas la chose à faire : C’est clairement l’option à privilégier :
/ Cela alourdit le code html, or nous avons vu que l’usage des css devait / Cela n’alourdit pas le code html.
alléger le code.
/ En cas de modification d’un style, elle sera répercutée sur toutes les
/ Il nous faudra copier-coller autant de fois le css dans le html que nous pages du site qui font appel à lui de façon automatique.
aurons de pages => les pages devront être modifiées une par une en
cas de mise à jour. Si je veux que mes h1 soient bleus,
je le précise dans le seul fichier CSS.
58
2B. LES CSS - MISE EN PLACE
Créons d’abord un fichier texte que nous appellerons “style.css” et que nous placerons dans le répertoire “monsite/css”.
Créons maintenant le lien entre notre fichier HTML et la feuille de style, vide pour l’instant, que nous venons de créer en ajoutant cette ligne dans le <head>
de “index.html” :
Il s’agit du chemin du lien href : notre feuille de style est dans le dossier css du sous-répertoire “src” de “monsite”, il faut donc écrire :
pour que notre fichier HTML puisse aller puiser dans le css
59
2B. LES CSS - MISE EN PLACE
Intéressons-nous maintenant au fichier “style.css” et commençons par déclarer l’encodage UTF-8 pour être conforme aux normes recommandées :
@charset “utf-8”;
Un peu de syntaxe…
En CSS, le “;” correspond au point de séparation des règles que nous allons créer.
La syntaxe est toujours :
60
2C. LES CSS - CLASS ET ID
/ un id s’applique à un objet unique : il ne peut pas y avoir deux mêmes id dans une page.
✓
<div class=”toto”></div>
<div class=”toto”></div>
/* L’élément unique id=”header”, par exemple <div id=”header”> */
#header {
Mais il n’est pas correct d’avoir ce code : background:red;
}
✗
<div id=”toto”></div>
<div id=”toto”></div> /* Tous les éléments de classe ”liens” : <ul class=”liens”> etc.. */
.liens {
color:blue;
En effet, l’id ne doit désigner qu’un seul objet du document. On peut
}
bien sûr définir autant d’id que l’on veut dans la feuille de style, mais il
faut qu’ils soient uniques dans la page html.
/* Tous les paragraphes de classe ”article” : <p class=”article”> */
p.article {
Pour la feuille de style CSS, les règles seront écrites avec la syntaxe
text-align:justify;
#nom_id pour les id et .nom_de_classe pour les class.
}
61
2C. LES CSS - CLASS ET ID
Par exemple : commencez à utiliser id systématiquement pour les objets unique pour faciliter la lecture du code. Donnez un id à votre body (pour ancre),
à votre bloc en-tête, votre bloc gauche, droit, la navigation...
En revanche pour les paragraphes ou listes de menu utilisez les classes lorsqu’il y aura plusieurs objets de ce type.
62
2C. LES CSS - CLASS ET ID
CLASS ET I.D.
Avantages et inconvénients
Quelle peut être l’utilité d’un id qui ne sert qu’une fois par rapport à la classe qui semble remplir les mêmes fonctions ?
Il y a plusieurs raisons à cela, en voici deux parmi d’autres :
/ L’id est pratique car il permet en JavaScript de désigner les éléments avec la fonction document.getElementById(), ce qui facilite la compatibilité
entre tous les navigateurs.
/ L’id peut servir d’ancre nommée, puisqu’il permet de remplacer (pour cette fonctionnalité) l’attribut name.
On pourra donc écrire un lien pour se rendre en haut de page comme ceci :
<body id=”top”>
<a href=”#top”>aller en haut</a>
63
2C. LES CSS - MISE EN PRATIQUE
MISE EN PRATIQUE
Commençons par quelque chose de simple :
Je souhaite que tous les paragraphes de texte de ma page soient en corps 15 et en rouge
sélecteur { 1 p{
règle-un: valeur; 2 font-size: 15px;
règle-deux: valeur; 3 color: red;
} }
1 En indiquant “p” comme sélecteur, j’indique que je souhaite modifier tous les éléments paragraphes.
64
2D. LES CSS - GESTION DES COULEURS
Pour élargir ce spectre, je dois insérer un code hexadécimal du type “#ffffff” comme valeur de couleur et j’ai besoin d’un “color picker” ou d’une
bibliothèque de références.
65
2E. LES CSS - MISE EN PAGE
Les alignements
/ TEXTE ALIGNÉ À GAUCHE / TEXTE CENTRÉ / TEXTE ALIGNÉ À DROITE / TEXTE JUSTIFIÉ
Dum apud Persas, ut supra Dum apud Persas, ut supra Dum apud Persas, ut supra Dum apud Persas, ut supra
narravimus, perfidia regis mo- narravimus, perfidia regis mo- narravimus, perfidia regis narravimus, perfidia regis
tus agitat insperatos. tus agitat insperatos. motus agitat insperatos. motus agitat insperatos.
Les filets
66
2E. LES CSS - MISE EN PAGE
Les espacements
D u m a p u d Pe r s a s Valeur par défaut pour la police Valeur manuelle (peut être négative)
67
2F. LES CSS - COULEUR ET IMAGE DE FOND
Couleur
Afin de mettre une couleur de fond sur notre page, nous utiliserons la body {
propriété “background-color“. background-color : #E80C7A;
}
Celle-ci peut servir à coloriser tout ou partie de notre page selon le sélecteur section { 1
choisi : background-color : RGB(200, 200, 000, 0.5);;
}
68
2F. LES CSS - COULEUR ET IMAGE DE FOND
Image
Pour mettre une image en fond sur notre page, nous utiliserons la propriété body {
“background-image“ background-image: url(“img/nom-image.jpg”);
}
En voici la syntaxe pour une image nommé “mon-image.jpg” placée dans le
dossier “/img” de notre répertoire principal :
Par défaut, si notre image est plus petite que l’écran, elle sera répétée horizontalement et verticalement.
Cette répétition peut être gérée avec la propriété “background-repeat” qui peut prendre les valeurs suivantes :
69
2F. LES CSS - COULEUR ET IMAGE DE FOND
Cette propriété peut prendre deux valeurs différentes : fixed (pour fixer le fond) et scroll (valeur par défaut).
Cette propriété va utiliser deux valeurs : la nouvelle largeur de votre image et sa nouvelle hauteur.
Vous pouvez indiquer des valeurs absolues ou relatives. En cas de valeurs relatives, faites bien attention : l’image de fond occupera un pourcentage de la
taille de l’élément auquel elle est appliquée, et non pas un pourcentage de sa taille originale. Dans ce cas là, il vaut mieux ne préciser qu’une valeur (la lar-
geur de l’image).
Avec la valeur “background-size:cover”, notre image va être agrandie proportionnellement pour recouvrir toute la largeur de l’écran
(attention aux effets de pixellisation !)
70
2F. LES CSS - COULEUR ET IMAGE DE FOND
La propriété “background-position” accepte toutes sortes de valeurs. Généralement, nous utiliserons soit deux mots clefs (comme “top right” par exemple,
pour placer l’image en haut à droite), soit deux valeurs en pixels pour régler l’écart de l’image par rapport au coin supérieur gauche de l’élément auquel
elle est appliquée.
71
2F. LES CSS - COULEUR ET IMAGE DE FOND
MISE EN PRATIQUE
En appliquant ce que nous venons de voir, je voudrais que vous mettiez en place les styles suivants sur page “index.html” :
72
2G. LES CSS - GESTION DES POLICES
Si nous voulons indiquer une police particulière, il faut utiliser la propriété “font-family” de la façon suivante :
Il faut bien penser à indiquer plusieurs polices différentes pour palier l’éventuelle absence d’une police sur la machine de l’internaute !
73
2G. LES CSS - GESTION DES POLICES
Deux solutions :
Propriété @font-face
74
2G. LES CSS - GESTION DES POLICES
/ .woff (Web Open Font Format) : nouveau format conçu pour le Web, qui fonctionne sur IE9 et tous les
autres navigateurs. Il existe d’autres formats, mais ils sont désormais ”obsolètes” pour le web (.ttf, .eot, .svg).
Vous allez récupérer également un fichier css dont vous n’aurez qu’à faire un copier-coller dans votre feuille
de style.
75
2G. LES CSS - GESTION DES POLICES
@font-face {
font-family: ‘robotoregular’;
src: url(‘Roboto-Regular-webfont.woff’) format(‘woff’);
font-weight: normal;
font-style: normal;
}
76
2G. LES CSS - GESTION DES POLICES
Dans la fenêtre de la police retenue, cliquez sur “Select this font” et dépliez la barre noir en bas à droite.
77
2G. LES CSS - GESTION DES POLICES
✓ ✗ ✓ ✗
Pas de limites dans On fait charger les polices On charge directement les Le nombre de polices est
le choix des polices. par le navigateur de l’inter- polices depuis les serveurs limité (~900) On dépend du
naute donc il y a risque de de Google-fonts bon vouloir de Google !
lenteur quand il y a trop de
polices.
78
2G. LES CSS - GESTION DES POLICES
MISE EN PRATIQUE
En appliquant ce que nous venons de voir, je voudrais que vous mettiez en place les styles suivants sur la page “index.html” du food truck :
79
2H. LES CSS - LES BORDURES
80
2H. LES CSS - LES BORDURES
N’oubliez pas que la lisibilité est un critère important pour votre site donc attention à ne pas abuser des bordures !
81
2H. LES CSS - LES OMBRAGES
La couleur de l’ombre peut être ajoutée après ces 3 valeurs ainsi que l’attribut “inset”
pour indiquer une ombre intérieure (ex: “box-shadow: 1 px 2px 3px blue inset;”).
A vous de tester !
82
2I. LES CSS - LES MARGES
LES MARGES
Marges intérieures et marges extérieures
En CSS, nous allons devoir distinguer deux types de marges : les marges intérieures (le padding) et les marges extérieures (le margin).
/ Les marges intérieures se trouvent entre le contenu de l’élément et sa bordure. Ainsi, définir une marge intérieure importante va éloigner la
bordure de l’élément de son contenu. Si on définit une couleur de fond pour notre élément, celle-ci s’applique également dans l’espace
correspondant aux marges intérieures.
/ Les marges extérieures, au contraire, vont définir l’espace autour d’un élément. Les marges extérieures se trouvent en dehors des bordures d’un
élément et servent généralement à éloigner un élément d’un autre. Comme les marges extérieures se trouvent «en dehors» d’un élément, celles-ci
ne sont pas affectées par la couleur de fond donnée à un élément.
Ces deux types de marges peuvent prendre des valeurs absolues, en px, ou des valeurs relatives, en %. Les marges extérieures accepte également une va-
leur “auto” qui est utile pour centrer horizontalement un élément par rapport à un élément parent.
83
2I. LES CSS - LES MARGES
LES MARGES
Marges extérieures (margin)
Comme pour l’alignement du texte à l’aide de l’attribut “text-align”, on peut jouer sur les marges des blocs à l’aide des attributs margin-left, margin-right,
margin-top et margin-bottom.
Ainsi, si je veux déplacer le bloc à l’ID “mon-bloc” à 20px de la marge de gauche, la syntaxe sera :
#mon-bloc {
margin-left: 20px;
}
Notation simplifiée
Pour éviter d’indiquer systématiquement les 4 valeurs différentes, nous pouvons tout simplement enchaîner les quatre valeurs à la suite. La première valeur
correspond à la marge haute 1 , la seconde à la marge droite 2 , la troisième à la marge basse 3 et la dernière à la marge gauche 4 .
#mon-bloc {
margin-left: 10px 20px 10px 20px;
} 1 2 3 4
84
2I. LES CSS - LES MARGES
LES MARGES
Marges extérieures (margin)
A votre avis, qu’est-ce que ces attributs peuvent nous permettre de faire ?
=> centrer notre site par exemple !
Si nous plaçons tout notre body dans une div à laquelle nous donnons l’id “global”, nous pouvons créer la règle suivante pour centrer tout notre site et lui
donner une largeur de 1024px :
#mon-bloc {
margin-left: auto;
margin-right: auto;
width: 1024px;
}
En indiquant “auto” pour les marges gauches et droites j’indique qu’elles deviennent flottantes : chacune d’elles est égale à
(largeur de l’écran - valeur de width)/2 dans notre cas, si l’écran fait 1024px, elles sont égales à 0.
85
2I. LES CSS - LES MARGES
LES MARGES
Marges intérieures (padding)
Comme pour les marges extérieurs, on peut jouer sur les marges intérieurs à l’aide des attributs
#mon-bloc {
padding-left, padding-right, padding-top et padding-bottom.
padding-right: 20px;
}
Ainsi, si je veux ajouter un padding à droite de 20px au bloc à l’ID “mon-bloc”, la syntaxe sera :
Notation simplifiée
Là aussi, nous pouvons utiliser une notation simplifiée dans laquelle la première valeur correspond
#mon-bloc {
au padding haut 1 , la seconde à celui de droite 2 , la troisième à celui du bas 3 et la dernière à
padding: 10px 20px 10px 20px;
celui de gauche 4 .
} 1 2 3 4
On peut également ne préciser que deux valeurs. Dans ce cas, la première correspond aux marges haute et basse et la seconde aux marges droite et
gauche.
86
2I. LES CSS - LES MARGES
/ Ajoutons une marge extérieure gauche de 15px aux paragraphes sur le concept.
87
2J. LES CSS - DISPLAY
DISPLAY
Par défaut, les éléments HTML vont s’afficher soit sous forme de «bloc», soit «en ligne». C’est la différence majeure entre les éléments de type block et inline.
La propriété display est une propriété CSS très puissante, puisqu’elle va nous permettre de maîtriser la façon dont un élément va être affiché, et ainsi de
gérer la mise en page de nos éléments.
La propriété display peut prendre différentes valeurs nous permettant de gérer précisément la façon dont chaque élément va être affiché.
/ display: inline
/ display: block
/ display: inline-block
/ display: none
88
2J. LES CSS - DISPLAY
DISPLAY
Display : inline
Lorsque l’on donne la valeur inline à la propriété display, l’élément ciblé va se comporter comme un élément de type inline et donc n’occuper que la largeur
qui lui est strictement nécessaire.
Par exemple, en appliquant un display:inline à des éléments HTML <p>, ceux-ci vont venir se coller les uns à côté des autres selon la place disponible.
Sans l’attribut “inline”, les paragraphes sont les uns à Avec l’attribut “inline”, les paragraphes se collent les
la suite des autres. uns à côté des autres.
89
2J. LES CSS - DISPLAY
DISPLAY
Display : block
En attribuant la valeur block à la propriété display, les éléments ciblés vont se comporter comme des éléments HTML de type block et ainsi prendre toute la
largeur disponible.
On peut par exemple appliquer un display:block à un élément HTML span (qui est par défaut de type inline) afin d’observer la modification du
comportement de celui-ci.
/ DISPLAY : BLOCK
Un premier paragraphe.
Un
autre
paragraphe.
Ici, nous avons appliqué une bordure à deux éléments HTML span afin de bien voir la modification du comportement. Ensuite, nous n’avons appliqué un
display:block qu’à notre deuxième élément <span>. Celui-ci se comporte alors comme un élément de type block et occupe toute la largeur disponible.
90
2J. LES CSS - DISPLAY
DISPLAY
Display : inline-block
En HTML, les éléments sont soit de type inline, soit de type block. La propriété display va nous permettre de créer des éléments d’un troisième type qui est
une combinaison des deux premiers grâce à sa valeur inline-block.
La valeur inline-block va nous permettre d’emprunter certaines propriétés des éléments de type block et certaines propriétés des éléments de type inline.
Ainsi, l’élément en soi va être de type inline tandis que ce qu’il contient («l’intérieur de la boîte») va être considéré comme étant de type block.
Cela va nous permettre entre autres d’afficher plusieurs éléments côte–à-côte tout en maîtrisant précisément la taille de chacun d’entre eux.
/ DISPLAY : INLINE-BLOCK
Ici, nous avons appliqué une bordure à deux éléments HTML <p> afin de bien voir la modification du comportement.
Ensuite, nous leur avons appliqué un display:inline-block et avons attribué une largeur de 55% pour le 1er et de 40% pour le second.
91
2J. LES CSS - DISPLAY
DISPLAY
Display : none
La valeur none va nous permettre tout simplement de ne pas afficher un élément. Cela peut se révéler très pratique dans de nombreux cas, notamment
lorsqu’on veut modifier l’affichage de nos pages selon l’appareil utilisé par nos visiteurs (ordinateur de bureau, téléphone portable, tablette, etc.).
/ DISPLAY : NONE
Un premier paragraphe.
92
2J. LES CSS - DISPLAY
94
2J. LES CSS - DISPLAY
95
2J. LES CSS - MENUS MISE EN PRATIQUE
Maintenant que vous avez vu comment passer d’une liste à puce à un menu, je voudrais que vous mettiez en forme le menu du site BIGBURG
selon la première version horizontale que nous venons de voir.
Pensez à utiliser les couleurs du logo et les couleurs complémentaires (merci colorzilla ou adobe color !) pour construire l’identité du site.
Exemple de couleur :
#0c4c7b #fbb731
#1e2f40 #f37335
96
2J. LES CSS - POSITION
POSITION
On va pouvoir gérer le positionnement de nos éléments HTML en CSS grâce à la propriété ”position”. Cette propriété est très puissante.
Grâce à position, nous allons pouvoir positionner nos différents éléments HTML de façon absolue ou relativement par rapport à d’autres éléments HTML ou
par rapport à leur place d’origine entre autres.
/ static
/ relative
/ fixed
/ absolute
Nous allons utiliser la propriété position conjointement aux propriétés top, right, bottom et left afin de positionner précisément nos éléments. Ces quatre
propriétés vont pouvoir prendre des valeurs en pixels qui vont indiquer un déplacement d’un élément par rapport à sa position initiale sur un certain bord.
97
2J. LES CSS - POSITION
POSITION
Position : static
La valeur static correspond au positionnement par défaut des éléments HTML dans une page.
Tout élément positionné de façon ”static” ne pourra pas être affecté par les propriétés top, right, bottom et left.
98
2J. LES CSS - POSITION
POSITION
Position : relative
Un élément positionné grâce à position:relative va être repositionné relativement par rapport à sa position par défaut.
Par exemple, si on positionne un élément HTML de façon relative et qu’on lui ajoute left:50px, l’élément sera déplacé de 50 pixels vers la droite par rapport à
sa position par défaut.
99
2J. LES CSS - POSITION
POSITION
Position : fixed
Un élément HTML possédant un positionnement ”fixed” va toujours rester à la même place, même si l’un de vos visiteurs descend (”scroll”) dans la page.
Cette valeur est très utile pour conserver un élément constamment visible, comme un menu ou un sommaire par exemple.
POSITION
Position : absolute
La valeur absolute de la propriété position va nous permettre de positionner un élément de façon relative par rapport à son parent le plus proche auquel on
a appliqué un positionnement spécifique (relative, fixed ou absolute).
Prenez garde, si l’élément possède des marges, elles sont ajoutées aux décalages.
/ LE HTML / LE CSS
Attention : si l’élément auquel on applique
LES PSEUDO-CLASSES
Une pseudo-classe est un mot-clé qui peut être ajouté à un sélecteur afin d’indiquer l’état spécifique dans lequel l’élément doit être pour être ciblé par
la déclaration.
La pseudo-classe :hover, par exemple, permettra d’appliquer une mise en forme spécifique lorsque l’utilisateur survole l’élément ciblé par le sélecteur
(changer la couleur d’un bouton par exemple).
#bouton:hover {
background-color: #F89B4D;
}
Les pseudo-classes permettent d’appliquer un style à un élément non seulement en fonction de son contenu mais aussi en fonction de facteurs externes
(l’historique de navigation par exemple avec :visited ; le statut du contenu avec :checked ; la position de la souris :hover).
/ :active (permet de cibler un élément lorsque celui-ci est activé par l’utilisateur).
/ :focus (permet de cibler un élément lorsque celui-ci reçoit le focus (soit il est sélectionné à l’aide du clavier, soit il est activé avec la souris comme
par exemple le champ d’un formulaire).
/ :hover (permet de spécifier l’apparence d’un élément au moment où l’utilisateur le survole avec le pointeur, sans nécessairement l’activer).
/ :visited (permet de modifier l’aspect d’un lien après que l’utilisateur l’a visité).
102
2K. LES CSS - LES PSEUDO-ÉLÉMENTS
LES PSEUDO-ÉLÉMENTS
Un pseudo-élément est un mot-clé ajouté à un sélecteur qui permet de mettre en forme certaines parties de l’élément ciblé par la règle.
Ainsi, le pseudo-élément ::first-line permettra de ne cibler que la première ligne d’un élément visé par le sélecteur.
p::first-line {
color: blue;
text-transform: uppercase;
}
À la différence des pseudo-éléments, les pseudo-classes peuvent être utilisées afin de mettre en forme un élément en fonction de son état.
Quelques pseudo-éléments :
/ ::first-letter sélectionne la première lettre de la première ligne d’un bloc, si elle n’est pas précédée par un quelconque autre contenu
(comme une image ou un tableau en ligne) sur sa ligne.
/ ::placeholder qui permet de mettre en forme le placeholder d’un input ou d’un textarea
103
2L. LES CSS - LES TRANSITIONS
LES TRANSITIONS
Les transitions vont nous permettre de modifier la valeur d’une propriété CSS de façon fluide, dans le temps, créant ainsi une transition entre les diffé-
rentes valeurs de notre propriété. On va par exemple pouvoir changer progressivement la couleur ou la taille d’un bloc.
Nous allons utiliser la propriété CSS transition pour créer des transitions en CSS qui regroupe en fait quatre propriétés :
Parmi ces quatre propriétés, seules les valeurs de transition-duration et transition-property vont être obligatoires à préciser pour utiliser la
propriété transition.
Ces deux valeurs vont donc correspondre à la durée de la transition en secondes (”s”) ainsi qu’au nom de la propriété CSS à laquelle on souhaite appliquer la
transition.
Afin qu’une transition démarre, il va également falloir que la propriété ciblée connaisse un changement de valeur. Nous allons souvent changer la valeur
d’une propriété lors d’un changement d’état de l’élément auquel elle est associée. Ainsi, nous utiliserons souvent les transitions avec les pseudo classes et
particulièrement avec :hover.
104
2L. LES CSS - LES TRANSITIONS
LES TRANSITIONS
Prenons un exemple concret : au passage de la souris sur mes paragraphes, je souhaite que le bloc qui les accueille change de taille et de couleur.
</html>
2 définit la durée de la transition.
LES TRANSITIONS
Parce que l’implémentation des transitions est relativement récente, nous avons dû utiliser les préfixes vendeurs afin de «forcer» la compatibilité de nos
propriétés pour les anciennes versions des navigateurs.
Notez également que Internet Explorer dans ses versions inférieures à 10 ne gère tout simplement pas du tout les transitions, que ce soit sans ou avec son
préfixe vendeur.
106
2L. LES CSS - LES TRANSITIONS
LES TRANSITIONS
Création d’une transition CSS en utilisant toutes les valeurs
.div-un {
1 La propriété transition-delay va spécifier le temps d’attente avant que la
width: 200px;
transition démarre. Cette propriété va donc prendre en valeur un nombre
height: 200px;
de secondes.
background-color: green;;
-webkit-transition: 2s width 2s ease, background-color 5s;
2 La propriété transition-timing-function va définir la courbe de vitesse de
-moz-transition: 2s width 2s ease, background-color 5s;
notre transition. On va pouvoir choisir parmi cinq valeurs simples :
-o-transition: 2s width 2s ease, background-color 5s;
transition: 2s width 2s ease, background-color 5s;
/ Ease : La transition commence lentement puis accélère au milieu pour
} 1 2
finir lentement
107
2L. LES CSS - LES ANIMATIONS
LES ANIMATIONS
Les animations en CSS vont nous permettre de changer le style d’un élément HTML. Contrairement aux transitions, on va pouvoir grâce aux animations
modifier le style d’un élément HTML sans changement d’état de celui-ci et autant de fois que voulu.
Les animations sont une fonctionnalité relativement récente du CSS. Ainsi, la compatibilité avec d’anciennes versions de navigateurs n’est pas parfaite et
nous allons devoir utiliser des préfixes vendeurs (à noter qu’Internet Explorer, dans ses versions antérieures à la version 10, ne supporte tout simplement
pas les animations).
Pour créer une animation en CSS, nous allons utiliser la propriété animation ainsi que la règle ”@keyframes”.
On appelle @keyframes une ”règle” en CSS, qui va nous permettre de modifier progressivement le style d’un élément.
La propriété CSS animation est en fait la notation short-hand des propriétés relatives aux animations suivantes :
Parmi toutes ces propriétés, seules les valeurs relatives aux deux premières doivent obligatoirement être précisées dans la propriété “animation”.
108
2L. LES CSS - LES ANIMATIONS
LES ANIMATIONS
.div {
width: 150px;
Créer une animation complète en CSS 1
height: 150px;
position: relative;
On va maintenant tenter de créer une animation plus complète pour notre div, avec les
background-color: green;;
différentes propriétés “animation-xx”.
animation-name: chgt-couleur;
animation-duration: 4s; 2
On va faire changer notre div de couleur plusieurs fois dans notre @keyframes en
animation-iteration-count: infinite;
précisant des valeurs en pourcentage et la faire bouger dans notre page en lui attribuant
nimation-direction: alternate;;
une position relative.
}
1 Ici, nous commençons par définir la taille, une couleur de fond par défaut et le
/* Syntaxe standard | -webkit- | moz- */
positionnement de notre div.
@keyframes chgt-couleur {
0% {background-color: green; top: 0px; left: 0px}
2 Ensuite, nous lui appliquons les propriétés animation-name, animation-duration,
25% {background-color: yellow; top: 0px; left: 300px}
animation-iteration-count et animation-direction.
50%{background-color: red; top: 300px; left: 300px} 3
75%{background-color: blue; top: 300px; left: 0px}
/ La propriété animation-iteration-count définit combien de fois notre animation va
100% {background-color: green; top: 0px; left: 0px}
être jouée. Elle prend en valeur soit un nombre, soit un mot clef comme “infinite”
}
(l’animation sera répétée indéfiniment).
/ La propriété animation-direction va définir le sens de l’animation. Notre animation peut aller en sens inverse (valeur reverse), en cycles alternatifs
(une fois à l’endroit, une fois à l’envers avec la valeur alternate) ou encore en cycles alternatifs inversés.
3 Finalement, nous utilisons notre @keyframes pour préciser la nature de notre transition et lui donner un effet fluide. Comme prévu, nous utilisons
des valeurs en pourcentage pour définir à quel moment dans l’animation doit commencer chaque nouvel effet et attribuons les pourcentages
souhaités à chaque effet d’animation. Dans le cas présent, nous changeons la couleur de fond du div à chaque fois ainsi que sa place relativement
à sa place de départ.
109
2M. LES CSS - LE RESPONSIVE DESIGN
LE RESPONSIVE DESIGN
Définition
Les mots “responsive design”, en anglais, peuvent être traduits en français par “design adaptable”.
Par extension, le “responsive design” désigne généralement l’ensemble des techniques nous permettant d’adapter nos pages web à toutes les tailles
d’écrans afin d’avoir un bon rendu.
La problématique du responsive design est apparue avec l’apparition des tablettes et des smartphones pouvant se connecter à Internet : en effet, com-
ment faire pour que mon site s’affiche aussi bien sur un petit écran de téléphone portable que sur un ordinateur de salon ?
/ 1. Créer un site dédié pour chaque terminal différent (un site mobile, un site pour ordinateur, etc.).
/ 2. Créer une application mobile en plus de notre site web (gérant l’environnement Androïd et iOS).
/ 3. Utiliser les outils offerts par le HTML et le CSS et créer une version “responsive” de notre site.
110
2M. LES CSS - LE RESPONSIVE DESIGN
LE RESPONSIVE DESIGN
Présentation du viewport
Quand nous avons commencé à créer des pages html, nous avons ajouté une balise
<meta name=“viewport“ content=“width=device-width, initial-scale=1“ />
Comme je vous l’avais dit, ce “viewport” correspond à la taille de la fenêtre web de vos visiteurs.
Une première méthode, très simple, pour commencer à optimiser son site web pour un affichage sur mobile ou tablette est d’utiliser et de manipuler le
viewport.
En HTML5, nous pouvons prendre “contrôle” de la taille de la fenêtre grâce à l’élément meta et aux attributs name et content.
On va demander à ce que nos pages web s’adaptent à la taille de la fenêtre de chacun de nos visiteurs, afin que notre contenu la remplisse.
Cela ne va évidemment pas toujours fournir un résultat parfait, mais ce sera déjà un bon début !
111
2M. LES CSS - LE RESPONSIVE DESIGN
LE RESPONSIVE DESIGN
Utilisation des valeurs en pourcentage en CSS
En plus de l’emploi de l’élément meta, nous pouvons utiliser des valeurs en pourcentages en CSS pour définir les tailles de certains éléments plutôt
que des valeurs en pixels.
Si votre code est bien pensé et bien construit, cela aura pour effet de redimensionner les différents éléments de vos pages en même temps que la fenêtre
va se rétrécir ou s’agrandir.
Lorsque vous utilisez cette méthode, pensez bien que les tailles exprimées sont un pourcentage de la taille de l’élément parent des éléments que vous
ciblez actuellement.
Ainsi, si vous définissez une largeur de 50% pour une div enfant direct du body, la taille de la div sera toujours égale à 50% de celle du body.
Si maintenant vous définissez à nouveau une largeur égale à 70% pour les paragraphes à l’intérieur de votre div, les paragraphes occuperont 70% de
la largeur de la div.
De même, si vous définissez une taille égale à 100% pour votre élément “img”, l’image occupera toujours toute la largeur de l’écran, quelque soit sa
résolution.
112
2M. LES CSS - LE RESPONSIVE DESIGN : LES MEDIA QUERIES
Les media queries correspondent à une technique introduite en CSS3 et qui va se servir de la règle ”@media”.
Grâce aux media queries, nous allons pouvoir appliquer différentes propriétés ou différentes valeurs à des éléments HTML selon la taille de l’écran et
le type de media utilisé (écran, imprimante, etc.) par vos visiteurs.
Cela va nous permettre par exemple de ne pas afficher certains éléments pour des tailles d’écran trop petites ou de réorganiser nos pages web grâce aux
propriétés CSS.
Nous allons obligatoirement devoir préciser une chose avec “@media” : le type de media pour lequel les déclarations CSS doivent s’appliquer.
Dans l’immense majorité des cas, nous utiliserons @media screen, afin d’appliquer nos propriétés à tous les médias dotés d’un écran tels que téléphone
portable, tablette, ordinateur de bureau, etc. (on peut également utiliser @media print, par exemple, afin de n’appliquer certaines règles que pour les im-
primantes ou encore @media speech, pour les ordinateurs spéciaux qui vont “lire à haute voix” une page).
Finalement, on peut également utiliser @media all pour appliquer des déclarations à tous les types de media.
Avec @media screen, nous préciserons également une taille ou un intervalle de tailles d’écran au sein duquel les propriétés vont s’appliquer. C’est cette
fonctionnalité qui va nous permettre de créer un site responsive en soi.
113
2M. LES CSS - LE RESPONSIVE DESIGN : LES MEDIA QUERIES
/ LE HTML / LE CSS
</head> body{
<h1>Responsive design</h1> }
}
</body>
</html>
@media screen and (min-width: 1280px) {
body{
background-color: green;
Pour un écran dont la largeur sera au maximum de 480px, mon fond sera orange.
}
}
Pour un écran dont la largeur sera comprise entre 481px et 1279px, mon fond sera bleu.
Pour un écran dont la largeur sera au minimum de 1280px, mon fond sera vert.
114
2M. LES CSS - LE RESPONSIVE DESIGN : LES MEDIA QUERIES
/ LE HTML / LE CSS
Avant
<!DOCTYPE html> @charset ”utf-8”;
<html>
<head> Cours Durée Date
/* Fusion des bordures */
<title>Les tableaux !</title> HTML 5 5 jours 12 au 16/03
<meta charset= ”utf-8”> table {
</head> border-collapse: collapse;
<body> }
<h1>Les tableaux en CSS</h1> Après
<table>
<caption>Liste des cours</caption> /* Bordures et marges intérieures pour les lignes d’en-tête
<tr> et du tableau*/ Cours Durée Date
<th>Cours</th> td, th {
<th>Durée</th th > HTML 5 5 jours 12 au 16/03
border: 1px solid gray;
<th>Date</th>
</tr> padding: 10px 10px;
Wordpress 3 jours 19 au 20/03
<tr> }
<td>HTML 5</td>
<td>5 jours</td>
/* couleur d’arrière-plan et mise en forme texte en-tête */
<td>du 12 au 16/03</td>
</tr> th {
<tr> background-color: #db3b1a;
<td>Wordpress</td>
color: #fff;
<td>3 jours</td>
<td>19 au 20/03</td> font-family: sans-serif;
</tr> }
</table>
</body>
</html>
117
2N. LES CSS - LES TABLEAUX
/ LE HTML / LE CSS
…. @charset ”utf-8”;
<body> /* Fusion des bordures */
<h1>Les tableaux en CSS</h1> table {
<table>
border-collapse: collapse;
<thead> <!--En-tete du tableau-->
<tr class=”tableau2”> }
<th>Titre du film</th> /* Bordures et marges intérieures pour les lignes d’en-tête et du tableau*/
<th>Pour enfants ?</th> td, th {
<th>Pour adolescents ?</th> border: 1px solid gray;
</tr> padding: 10px 10px;
</thead>
<!-- Attention, le pied de tableau est d’abord indiqué avant le corps--> }
<tfoot> <!--Pied de tableau--> /* couleur d’arrière-plan et mise en forme texte en-tête */
<tr class=”tableau2”> th {
<td colspan=”3”>Mon pied de tableau</td> background-color: #505050;
</tr> color: #fff;
</tfoot>
font-family: sans-serif;
<tbody> <!--Corps du tableau-->
<tr class=”tableau2”> }
<td>Massacre à la tronçonneuse</td> /* couleur d’arrière-plan différente une ligne sur deux */
<td >Non, trop violent</td> tbody .tableau2:nth-child(2n) {
<td>Oui</td> background-color: #e0e0e0;
</tr> }
<tr class=”tableau2”>
<td>Les bisounours font du ski</td> /* Couleur d’arrière plan au survol*/
<td>Oui, adapté</td> tbody .tableau2:hover {
<td>Pas assez violent...</td> background: #5bd0ff;
</tr> }
<tr class=”tableau2”> /* Pied de tableau*/
<td>Lucky Luke, seul contre tous</td>
tfoot .tableau2 {
<td colspan=”2”>Pour toute la famille !</td>
</tr> text-align: center;
</tfoot> background-color: beige;
</table> }
</body>
</html>
118
2N. LES CSS - LES TABLEAUX
Vous vous doutez que je peux faire de même avec des rangées :
On peut aussi attribuer une couleur d’arrière-plan différente une ligne sur deux grâce à tr:nth-child(2n).
119
2N. LES CSS - LES FORMULAIRES
LES FORMULAIRES
Voici une partie du fichier HTML d’un formulaire que nous allons retravailler avec les CSS. Notez que certains éléments que nous n’avions pas utilisé
jusqu’ici ont été ajoutés comme l’élément “fieldset” qui permet de regrouper des champs dans une zone que l’on pourra nommer à l’aide de l’élément
“legend” ou encore lesvcheckbox”.
Récupérez le HTML sur le réseau afin que nous puissions travailler notre CSS.
<body>
<h1>Les formulaires en CSS</h1>
<form action=“#“>
<p><i>Complétez le formulaire. Les champs marqué par </i><em>*</em> sont <em>obligatoires</em></p>
<fieldset>
<legend>Contact</legend>
<label for=“nom“>Nom <em>*</em></label>
<!--placeholder: indication grisée
//required: il faut renseigner le champs sinon la validation est bloquée
//autofocus: le curseur est positionné dans cette case au chargement de la page-->
<input id=“nom“ placeholder=“John Doe“ autofocus=““ required=““><br>
<label for=“telephone“>Portable</label>
<!--type=“tel“: bascule le clavier sur un smartphone
// pattern: expression régulière à vérifier pour pouvoir valider-->
<input id=“telephone“ type=“tel“ placeholder=“06xxxxxxxx“ pattern=“06[0-9]{8}“><br>
<label for=“email“>Email <em>*</em></label>
<input id=“email“ type=“email“ placeholder=“prenom.nom@gmail.com“ required=““ pattern=“[a-zA-Z]*.[a-zA-Z]*@gmail.com“><br>
</fieldset>
…
120
2N. LES CSS - LES FORMULAIRES
LES FORMULAIRES
@charset “utf-8“; 5 input:focus {
1 Nous fixons la largeur du formulaire. p{ background: #eaeaea;
margin-top: 0px; }
2 Nous indiquons une marge inférieur à nos } input, textarea {
field set pour les espacer verticalement. form { width: 249px;
1 width: 530px; }
} textarea {
3 Nous indiquons à nos légendes d’utiliser fieldset { height: 100px;
les petites capitales. margin-bottom: 15px; }
2 padding: 10px; select {
background-color: azure; width: 254px;
4 Nous donnons une largeur identique à
} }
toutes nos étiquettes et les alignons en
legend { input[type=checkbox] {
haut padding: 0px 3px; 6 width: 10px;
verticalement. Nous les “décollons” du font-weight: bold; }
3
fieldset à l’aide d’une marge. font-variant: small-caps; input[type=submit] {
font-family: sans-serif; width: 150px;
7
} padding: 10px;
5 Nous ajoutons une variation de l’aspect
label { }
que le champs de saisie à le focus pour width: 110px;
indiquer où se situe l’internaute. 4 display: inline-block;
vertical-align: top;
margin: 6px;
6 Nous limitons la largeur des checkbox
}
pour ne pas repousser le texte adjacent em {
trop loin de la case à cocher. font-weight: bold;
font-style: normal;
color: #f00;
7 Nous fixons la largeur de notre bouton
}
“Envoyer”.
121
2N. LES CSS - LE PETIT PLUS
LE PETIT PLUS
Sachez que même sans utiliser de Javascript (donc uniquement avec du HTML et une CSS), on peut faire des choses assez élaborées,
je vous invite à regarder les quelques exemples ci-dessous !
122
LES CSS - FLEXBOX
FLEXBOX
Le principe de la mise en page avec Flexbox est simple : vous définissez un conteneur, et à l’intérieur vous placez plusieurs éléments.
Imaginez une boîte dans laquelle vous rangez plusieurs objets :
Conteneur
Sur une même page web, vous pouvez sans problème avoir plusieurs conteneurs (plusieurs cartons si vous préférez ).
Ce sera à vous d’en créer autant que nécessaire pour obtenir la mise en page que vous voulez.
123
LES CSS - FLEXBOX
FLEXBOX
Voyons un exemple avec le code suivant : Avec un peu de CSS, ajoutons au conteneur et une couleur de fond aux éléments :
<div id=“conteneur“>
<div class=“element“>Elément 1</div>
<div class=“element“>Elément 2</div>
<div class=“element“>Elément 3</div>
</div>
Comme les div sont des blocs, les éléments se positionnent les uns au dessus des autres !
Maintenant, ajoutons juste la valeur Flex pour la propriété Display du conteneur : Les éléments se placent alors par défaut les uns à côté des autres :
#conteneur {
display: flex;
}
124
LES CSS - FLEXBOX
FLEXBOX
La direction
Flexbox nous permet d’agencer ces éléments dans le sens que l’on veut. Avec flex-direction, on peut les positionner verticalement ou encore les inverser.
Il peut prendre les valeurs suivantes :
Exemple
#conteneur {
display: flex;
flex-direction: column;
}
125
LES CSS - FLEXBOX
FLEXBOX
Vous pourriez vous dire que c’est pareil qu’au début non ? On avait le même résultat sans Flexbox !
C’est vrai. Mais maintenant que nos éléments sont flex, ils ont tout un tas d’autres propriétés utiles que nous allons voir juste après.
#conteneur {
display: flex;
flex-direction: column-reverse;
}
126
LES CSS - FLEXBOX
FLEXBOX
Le retour à la ligne
Par défaut, les blocs essaient de rester sur la même ligne s’ils n’ont pas la place (ce qui peut provoquer des bugs de design parfois). Si vous voulez, vous pou-
vez demander à ce que les blocs aillent à la ligne lorsqu’ils n’ont plus la place avec flex-wrap qui peut prendre ces valeurs :
/ wrap-reverse : les éléments vont à la ligne lorsqu’il n’y a plus la place en sens inverse
127
LES CSS - FLEXBOX
FLEXBOX
Alignements
Les éléments sont organisés soit horizontalement (par défaut), soit verticalement.
/ Si vos éléments sont organisés horizontalement, l’axe secondaire est l’axe vertical.
/ Si vos éléments sont organisés verticalement, l’axe secondaire est l’axe horizontal.
128
LES CSS - FLEXBOX
FLEXBOX
Aligner sur l’axe vertical
4
Exemple
#conteneur {
display: flex; 5
justify-content: space-around;
}
129
LES CSS - FLEXBOX
FLEXBOX
Bien évidemment, ça marche aussi si vos éléments sont dans une direction verticale. Dans ce cas, l’axe vertical devient l’axe principal,
et justify-content s’applique aussi :
Exemple
#conteneur {
display: flex;
flex-direction: column;
justify-content: center;
height: 350px;
/* Un peu de hauteur pour que les éléments aient la place de bouger */
}
130
LES CSS - FLEXBOX
FLEXBOX
Aligner sur l’axe secondaire
Comme nous l’avons vu, si nos éléments sont placés dans une direction horizontale (ligne), l’axe secondaire est vertical.
Et inversement, si nos éléments sont dans une direction verticale (colonne), l’axe secondaire est horizontal.
Avec align-items, nous pouvons changer leur alignement sur l’axe secondaire. Il peut prendre ces valeurs :
/ stretch : les éléments sont étirés sur tout l’axe (valeur par défaut)
/ flex-start : alignés au début
/ flex-end : alignés à la fin
/ center : alignés au centre
/ baseline : alignés sur la ligne de base (semblable à flex-start)
Exemple
#conteneur {
display: flex;
justify-content: center;
align-items: center;
}
131
LES CSS - FLEXBOX
FLEXBOX
Vous voulez appliquer un centrage vertical et horizontal ? Cela peut être obtenu très facilement :
Dites que votre conteneur est une flexbox et établissez des marges automatiques sur les éléments à l’intérieur. C’est tout !
#conteneur {
display: flex;
}
.element {
margin: auto;
}
132
LES CSS - FLEXBOX
FLEXBOX
Aligner un seul élément
Il est possible de faire une exception pour un seul des éléments sur l’axe secondaire avec align-self :
Exemple
#conteneur {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
}
133
LES CSS - FLEXBOX
FLEXBOX
Répartir plusieurs lignes
Si vous avez plusieurs lignes dans votre Flexbox, vous pouvez choisir comment celles-ci seront réparties avec align-content.
Exemple
134
LES CSS - FLEXBOX
FLEXBOX
Répartir plusieurs lignes
Voyons voir comment les lignes se répartissent différemment avec la nouvelle propriété align-content . Elle peut prendre ces valeurs :
/ stretch (par défaut) : les éléments s’étirent pour occuper tout l’espace
135
LES CSS - FLEXBOX
FLEXBOX
Changer l’ordre des éléments
Sans changer le code HTML, nous pouvons modifier l’ordre des éléments en CSS grâce à la propriété order. Indiquez simplement un nombre,
et les éléments seront triés du plus petit au plus grand nombre.
Exemple
#conteneur {
display: flex;
}
element:nth-child(1) {
order: 3; order: 1; order: 2; order: 3;
}
element:nth-child(2) {
order: 1;
}
element:nth-child(3) {
order: 2;
}
136
LES CSS - FLEXBOX
FLEXBOX
Changer Faire grossir ou maigrir les éléments des éléments
Avec la propriété flex, nous pouvons permettre à un élément de grossir pour occuper tout l’espace restant.
Exemple
element:nth-child(2) {
flex: 1; flex: 1;
}
Le nombre que vous indiquez à la propriété flex indique dans quelle mesure il peut grossir par rapport aux autres.
element:nth-child(1) {
flex: 2;
}
element:nth-child(2) {
flex: 1;
}
Ici, le premier élément peut grossir 2 fois plus que le second élément
137
EXERCICE FINAL
EXERCICE FINAL
A l’aide de tout ce que nous avons vu, construisez la page d’accueil du site web du food truck “BIGBURG”.
Attention, il ne s’agit pas de se faire plaisir sur le design et l’accessibilité mais de répondre à un cahier des charges !
/ le site doit être responsive et être bien lisible sur mobile (en particulier sur les iPhone 6+ et 7 et Samsung Galaxy S7+ et S8) car sa clientèle
est plutôt jeune et amateur de smartphones,
/ le menu doit être lisible et présenter les burgers, les produits, les services ainsi qu’un lien de contact,
/ le contenu textuel n’est pas encore disponibles mais peut être remplacé par du texte générique,
/ il veut un formulaire pour s’abonner à sa newsletter en Une mais pas trop envahissant.
A VOUS DE JOUER !
138
LIENS UTILES
LIENS UTILES
/ Bibliothèque d’icônes ou de dessin vectoriel : flaticon.com, freepik.fr, icons8.com
/ Discord en rapport avec la formation. J’essaie de répondre le plus rapidement possible à vos questions en rapport avec la formation mais également à vos
questions sur le métier de webdesigner, intégrateur, les agences, etc.. : Discord
139