CSS
Méthodologie et pédagogie
Dans un but pédagogique, et afin de vous fournir la meilleure expérience
d’apprentissage possible, ce cours a été divisé en de multiples sous-chapitres.
Vous pouvez à tout moment voir le sommaire du cours sur votre gauche. Le
chapitre consulté actuellement s’affichera en gras afin que vous puissiez
facilement vous repérer.
De plus, ce tutoriel HTML et CSS utilise plusieurs supports afin de faciliter
votre apprentissage et de valider vos progrès.
Chaque nouvelle section dispose d’une vidéo ainsi que d’un script illustré par
de nombreux exemples. Avec les exemples, vous disposerez également
généralement d’un lien vous permettant de tester le code vous même et de le
modifier comme ci-dessous :
Essayer ce code !
POURQUOI APPRENDRE LE
HTML ET LE CSS ?
Tout d’abord, il faut savoir que le HTML et le CSS sont deux véritables
standards et n’ont donc, à ce titre, pas de concurrent comme cela peut être le
cas pour le langage PhP par exemple (concurrencé par Ruby on Rails et
Django entre autres).
Ensuite, les langages HTML et CSS sont véritablement à la base de tout projet
de développement web car les navigateurs (Google Chrome, Safari, etc.) vont
utiliser le code HTML et le CSS pour vous fournir et afficher des pages web.
Cela étant, si vous connaissez un petit peu le monde du web, vous pouvez
très bien vous dire que coder en HTML et en CSS est inutile puisque vous
pouvez utiliser des solutions toutes faîtes comme des frameworks
(WordPress, PrestaShop), des éditeurs WYSIWIG (What You See Is What You
Get) comme Adobe Dreamweaver ou encore avoir recours aux services d’une
agence spécialisée.
Si installer un framework peut être une bonne solution, ce n’est pas suffisant.
Vous devez également le comprendre et pouvoir le modifier.
IDEE RECUE N°2 : Avez un éditeur WYSIWIG, pas besoin de savoir coder.
Les éditeurs WYSIWIG sont des éditeurs qui codent « à votre place ». En gros,
vous choisissez d’insérer un paragraphe, une image, un carré, etc. et l’éditeur
crée le code correspondant. Un exemple célèbre est Adobe Dreamweaver.
Ces éditeurs sont certes de plus en plus puissants et de mieux en mieux fait.
Pour peu que vous ayez un budget suffisant (> 50K€ en général), vous
pourrez vous offrir certaines agences reconnues qui font un travail
remarquable et offrent un bon support après vente.
De plus, pensez bien que le côté technique d'un projet n'est qu'un aspect
parmi d'autres. Si vous dépensez tout votre argent dans le développement de
votre site web ou application, comment pourrez-vous marketer votre projet ?
Enfin, une fois le travail rendu, il faudra très souvent ne pas vous attendre à
ce que votre freelance ou votre agence vienne vous dépanner pendant des
années en cas de problème.
Si vous comprenez le HTML et le CSS avant de faire appel à une agence, vous
rédigerez alors un cahier des charges plus précis et de meilleure qualité et
économiserez finalement beaucoup d’argent et réduirez le nombre de vos
soucis.
Deviendriez-vous plombier sur un coup de tête ? Non, car vous n’y connaissez
rien en plomberie. C’est exactement pareil sur le web.
L’immense majorité des échecs liés au web proviennent du fait que des
personnes se lancent dans l’aventure sans la moindre connaissance de leur
environnement.
N’oubliez pas qu’il est essentiel, pour qu’un commerce fonctionne (et
aujourd’hui plus que jamais) d’avoir une compréhension de son propre
business, de son architecture et de son infrastructure.
Si vous faîtes l’effort de comprendre cela, vous avez d’ores-et-déjà battu 95%
de vos concurrents. Sans compter que pour optimiser votre référencement
(donc votre visibilité sur le web), la maîtrise du HTML et du CSS est
indispensable.
Convaincu ? Dans ce cas, passons à la suite ! Car je suis certain que vous êtes
impatients de découvrir ce que signifient les initiales « HTML » et « CSS » !
DEFINITIONS ET ROLES DU
HTML ET DU CSS
Le code HTML ci-dessous par exemple indique que l’on souhaite créer un
grand titre (grâce à l’élément h1 ) et un paragraphe (grâce à l’élément p ).
Nous allons donc utiliser le CSS sur notre code HTML, afin d’enjoliver le
résultat visuel final.
Le code ci-dessous par exemple indique que les titres h1 écrits en HTML
doivent avoir une couleur rouge et une taille de 14px tandis que les
paragraphes doivent être bleus et soulignés.
En effet, si vous affichez la page en HTML créée ci-dessus sans le CSS, vous
pouvez remarquer que le contenu qui a été déclaré comme étant un titre
s’affiche en grand et en gras, tandis que la taille de la police de notre
paragraphe est plus petite.
Le HTML est un langage qui a été créé pour structurer des pages et pour
donner du sens au contenu. Le principe même du HTML est d’indiquer aux
navigateurs que tel texte est bien un titre et tel autre est bien un simple
paragraphe.
Si vous faussez le tout en déclarant par exemple des titres qui n’en sont pas,
vous pervertissez le rôle du HTML et cela va impacter fortement la qualité de
votre page web, sa validité et votre référencement global.
Les langages tels que le HTML et le CSS se sont donc également modifiés et
enrichis durant ce temps.
Cependant, l'évolution n'a pas été linéaire ni continue pour l'utilisateur final.
HTML5 et CSS3
Pour sa part, le CSS3 nous apporte une bonne gestion des ombres et des
dégradés, ainsi que la possibilité de créer des bordures arrondies.
Lorsque vous codez, vous pouvez travailler soit en local, soit en production.
Une fois le travail terminé, il faudra alors louer un hébergement web chez un
hébergeur et acheter et choisir une URL, c’est-à-dire une adresse web pour
notre site. Ensuite, nous allons transférer tous nos fichiers sur l'espace
serveur que nous avons loué chez notre hébergeur.
Si nous désirons par la suite modifier quelque chose d’important sur notre
site, nous créerons une copie de notre site live en local en récupérant tous les
fichiers, et nous implémenterons d’abord les modifications en local afin de
minimiser le risque de bugs finaux et ainsi le temps de maintenance sur notre
site.
L’EDITEUR DE TEXTE
En effet, vous n’êtes pas strictement obligés de passer par un éditeur pour
apprendre à coder en HTML et en CSS, car de nombreux sites comme JsBin
vous proposent de rentrer directement votre code en HTML et en CSS et
affichent le résultat en direct.
Ces sites sont très pratiques lorsque vous voulez tester rapidement un bout
de code ou pour des démonstrations de cours.
Cependant, retenez bien qu’ils sont aussi limités : vous ne pourrez pas faire
certaines choses via ces sites et surtout, si vous devez un jour créer un site
avec plusieurs pages reliées entre elles, vous devrez obligatoirement utiliser
un éditeur.
ELEMENTS, BALISES,
ATTRIBUTS EN HTML
Sur le web, vous trouverez peut être des éléments br écrits avec un slash
après le nom de l’élément, comme ceci : <br/>. Les deux syntaxes sont
acceptées en HTML, la seule différence est que la syntaxe utilisant le slash
est également reconnue par le langage XML. Dans ce cours, j'utiliserai par
simplicité la syntaxe sans le slash
Les attributs en HTML
Finalement, 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.
Par exemple, l’élément a (pour "anchor") servant à créer des liens vers
d’autres sites ou d’autres pages, va avoir besoin d’un
attribut href ("hypertexte reference") qui va prendre comme valeur l'adresse
(relative ou absolue) de la page vers laquelle on souhaite faire un lien.
L’élément img , servant à insérer une image dans une page HTML, va lui
demander deux attributs : src et alt .
Notez que cet élément n'est constitué que d'une seule balise orpheline, tout
comme l'élément br .
Notez bien que les balises et les attributs ne seront jamais affichés par le
navigateur : ils vont servir à indiquer au navigateur comment il doit traiter
chaque contenu. Bien construire sa page web sera aussi hautement
bénéfique pour votre référencement dans les moteurs de recherche.
Vous devez toujours faire votre maximum pour que vos pages de code soient
valides. Cela améliorera votre référencement et limitera grandement les
problèmes d’ergonomie et les bugs de votre site.
Voici donc ci-dessous le code minimum pour créer une page HTML valide.
Nous allons dans la suite de ce chapitre expliquer le rôle de chaque élément
et attribut.
Le doctype
Tout d’abord, nous devrons toujours démarrer une page HTML en précisant
le doctype de notre document. Comme son nom l’indique, le doctype sert à
préciser le type du document.
Faites bien attention à l’écriture du doctype : vous pouvez remarquer que la
balise représentant le doctype commence par un point d’exclamation. Ceci
est un cas unique.
L’élément html
Après le document, nous devons également mentionner un élément html . Cet
élément est composé de deux balises <html> et </html> et va représenter
notre page HTML en soi. On va donc insérer tout le contenu de notre page (et
donc les autres éléments) à l’intérieur de celui-ci.
L’élément head va contenir des meta informations relatives à la page, c’est-à-
dire des informations générales dont la page va avoir besoin pour
fonctionner, comme le titre de la page ou encore le type d’encodage utilisé.
L’élément body va lui contenir tout le contenu « visible » de la page : les
textes, images, liens, vidéos, etc.
Notez que vous devrez également régler l’encodage de votre éditeur de texte
sur utf-8 afin que tous les caractères s’affichent bien par la suite dans votre
navigateur.
Ca y est, nous venons de créer notre première page en HTML. Celle-ci est
pour le moment vide et ne possède qu’un titre, mais c’est déjà un bon début !
Pas d’inquiétude : nous allons la remplir ensemble au fil des prochains
chapitres.
L’imbrication d’éléments
Un autre concept qu’il vous faut comprendre absolument pour coder en HTML
est la façon dont le HTML traite ses éléments.
Ainsi, nous n’avons absolument pas le droit de « croiser » les balises des
éléments ou, pour le dire plus clairement : le premier élément déclaré doit
toujours être le dernier refermé, tandis que le dernier ouvert doit toujours
être le premier fermé.
Par exemple, vous voyez que notre premier élément déclaré est
l’élément html , qui contient les éléments head et body . L'élément html devra
donc être le dernier élément refermé.
Pour cela, commencez par ouvrir votre éditeur de texte et créez un nouveau
fichier.
Avant toute chose, vous allez devoir définir le type de page que vous
souhaitez créez et l’encodage de votre page.
Dans notre cas, nous souhaitons créer une page html et utiliser l’encodage
utf-8.
Pour définir le type de page, vous avez deux choix : soit vous « enregistrez
votre fichier sous » et vous changez l’extension de celui-ci en « .html »
lorsqu’on vous demande de choisir le nom du fichier et le dossier dans lequel
il doit être enregistré, soit vous définissez cela directement dans votre éditeur
via l’un de ses onglets.
Voici les deux façons de faire illustrées ci-dessous en utilisant Komodo Edit
avec un Mac.
Dans Komodo Edit, cette option se trouve en bas de votre document ouvert.
Sinon, vous devrez probablement chercher dans les onglets de votre éditeur.
Avec Komodo, c’est très simple, l’option est disponible juste à côté du type de
document, en bas de notre fichier ouvert. Avec un autre éditeur, vous devrez
une nouvelle fois certainement chercher parmi les onglets.
Nous sommes prêts, nous n’avons plus qu’à nous occuper de notre fichier en
soi.
Dès que c’est fait, nous pouvons immédiatement enregistrer la page comme
vous le feriez pour n’importe quel document.
Je vous conseille de créer un dossier séparé sur votre bureau dans lequel
vous placerez tous les fichiers que nous créerons durant ce cours. Cela vous
permettra d’avoir une meilleure vision d’ensemble sur vos fichiers et sur les
progrès réalisés.
Ainsi, vous n'enregistrerez pas votre page sous le nom Première page
html !!.html mais plutôt premiere-page-html.html .
Note : il est possible, que lorsque vous double-cliquiez sur votre document
celui-ci se rouvre dans votre éditeur de texte plutôt que dans votre
navigateur.
Cela peut arriver si votre éditeur de texte a été défini comme le programme
par défaut pour ouvrir ce type de document.
Dans ce cas là, faites simplement un clic droit sur votre document puis
choisissez « ouvrir avec… » et choisissez votre navigateur favori.
INDENTATION ET
COMMENTAIRES
En effet, si vous faîtes l’effort de les respecter dès maintenant, vous verrez
que ça deviendra très vite un automatisme.
Les bonnes pratiques sont là pour nous aider à coder plus proprement et plus
lisiblement, donc pour nous faciliter la vie, pas le contraire !
L’indentation
Indenter correspond à créer des retraits en début de ligne de façon cohérente
et logique.
Avec indentation :
Sans indentation :
J’espère que vous serez d’accord pour dire que le premier code est plus clair
que le second.
En revanche, je n’ai pas crée de nouvelle tabulation pour l'élément meta étant
donné que cet élément n’est pas contenu dans title (ce n’est pas un
élément enfant de l'élément title ) mais est au même niveau hiérarchique
que lui (on parle d’élément frère).
Vous pouvez observer la même chose avec les éléments head et body par
rapport à l’élément html : j’ai décalé head et body avec le même écart par
rapport à html car ces deux éléments sont frères (aucun des deux n’est
contenu dans l’autre).
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.
Les commentaires seront invisibles pour vos visiteurs, ils ne servent qu’aux
développeurs créant ou lisant le code.
1. 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 ;
Essayer ce code
Mise en garde
Vous vous rappelez lorsque je vous ai dit que vos commentaires n’étaient pas
affichés aux yeux de vos visiteurs ?
C’est vrai, mais faîtes bien attention, car cela ne veut pas dire qu’il est
impossible pour un visiteur de voir ce que vous avez écrit en commentaire.
En effet, tous vos visiteurs peuvent voir à tout moment, s’ils le souhaitent,
non seulement le contenu de vos commentaires mais aussi l’intégralité de
votre code HTML.
Pour cela, il suffit simplement d’activer les outils pour développeurs dont
dispose chaque navigateur puis de faire un clic droit sur la page et «
d’inspecter l’élément ».
Cela est valable pour n’importe quel site. Regardez par exemple avec le site
Wikipédia. Une fois les outils pour développeurs activés, il suffit d’un clic
droit…
INDENTATION ET
COMMENTAIRES
En effet, si vous faîtes l’effort de les respecter dès maintenant, vous verrez
que ça deviendra très vite un automatisme.
Les bonnes pratiques sont là pour nous aider à coder plus proprement et plus
lisiblement, donc pour nous faciliter la vie, pas le contraire !
L’indentation
Indenter correspond à créer des retraits en début de ligne de façon cohérente
et logique.
Avec indentation :
Sans indentation :
J’espère que vous serez d’accord pour dire que le premier code est plus clair
que le second.
Par exemple, ci-dessus, vous pouvez voir que j’ai effectué une tabulation pour
écrire la balise ouvrante de mon élément head , contenu dans mon
élément html .
J’ai ensuite effectué une nouvelle tabulation à l’intérieur de
l'élément head pour écrire mon élément title .
En revanche, je n’ai pas crée de nouvelle tabulation pour l'élément meta étant
donné que cet élément n’est pas contenu dans title (ce n’est pas un
élément enfant de l'élément title ) mais est au même niveau hiérarchique
que lui (on parle d’élément frère).
Vous pouvez observer la même chose avec les éléments head et body par
rapport à l’élément html : j’ai décalé head et body avec le même écart par
rapport à html car ces deux éléments sont frères (aucun des deux n’est
contenu dans l’autre).
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.
Les commentaires seront invisibles pour vos visiteurs, ils ne servent qu’aux
développeurs créant ou lisant le code.
1. 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 ;
Mise en garde
Vous vous rappelez lorsque je vous ai dit que vos commentaires n’étaient pas
affichés aux yeux de vos visiteurs ?
C’est vrai, mais faîtes bien attention, car cela ne veut pas dire qu’il est
impossible pour un visiteur de voir ce que vous avez écrit en commentaire.
En effet, tous vos visiteurs peuvent voir à tout moment, s’ils le souhaitent,
non seulement le contenu de vos commentaires mais aussi l’intégralité de
votre code HTML.
Pour cela, il suffit simplement d’activer les outils pour développeurs dont
dispose chaque navigateur puis de faire un clic droit sur la page et «
d’inspecter l’élément ».
Cela est valable pour n’importe quel site. Regardez par exemple avec le site
Wikipédia. Une fois les outils pour développeurs activés, il suffit d’un clic
droit…
Le but de tout ceci est que les navigateurs et les ordinateurs puissent
comprendre la structure de notre document et son flux afin de l’afficher de la
meilleure manière.
L’un des effets secondaires d’une bonne utilisation du HTML en tant que
langage de balisage est un meilleur référencement sur des moteurs de
recherche comme Google par exemple.
Essayer ce code
Comme vous pouvez le voir, le navigateur comprend bien qu’il s’agit de titres
d’importances diverses et les traite donc différemment par défaut, en leur
attribuant une mise en forme différente (très grand et très gras pour un titre
de niveau h1 , puis de plus en plus petit jusqu’à h6 ).
Encore une fois, n’utilisez pas un élément de type "h" pour écrire un texte en
grand et en gras ! Utilisez le pour définir un titre dans votre page. Nous nous
chargerons de la mise en forme du contenu plus tard, grâce au CSS.
h1 va représenter le titre principal de votre page. Vous n’avez le droit qu’à un
seul élément h1 par section de page (nous verrons plus tard ce que cela
signifie). En revanche, vous pouvez créer autant de titres h2 , h3 , etc. que
nécessaire.
On peut créer autant de paragraphes que l’on souhaite dans une page. A
chaque nouveau paragraphe, il faut utiliser un nouvel élément p .
La problématique
Les plus curieux d’entre vous auront, je suppose, déjà fait le test : vous
pouvez ajouter autant d’espaces que vous le voulez au sein d’un paragraphe
ou d’un titre ou effectuer des retours à la ligne dans votre code, ceux-ci ne
seront jamais affichés visuellement dans votre navigateur.
En effet, pour effectuer des retours à la ligne ou marquer des espaces
en HTML, nous allons à nouveau devoir utiliser des éléments.
On peut utiliser autant d’éléments br que l’on souhaite au sein d’un titre ou
d’un paragraphe par exemple.
Essayer ce code
Dans ce cas là, il peut être intéressant d’utiliser l’élément hr plutôt que br .
L'élément hr a justement été créé pour définir un retour à la ligne avec
changement de thématique. Tout comme br , cet élément est représenté par
une balise orpheline.
Essayer ce code
Cela va par exemple être le cas pour les mots ou phrases clefs sur lesquels
vous souhaitez être bien référencé dans les moteurs de recherche.
L’élément strong
L’élément HTML strong va être utilisé pour signifier qu’un contenu
est très important et doit être considéré comme tel par les moteurs de
recherche.
L’élément em
L’élément HTML em (pour emphasis ; « emphase » en français) sert à
indiquer qu’un texte doit être considéré comme relativement
important, mais avec moins d’importance qu’un texte dans un
élément strong .
L’élément mark
L’élément HTML mark va nous permettre de faire ressortir un
contenu en le marquant.
Ces mêmes mots vont généralement être mis en relief dans les résultats
retournés suite à votre recherche. Souvent, on utilisera l’élément mark dans
ces cas là.
Il reste difficile à votre niveau de vous montrer l’intérêt de cet élément car on
l’utilise généralement de façon dynamique et donc avec d’autres langages
comme le JavaScript. Retenez simplement qu’il existe pour le moment.
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 (nous verrons plus
tard comment dans ce cours).
Nous allons voir dans ce chapitre comment créer chaque type de liste et
quand utiliser un type de liste plutôt qu’un autre.
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.
Essayer ce code
Comme vous pouvez le remarquer, les éléments li se trouvent à l’intérieur
de l’élément ul (à partir de ce moment, bien indenter son code commence à
être important). Visuellement, des puces (les points noirs) apparaissent
automatiquement devant chaque élément d’une liste non-ordonnée.
Par exemple, si l’on souhaite lister les étapes naturelles de la vie, ou lorsque
l’on crée un sommaire, on utilisera généralement des listes ordonnées.
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.
Essayer ce code
Comme vous le voyez, ce sont cette fois-ci des numéros qui sont affichés
devant chaque élément de la liste par défaut.
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.
Essayer ce code
Pour imbriquer une liste dans une autre, il suffit de définir une nouvelle liste à
l’intérieur de l’un des éléments d’une autre liste, juste avant la balise
fermante de cet élément.
Essayer ce code
Comme vous pouvez le voir, il devient ici très important de bien indenter son
code afin de ne pas se perdre au milieu de nos listes !
Notez que l’on peut imbriquer autant de listes que l’on souhaite les unes dans
les autres.
LIENS INTERNES ET
EXTERNES EN HTML
Nous allons pouvoir distinguer deux grands types de liens : les liens
permettant de se déplacer d'une page vers une autre à travers un même site
et les liens permettant de se rendre sur d’autres sites.
Par exemple, pour créer un lien ramenant vers la page d’accueil du site
Wikipédia, nous allons nous y prendre comme ceci :
Essayer ce code
Vous remarquez par ailleurs que le texte, lorsque l’on visualise notre page
web dans un navigateur, est en bleu et est souligné pour indiquer que l’on
peut cliquer dessus.
Lorsque l’attribut href prend une URL complète en valeur, on parle de valeur
absolue (car celle-ci est fixe et ne dépend de rien). Les liens externes utilisent
toujours des valeurs absolues.
Dans ce cas, nous allons renseigner une valeur relative pour notre
attribut href .
On dit que la valeur est relative car on va devoir indiquer l’adresse de la page
de destination relativement à l’adresse de la page de départ (c’est-à-dire
celle à partir de laquelle on fait notre lien).
En effet, vous devez savoir qu’un site n’est qu’un ensemble de fichiers liés
entre eux. Ces fichiers peuvent être placés dans des dossiers différents.
Pour créer des liens internes, il faut donc distinguer trois cas :
Pour illustrer ces cas, nous allons avoir besoin de trois dossiers différents et
de quatre pages. Voici la structure que je vous propose de créer :
Pour le moment, nous nous sommes contentés de créer trois dossiers et
quatre fichiers HTML:
»;
Dans chaque fichier HTML, nous nous sommes contentés d’écrire la structure
minimale d’un page HTML afin que nos fichiers soient valides ainsi qu’une
phrase de texte pour les différencier les uns des autres :
Vous pouvez imaginer que ces trois dossiers et ces quatre fichiers
représentent votre site. Notre but va maintenant être de créer des liens à
partir du fichier page-depart.html vers chacune des autres pages.
Pour créer un lien vers un autre fichier situé dans un même dossier, il suffit de
préciser le nom du fichier en valeur de l’attribut href .
Pour créer un lien vers un fichier situé dans un dossier parent, il faudra écrire
« ../ » puis le nom du fichier en valeur de l’attribut href .
Pour créer un lien vers un fichier situé dans un sous-dossier, il faudra préciser
le nom du sous-dossier et le nom du fichier, séparés par un slash, en valeur
de l’attribut href .
De même, si on souhaite créer un lien vers une page qui est à deux niveaux
hiérarchiques d’écart de notre page de départ, il faudra soit indiquer le nom
des deux sous-dossiers, soit indiquer deux fois « ../ ».
Souvent, si vous avez un site, vous voudrez que le lien s’ouvre dans un
nouvel onglet ou une nouvelle fenêtre afin que le visiteur ne perde pas la
page de votre site. On va pouvoir faire cela avec l’attribut target .
L’attribut target va nous permettre de choisir où doit s’ouvrir notre page de
destination. En pratique, nous utiliserons très souvent la valeur « _blank » qui
spécifie que la nouvelle page doit s’ouvrir dans un nouvel onglet ou dans une
nouvelle fenêtre selon le navigateur utilisé par vos visiteurs.
Voici un exemple pratique avec un lien externe menant vers Wikipédia et
s’ouvrant dans un nouvel onglet ou une nouvelle fenêtre :
Essayer ce code
Pour faire cela, nous allons créer des liens de type « ancre ».
Pour créer un lien de type ancre, il va avant tout nous falloir une ancre. On va
créer cette ancre en rajoutant un attribut id à l’intérieur de la balise ouvrante
de l’élément où l’on veut envoyer le visiteur.
Vous devez donner une valeur unique à un attribut id , afin d’ensuite pouvoir
utiliser cette valeur pour retrouver l’ id .
Vous pouvez lui donner n’importe quelle valeur, mais essayez de rester
cohérent. De plus, évitez les espaces, les caractères spéciaux et commencez
par une lettre.
Une fois notre ancre créée, nous allons créer le lien ramenant à l’ancre. Pour
cela, on utilise une nouvelle fois un élément a avec son attribut href .
Finalement, pour tester notre lien dans de bonnes conditions, nous allons
rajouter de nombreux retours à la ligne dans notre page.
En effet, nous ne pouvons vérifier si notre ancre fonctionne bien que si notre
page comporte un scrolling (barre de défilement vertical), c’est-à-dire
seulement si celle-ci est suffisamment longue ou si on redimensionne notre
fenêtre.
Dès que l’on va cliquer sur notre lien, nous allons être redirigés à l’endroit où
se trouve notre élément comportant notre id dans la page.
Evidemment, on peut créer plusieurs ancres dans une même page, le tout
étant de ne jamais donner la même valeur à deux id différents (sinon notre
lien ne pourrait pas savoir où ramener).
Essayer ce code
Note : si vous travaillez sous Windows, il est possible que rien ne se passe si
vous n’avez configuré aucune messagerie par défaut.
Dès qu’un visiteur clique sur le texte de notre lien, sa messagerie par défaut
s’ouvre s’il en a configuré une :
Essayer ce code
Le problème est que cet attribut a été créé très récemment et ne fonctionne
pas avec certains navigateurs majeurs, dont Safari entre autres.
L’inconvénient de cette deuxième méthode est que vous ne pouvez pas faire
télécharger un fichier HTML par exemple à vos visiteurs car le fichier va être
ouvert et donc interprété par le navigateur si ceux-ci cliquent directement sur
votre lien.
Le JPG ou JPEG ;
Le PNG ;
Le GIF ;
Le BITMAP.
Chaque format possède ses propres spécificités et il faut donc faire bien
attention au choix du format lorsqu’on enregistre une image.
Le PNG (Portable Network Graphic) est un format qui a été créé à l’origine
pour remplacer le format GIF. Le grand intérêt de ce format est qu’il gère la
transparence. Celui-ci a un très bon taux de compression tout en conservant
une bonne qualité d’image.
Finalement, le BITMAP (ou BMP) est un format qui possède une très bonne
prise en charge par tous les navigateurs et éditeurs.
En effet, lors de la mise en ligne de votre site web, vous allez louer un espace
serveur chez un hébergeur afin d’y envoyer toute l’architecture de votre site.
Le problème est que vous disposez d’un espace serveur et d'un débit limités.
Il vous faudra donc déjà faire attention à ne pas le saturer avec des images
inutilement lourdes.
Cela aura un effet négatif sur votre site puisque des visiteurs vont le quitter
plutôt que de patienter. Cette problématique est véritablement à considérer
aujourd’hui avec l’essor de l’Internet mobile car les connexions sont
beaucoup moins puissantes sur mobile.
Pour conserver des poids d’images minimaux tout en vous assurant des
images d’une qualité convenable, pensez donc bien à les enregistrer au bon
format et également à les recadrer à la bonne taille avant de les envoyer sur
votre serveur.
L’attribut src va fonctionner de la même manière que href . Ainsi, si vous
enregistrez votre image dans un dossier différent de votre page HTML, pensez
bien à en tenir compte dans la valeur donnée à src .
Comme vous pouvez le voir, notre image s’affiche bien à sa taille d’origine,
c’est-à-dire 150*150 pixels pour moi.
Nous verrons plus tard comment modifier la taille d’une image mais encore
une fois, si vous le pouvez, essayez de redimensionner l’image en soi avant
de l’utiliser dans une page web. Cela consommera moins de ressources.
Comme je vous l’ai précisé, on peut aussi préciser une adresse absolue
comme valeur pour notre attribut src .
Par exemple, si je souhaite afficher une image provenant d’un autre site,
j’utiliserai évidemment une adresse absolue.
Voici ci-dessous un exemple avec la première image que j’ai trouvé sur
Google en cherchant « Pixar Ratatouille ».
Vous pouvez essayer avec n’importe quelle image sur le web, cela
fonctionnera. Faites cependant attention à bien récupérer l’URL complète de
l’image ainsi qu’aux droits d’auteur !
Cependant, sachez que cela n’a pas toujours été le cas, loin s’en faut !
Pensez donc bien à toujours vérifier que votre code fonctionne normalement
sur les navigateurs les plus utilisés par vos visiteurs.
Les problèmes viendront heureusement très souvent des vieilles versions
d’Internet Explorer (< 9) qui ont quasiment disparu depuis quelques années.
< <
> >
& &
Vous vous rappelez également lorsque je vous ai dit qu’il n’existait pas en
HTML de possibilité simple de conserver les espaces au sein de notre code ?
Ce n’était pas tout à fait vrai. Nous allons pouvoir utiliser l’entité   (pour
« non-breaking space ») pour ajouter des espaces en HTML.
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 :
HTML : ici
CSS : ici
SELECTEURS ET PROPRIETES
CSS
Par exemple, si l’on souhaite par exemple appliquer un style particulier à tous
les paragraphes de notre page web, nous utiliserons le sélecteur CSS p .
Par exemple, nous allons pouvoir modifier la couleur d’un texte et lui
appliquer la couleur que l’on souhaite grâce à la propriété color (« couleur »,
en français).
Par exemple, la propriété color peut prendre le nom d’une couleur (en
anglais). Si l’on donne la valeur « red » (rouge) à notre propriété color , les
textes au sein des éléments HTML auxquels on applique cette propriété
s’afficheront en rouge.
Ensuite, vous remarquez que nous utilisons deux propriétés color (couleur)
et font-size (taille de la police d'écriture) pour modifier nos paragraphes.
Essayer ce code
Premières explications
Lorsque l’on code, vous devez bien vous dire que rien n’est « magique » : tout
le code que vous écrirez dans votre vie reposera sur des règles et des
mécanismes. Les connaître vous permettra de beaucoup mieux comprendre
ce que vous faîtes et comment faire telle ou telle chose.
Cependant, il va falloir d’une manière ou d’une autre « lier » notre code CSS à
notre code HTML afin que les éléments de nos pages HTML tiennent bien
compte des styles qu’on a voulu leur appliquer en CSS.
Pour faire cela, nous allons pouvoir écrire le code CSS à trois endroits
différents. Chaque méthode va présenter des avantages et des inconvénients
selon une situation donnée.
Ecrire le CSS dans un élément HTML style
La première façon d’écrire du code CSS va être à l’intérieur même de notre
page HTML, au sein d’un élément style .
De cette façon, le code CSS ne s’appliquera qu’à la page HTML dans laquelle
il a été écrit.
Cette première méthode d’écriture du CSS n’est pas recommandée, pour des
raisons de maintenance et d’organisation du code en général.
Nous la voyons dans ce cours à titre d’exemple, afin que vous sachiez
l’identifier si un jour vous voyez du code CSS écrit de cette façon dans un
fichier.
Essayer ce code
Pour faire cela, nous utiliserons cette fois-ci un attribut style (à ne pas
confondre avec l’élément style ). Cet attribut va prendre comme valeur les
différentes déclarations CSS relatives à l’élément.
Avec cette seconde méthode, les styles CSS ne s’appliqueront qu’à l’élément
au sein duquel est écrit le CSS.
Cette méthode d’écriture du CSS, bien qu’elle puisse parfois être pratique,
n’est également pas recommandée et est à éviter tant que possible.
Comme vous pouvez le voir ci-dessus, seul notre premier paragraphe a été
modifié cette fois-ci. C’est normal puisqu’aucun style CSS n’a été attribué à
notre deuxième paragraphe.
Essayer ce code
En effet, en utilisant l'une des deux premières méthodes, nous aurions été
obligés de réécrire tout notre code CSS pour chaque nouvelle page HTML
composant notre site.
Ici, nous allons pouvoir lier notre fichier CSS à autant de fichiers HTML que
nous le voulons. Ainsi, lorsque nous voudrons modifier, par exemple, la
couleur de tous les paragraphes, nous n’aurons à le faire qu’une fois pour
toutes.
Nous travaillons donc dorénavant avec deux fichiers : un fichier que j’ai
appelé cours.html et notre fichier styles.css .
Nous allons maintenant finalement devoir lier notre fichier CSS à notre fichier
HTML. Pour cela, nous allons utiliser un nouvel élément HTML :
l’élément link (« lien », en français).
Cet élément va avoir besoin de deux attributs : rel , qui va préciser le type de
fichier (dans notre cas, ce sera « stylesheet » pour feuille de style) et un
attribut href qui va indiquer l’adresse relative du fichier CSS.
On va placer l’élément link dans l’élément head de notre fichier HTML. Cet
élément prend la forme d’une balise orpheline.
Nos deux fichiers sont maintenant liés et les styles CSS vont bien être
appliqués aux éléments de notre page HTML.
Les commentaires n’influent une nouvelle fois en rien sur le code et ne sont
pas visibles par les utilisateurs.
Commenter le code CSS n’est pas une option : cela va très vite devenir
indispensable car vous allez vous rendre compte que les fichiers CSS
s’allongent très très vite.
Il est donc essentiel de bien organiser et de bien commenter son code CSS
afin de ne pas faire d’erreur en appliquant par exemple deux styles différents
à un même élément.
Ainsi, la déclaration CSS ne sera plus prise en compte. Vous n’aurez ensuite
plus qu’à enlever le commentaire pour la « réactiver ».
L’indentation en CSS
Indenter en CSS est également très important afin de conserver le plus de
clarté possible dans son code et de paraître professionnel si un jour vous
devez le distribuer.
Jusqu’à présent, nous n’avons vu que des sélecteurs CSS de type élément,
c’est-à-dire des sélecteurs qui ciblent un élément en se basant sur le nom de
l’élément.
Par exemple, le sélecteur p va cibler tous les éléments p (c’est-à-dire tous les
paragraphes) d’une page HTML.
Pour faire cela, c’est très simple, il suffit de séparer les différents sélecteurs
représentant les éléments auxquels on souhaite appliquer un style CSS
particulier par une virgule.
Ici, on applique une couleur bleue à tous nos paragraphes ainsi qu'à notre
titre principal d'un coup.
Essayer ce code
Le problème avec les sélecteurs de type élément est que nous allons être vite
limités : par exemple, comment appliquer une couleur différente à deux
paragraphes différents avec le sélecteur simple p ? Ce n’est tout simplement
pas possible, à moins de placer les déclarations CSS dans la balise ouvrante
des éléments, ce qui n'est pas recommandé.
Nous allons tout simplement écrire nos attributs id et / ou class à l’intérieur
de la balise ouvrante d’un élément HTML et leur attribuer une valeur.
Nous allons ensuite cibler cet élément en CSS en réutilisant cette même
valeur.
Comme d’habitude, les valeurs indiquées pour les attributs id et class ne
doivent contenir ni caractères spéciaux ni espaces et commencer par une
lettre.
Ainsi, on peut tout à fait donner la même valeur à un attribut class et id : il
n’y a aucun risque de confusion en CSS si vous faites bien attention à bien
faire précéder la valeur par le dièse ou le point.
Essayer ce code
En effet, rappelez vous de nos liens de type ancre. Il s’agit bel et bien du
même attribut id qu’on utilise aujourd’hui, avec des finalités différentes.
Notez qu’en cas de conflit, c’est le style du sélecteur le plus précis qui va être
appliqué. Par exemple, si vous donnez une class et un id à un même élément
HTML et que vous utilisez cette class et cet id pour définir deux couleurs
différentes, c’est la couleur de l’ id qui va s’imposer car l'attribut id permet
de cibler du code HTML plus précisément que l'attribut class .
Essayer ce code
Notez également que toutes les propriétés CSS ne s’appliquent pas à tous les
éléments HTML. Par exemple, cela n’aurait pas de sens de donner une
propriété color à un élément br puisque celui-ci ne représente pas un
contenu visible par l'utilisateur. Nous reparlerons de tout cela plus tard.
L’HERITAGE EN CSS
Par exemple, tous les éléments à l’intérieur de l’élément body sont des
enfants de cet élément. Si l’on applique un style à l’élément body , ses enfants
en hériteront automatiquement.
Ici, les éléments h1 , p et strong ont hérité des styles de leur parent body .
Ainsi, nos différents textes s’affichent en violet.
Priorité et ordre en CSS
Cette notion d’héritage est très puissante et très pratique en CSS.
On applique une couleur violette à notre élément body . Ainsi, tous les
éléments contenus dans body vont hériter de cette couleur par défaut sauf si
une autre couleur est définie entre temps.
C’est le cas pour les éléments de type p , auxquels on attribue une couleur
bleue. Ici, nous avons donc un premier conflit : nos paragraphes doivent-ils
hériter des styles définis avec le sélecteur body ou de ceux définis avec le
sélecteur p ?
La solution est simple : le sélecteur p cible de manière plus précise les
paragraphes que le sélecteur body , et le style défini dans le sélecteur p est
donc plus proche de nos paragraphes que celui défini dans body ; c'est donc
bien celui-ci qui sera appliqué.
Par défaut, tous nos paragraphes seront donc bleus, sauf si un style encore
plus proche leur est appliqué. C’est le cas pour notre paragraphe comportant
la class="para3" .
Pour le texte dans l’élément strong , celui-ci récupère le style le plus proche
de lui, c’est-à-dire celui qui lui est appliqué directement via le
sélecteur strong .
Rappelez vous que l’on peut écrire le code CSS à trois endroits différents :
Dans un élément style placé dans l’élément head d’un fichier HTML ;
Ensuite, ce sera le style écrit dans l’élément HTML style qui sera retenu.
Finalement, le style écrit dans un fichier CSS séparé sera retenu en dernier.
Notez qu'on va pouvoir outrepasser cette notion d'ordre en ajoutant la
mention "!important" à la fin d'une déclaration CSS qu'on veut imposer.
LES ELEMENTS HTML DE TYPE
BLOCK ET DE TYPE INLINE
Connaître le type d’un élément HTML va être essentiel pour créer et mettre
en forme nos pages web car les éléments de type block et inline vont se
comporter de façon radicalement différente dans une page et nous n'allons
pas forcément pouvoir leur appliquer les mêmes propriétés CSS.
Pour le moment, nous allons découvrir ensemble les différences entre les
éléments de type block et inline. Nous verrons plus en détail le côté pratique
lorsque nous étudierons le modèle des boîtes.
Les éléments de type block
Un élément de type block va toujours commencer sur une nouvelle ligne et
prendre toute la largeur disponible dans la page.
Essayer ce code
Ici, nous nous sommes contentés de créer une bordure autour de nos
éléments p grâce à la propriété CSS border (que nous étudierons plus en
détail plus tard).
Les éléments HTML de type block les plus communs sont les suivants :
L’élément p ;
Les élément de type inline prennent uniquement la largeur qui leur est
nécessaire (c’est-à-dire la largeur de leur contenu).
Les éléments HTML de type inline les plus communs sont les suivants :
L’élément a ;
L’élément img ;
En effet, nous n’allons pas pouvoir agir de la même manière en CSS pour
manipuler les éléments de type block et de type inline.
Valeur sémantique
Commençons par rappeler une nouvelle fois le rôle du HTML : structurer du
contenu et lui donner du sens.
A ce titre, les éléments HTML div et span sont un peu spéciaux puisqu’ils ne
possèdent aucune valeur sémantique, c’est-à-dire qu’ils ne servent pas à
donner du sens à un contenu.
Le fait que ces deux éléments n’apportent pas de sens à un contenu peut
faire penser qu’ils vont à l’encontre même du rôle du HTML. C’est à moitié
vrai, et c’est la raison pour laquelle on évitera tant que possible de s’en servir
généralement.
Toutefois, ces éléments, comme vous vous en doutez, n’ont pas été créés
pour rien. Les éléments div et span vont nous servir de conteneurs et
grandement faciliter la mise en forme d’une page HTML à des niveaux
différents.
La différence entre ces deux éléments est que le premier est de type block
tandis que le second est de type inline.
Ici, nous avons créé un div autour de nos deux paragraphes. Ensuite, nous
appliquons les styles CSS directement à notre div .
L’élément span sera souvent utilisé avec un attribut class afin de pouvoir le
cibler plus facilement en CSS.
Ici, nous appliquons une couleur de fond verte à notre élément div portant la
valeur « green », puis une couleur de fond bleue plus spécifiquement à notre
élément span .
FONT-FAMILY ET LES GOOGLE
FONTS
Vous devez savoir que tous les navigateurs, selon la version possédée par vos
visiteurs, ne supportent pas tous les mêmes polices.
Si vous renseignez un nom de police qui contient des espaces, vous devrez le
mettre entre guillemets ou apostrophes.
Voyons un premier exemple d’utilisation de font-family ensemble. On va
définir une même police pour toute notre page HTML en appliquant notre
propriété directement à l'élément body .
Essayer ce code
Voici une liste des web safe fonts les plus utilisées avec leur famille générique
associée :
Times New
Serif
Georgia
Arial,
Sans-serif
Verdana
Courier
Monospace
Lucida Console
Ces polices peuvent être utilisées sur n’importe quel site, le tout est de faire
un lien en HTML vers la police Google désirée puis de l’utiliser comme valeur
de notre propriété font-family en CSS.
Le grand intérêt des Google Fonts est qu’elles ne dépendent pas d’un
navigateur mais peuvent être lues par (quasiment) tous les navigateurs.
L’autre grand avantage est que vous pouvez faire votre choix parmi une très
longue liste de polices et ainsi totalement personnaliser l’écriture sur votre
site.
Pour utiliser les Google Fonts, il va tout d’abord nous falloir choisir une police
dans la liste proposée sur le site de Google dédié.
Pour ma part, je vais choisir la police « Open sans ». Cliquez sur le bouton «
quick use » pour obtenir le lien de la police.
Ensuite, il nous faut insérer notre lien dans une page HTML avec
l’élément link et il ne nous restera alors plus qu’à utiliser notre police en CSS
!
Dans cette partie, nous allons voir les propriétés de type font- les plus
utilisées :
Les tailles relatives vont cependant être moins faciles à gérer dans la mise en
forme globale d’une page (car si on ne prend pas de précautions, un texte
peut dépasser d’une partie de la page par exemple).
Faites bien attention : lorsque l’on code, nous utilisons les notations anglo-
saxonnes. Pensez donc bien à utiliser un point pour les chiffres décimaux à la
place de notre virgule.
italic (italique) ;
oblique (penché) ;
Essayer ce code
Les valeurs italic et oblique produisent souvent un résultat très similaire.
Sachez pour votre propre culture que toutes les polices ne supportent pas
l’état italique (certaines n’ont pas été conçues pour pouvoir être mises en
italique). Dans ces cas là, la valeur oblique va forcer l’inclinaison de la police
en question.
une centaine entre 100 (police très fine) et 900 (police très épaisse).
400 correspond à la valeur « normal » et 700 à « bold » ;
Une nouvelle fois, faites bien attention : certaines polices ne supportent pas
certains poids et donc ne supportent pas certaines valeurs.
COULEUR ET OPACITE D’UN
TEXTE EN CSS
La couleur en CSS
Nous allons changer la couleur d’un texte avec la propriété color , que nous
avons déjà vue auparavant dans ce cours.
Jusqu’à présent, nous n’avons donné que des noms de couleurs (en anglais)
comme valeurs à cette propriété.
Nous allons voir ce que signifie et comment utiliser chaque type de valeurs.
Le problème avec cette manière de procéder est que nous sommes très
limités dans le choix de nos couleurs.
En effet, bien que les versions récentes des grands navigateurs supportent
jusqu’à 160 couleurs et nuances différentes (ce qui est déjà peu), il n’y a que
16 qui soient réellement, universellement supportées.
Pour information, vous pouvez trouver ci-dessous ces 16 noms de couleurs
avec leur équivalent en notation hexadécimale (que nous allons étudier juste
après).
Comme je vous l’ai dit, il est très simple de modifier la couleur d’un texte en
indiquant le nom d’une couleur :
Essayer ce code
Le système hexadécimal va lui compter non pas par dizaines mais par
seizaines. Les « unités » de 10 à 15 vont être représentées par les lettres A,
B, C, D, E et F.
00 00
01 01
02 02
03 03
04 04
05 05
06 06
07 07
08 08
09 09
10 0A
11 0B
12 0C
13 0D
14 0E
15 0F
16 10
17 11
32 20
42 2A
Comme vous pouvez le voir, c’est juste une autre façon de compter à laquelle
nous ne sommes pas habitués. Ne vous formalisez pas trop là dessus.
Si je vous parle de tout cela, c’est parce que la propriété CSS color va
accepter justement des valeurs hexadécimales qui vont représenter une
couleur.
Le grand intérêt de ces valeurs est que nous allons cette fois-ci pouvoir
choisir parmi 16 millions de nuances de couleurs !
Pour construire une valeur hexadécimale pour la propriété color , vous devez
tout d’abord commencer par un dièse (#) afin de dire à la propriété que vous
allez utiliser une valeur hexadécimale.
Si vous êtes un peu perdu à ce stade, pas de panique, ne lâchez pas : nous
allons voir différents exemples afin que vous compreniez plus facilement.
Notre première couleur est un rouge pur. Comme vous pouvez le voir, la
notation hexadécimale qui a permis de la créer contient une intensité
maximale de rouge (les deux premiers chiffres : FF), une intensité minimale
de vert (les deux chiffres du milieu : 00) et une intensité également minimale
de bleu (les deux derniers chiffres : 00).
Notre deuxième couleur est un jaune pur. On l’obtient en mixant une intensité
maximale de rouge (les deux premiers chiffre : FF), une intensité maximale
de vert (les deux chiffres du milieu : FF) et une intensité minimale de bleu (les
deux derniers chiffres : 00).
Vous pouvez alors tenter quelque chose comme #FF8800 par exemple, et
vous obtiendrez à coup sûr une nuance d’orange. Vous n’aurez ensuite plus
qu’à affiner les intensités jusqu’à arriver à la couleur voulue.
Notez que la couleur noire correspond à une intensité minimale de rouge, vert
et bleu (donc #000000) tandis que la couleur blanche correspond à une
intensité maximale de rouge, vert et bleu (donc #FFFFFF).
Pour créer une couleur RGB, nous allons à nouveau devoir indiquer trois
intensités de rouge, de vert et de bleu qui vont être mixées pour créer une
couleur. La différence est que cette fois-ci nous indiquons bien l’intensité
entre 0 et 255, et non pas entre 00 et FF.
Voici comment on va créer nos couleurs en utilisant les valeurs de type RGB :
Essayer ce code
Cette quatrième valeur, tout comme pour opacity , doit être comprise entre 0
(texte transparent) et 1 (texte opaque).
A la différence des propriétés de type font- , les propriétés de type text- ne
sont pas dépendantes de la police utilisée.
La propriété text-indent accepte aussi bien des valeurs absolues (en px par
exemple) que des valeurs relatives (en % ou em par exemple). On peut
également lui attribuer des valeurs négatives afin de décaler un texte vers la
gauche.
Essayer ce code
A noter que les valeurs des espaces précisées pour letter-spacing et word-
spacing viendront s’ajouter à l’espace par défaut.
Pour enlever une partie de l’espace ou même inverser les lettres ou les mots,
on peut donner des valeurs négatives.
Le modèle des boîtes nous dit que « tout élément HTML peut être considéré
comme une boîte rectangulaire », qu’il soit de type block ou inline.
Grâce au modèle des boîtes, nous allons comprendre comment définir des
marges intérieures et extérieures et des bordures autour du contenu de
l’élément. Nous allons également pouvoir positionner les éléments les uns par
rapport aux autres de manière efficace.
Vous pouvez déjà voir ci-dessous un exemple plus pratique avec un élément
HTML div . Ne vous préoccupez pas trop des différentes propriétés CSS
utilisées pour le moment : nous allons les voir une par une dans la suite de
cette partie.
Pour l’instant, contentez vous de bien distinguer les différentes boîtes autour
de notre élément div .
LA LARGEUR (WIDTH) ET LA
HAUTEUR (HEIGHT) EN CSS
La largeur d’un élément, en revanche, est avant tout déterminée par son type
: en effet, les éléments de type block occuperont par défaut tout l’espace
disponible. Les éléments de type inline, en revanche, n’occuperont que la
largeur nécessaire à leur contenu.
Cette propriété peut prendre des valeurs absolues, relatives (utiles dans le
cas d’un site responsive) ou la valeur « auto » (la hauteur sera calculée
automatiquement par le navigateur).
Pour modifier la largeur par défaut d’un élément, nous allons cette fois-ci
utiliser la propriété width . Cette propriété peut prendre les mêmes valeurs
que la propriété height .
En effet, vous devez bien vous rappeler que vous ne définissez que la hauteur
et la largeur du contenu de l’élément en soi. Les tailles des marges
intérieures, extérieures et des bordures viendront s’ajouter à cette hauteur et
à cette largeur afin de former la taille totale de l’élément.
Si vous ne faîtes pas attention, vous risquez de créer des éléments plus
grands au final que leurs éléments parents, ce qui est généralement
considéré comme une mauvaise pratique en HTML et en CSS.
Essayer ce code
Dans l’exemple ci-dessus, j’ai donné une largeur égale à 400px au pargraphe
portant l'attribut class="para1" . Cependant, j’ai également défini des marges
intérieures de 60px de chaque côté ainsi qu’une bordure de 5px.
Mon élément p fait donc au final 400 + 2*60 + 2*5 = 530px de large, soit
30px de plus que le div , son élément parent , ce qui fait qu'il déborde !
Comme vous pouvez le voir, il est identique d’utiliser les trois propriétés de
type border- ou directement la propriété border avec les trois valeurs
requises.
Vous pouvez voir dans l’image ci-dessous les différentes valeurs possibles
ainsi que l’apparence donnée à la bordure.
Les valeurs les plus couramment utilisées sont solid, dotted et dashed. Faîtes
attention avec les valeurs groove, ridge, inset et outset qui restent parfois
encore mal supportées par certains navigateurs. Ces quatre dernières valeurs
sont censées ajouter un effet 3D à nos bordures.
Nous allons pouvoir créer des bordures arrondies avec la propriété border-
radius . Cette propriété va prendre une valeur en pixels qui va correspondre à
Encore une fois, on va pouvoir définir des bordures plus ou moins arrondies
de chaque côté d’un élément HTML, cette fois-ci en utilisant les mots
clefs top-right , bottom-right , bottom-left , top-left .
LES MARGES EN CSS
Notez que l’on va pouvoir définir des marges intérieures haute, droite, basse
et gauche de tailles diverses avec padding-top , padding-right , padding-
bottom et padding-left .
Essayer ce code
Cette propriété accepte en valeurs des valeurs absolues, relatives, ainsi que
les valeurs inherit ou auto. Cette dernière valeur, auto, va souvent nous être
utile pour centrer horizontalement un élément par rapport à un élément
parent.
Une nouvelle fois, nous allons pouvoir définir des marges extérieures haute,
droite, basse et gauche d’importances diverses grâce à margin-top , margin-
right , margin-bottom et margin-left .
Essayer ce code
Pour cela, nous allons tout simplement enchaîner les quatre valeurs à la suite.
La première valeur correspond à la marge haute, la seconde à la marge
droite, la troisième à la marge basse et la dernière à la marge gauche.
La propriété box-shadow
Nous allons pouvoir créer des ombres autour de nos boîtes (à l’extérieur ou à
l’intérieur des bordures) grâce à la propriété CSS box-shadow .
Pour l’ombre autour de notre premier paragraphe, nous avons cette fois-ci
indiqué des déplacements horizontal et vertical négatifs, ce qui a pour effet
de projeter notre ombre en haut à gauche plutôt qu’en bas à droite.
Enfin, nous utilisons la valeur inset pour l’ombre de notre second paragraphe
afin de créer une ombre intérieure plutôt qu’extérieure.
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.
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.
Essayer ce code
Ici, nous avons appliqué une bordure à nos 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.
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.
Display : none
Finalement, 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.).
LE POSITIONNEMENT EN CSS
La propriété CSS position supporte quatre valeurs différentes que nous allons
étudier dans cette partie :
static ;
relative ;
fixed ;
absolute.
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.
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 .
Essayer ce code
Position : relative
Un élément positionné grâce à position:relative va être repositionné
relativement par rapport à sa position par défaut.
Essayer ce code
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.
Essayer ce code
Ici, nous avons appliqué une position:fixed à notre titre et l’avons placé en
haut de notre page, à 200 pixels vers la droite. Notez que nous avons ajouté
des espaces dans notre page pour tester la propriété CSS position .
Comme vous pouvez le voir, lorsque l’on descend dans la page, notre
titre h1 conserve sa 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).
Le z-index
La propriété position nous permet de modifier et de casser le flux normal des
éléments HTML dans la page en les positionnant où l’on souhaite dans la
page.
On peut inverser l’ordre de ces éléments en indiquant un z-index avec une
valeur plus grande pour notre h1 que pour notre div comme ceci :
Essayer ce code
La propriété z-index va être particulièrement utile dans le cas d’un menu
déroulant (afin que les rubriques s’affichent devant le reste de la page) ou
pour l’affichage de produits dans le cas d’un site e-commerce complexe par
exemple dans lequel de nombreux div et autres éléments HTML risquent de
se chevaucher.
FLOAT ET CLEAR
La propriété float
La propriété float va nous permettre de faire « flotter » des éléments HTML à
gauche ou à droite dans une page web.
On fait ensuite flotter notre élément div sur la droite. Celui-ci se positionne
donc bien par défaut sur la « même ligne » (imaginaire) que h1 mais à droite
de notre page.
Finalement, on fait flotter notre premier paragraphe à droite dans notre div .
Cela a pour effet de placer notre deuxième paragraphe sur la même ligne que
le premier… et sur sa gauche !
Faîtes bien attention à appliquer le clear à l’élément qui va venir flotter par
défaut autour de l’élément flottant, pas à celui qui possède la propriété float .
Essayer ce code
Dans l’exemple ci-dessus, nous avons fait flotter notre titre h1 sur la gauche.
Par défaut, le div en dessous du h1 dans notre code HTML va venir se placer
sur la même ligne que notre titre et donc se placer autour de notre h1 .
Essayer ce code
Initial et inherit.
ALIGNEMENT EN CSS
Aligner des éléments HTML grâce au CSS
Il existe différentes méthodes en CSS nous permettant d’aligner
horizontalement ou de centrer des éléments HTML.
Dans cette dernière partie consacrée au modèle des boîtes, nous allons voir
trois manières couramment utilisées pour aligner ou centrer des éléments
HTML dans une page :
Cette partie de comporte pas de nouvelles propriétés CSS. Nous allons voir ou
revoir comment exploiter à leur maximum des propriétés déjà vues
précédemment.
Attention cependant : rappelez vous que l’élément à centrer doit être de type
block et posséder une largeur définie pour pouvoir être centré correctement.
Essayer ce code
Notez bien que lorsque vous centrez un élément de type block
horizontalement dans une page, c’est bien l’élément en soi (c’est-à-dire tout
le bloc) qui est centré dans la page.
Lorsque vous centrez des éléments HTML de cette façon, pensez bien à
effectuer un « reset CSS », sur votre page, c’est-à-dire à définir des marges
intérieures et extérieures sur votre élément body égales à 0px afin d’éviter
des différences d’affichage entre navigateurs.
Une petite astuce : vous pouvez également centrer horizontalement un
élément en utilisant la propriété position . Pour cela, il vous suffit d’attribuer
la même valeur, en pourcentage, aux propriétés left et right .
Cependant, afin que cela fonctionne parfaitement, pensez cette fois à ne pas
donner de largeur définie à l’élément HTML ciblé (celui-ci va se recadrer de
lui-même selon la valeur attribuée à left et à right et la place disponible).
Essayer ce code
Grâce à cette propriété, nous allons tout aussi bien pouvoir rajouter une
couleur derrière un texte ou une couleur de fond pour toute une page en
l’appliquant à l’élément body .
Ensuite, nous avons indiqué des couleurs de fond différentes pour notre titre
et notre élément div . Rappelez vous bien qu’en CSS, en cas de conflit sur une
propriété, c’est toujours la propriété appliquée à l’élément le plus proche de
l’élément en question qui est appliquée.
IMAGES DE FOND EN CSS
Nous utilisons ici encore une fois une adresse relative, pensez donc à adapter
la valeur de l'url si votre image se trouve dans un dossier différent de votre
page de code.
Vous pouvez également utiliser une image déjà présente sur le web en fond
en précisant cette fois-ci une adresse absolue (l’url complète de l’image) en
valeur de la propriété background-image . Cependant, cela n’est pas
recommandé car si le site web supprime ou modifie le nom ou l’emplacement
de l’image votre fond ne s’affichera plus.
On remarque également que votre image de fond, si elle est plus petite que
l’élément auquel on l’applique, va se répéter par défaut pour « remplir » tout
le fond de l’élément. Pas d’inquiétude, nous allons apprendre à changer ce
comportement immédiatement.
Cependant, il arrive que nous n’ayons pas le choix et que nous devions
redimensionner une image à postériori. Dans ces cas là, vous pouvez utiliser
la propriété background-size .
Cette propriété peut prendre deux valeurs différentes : fixed (pour fixer le
fond) et scroll (valeur par défaut).
Ici, l’image reste fixée en haut à gauche de l’écran même lorsqu’on descend
dans la page.
Nous allons apprendre à placer plusieurs images de fond par la suite, pour le
moment concentrons nous sur la position de notre image seulement.
Pour faire cela, il va suffire de séparer les déclarations pour chaque image par
une virgule pour chacune de nos propriétés.
Imaginons par exemple que l’on souhaite attacher deux images de fond à
notre élément body . Je commence pour cela par placer une deuxième image
(que j’appelle « image-2.png ») dans le même dossier.
Notez que si nous n’avions pas précisé de valeur pour le background-
position pour nos images de fond, nos deux images auraient été l’une sur
Il existe deux types de dégradés : les dégradés linéaires (de la gauche vers la
droite par exemple) et les dégradés radiaux (à partir d’un point central).
Nous allons pour le moment nous concentrer sur les dégradés linéaires et
étudierons les dégradés radiaux par la suite.
Pour créer un dégradé linéaire en CSS, nous allons utiliser la
propriété linear-gradient .
Cependant, les dégradés sont une fonctionnalité assez récente proposée par
le CSS, ce qui signifie que la compatibilité risque de ne pas être parfaite avec
les navigateurs de certains de vos visiteurs.
Afin d’être parfaitement exhaustif, je dois donc vous présenter les préfixes
vendeurs.
Les préfixes vendeurs sont des mots clefs qui ont été créés afin d’optimiser
artificiellement la compatibilité de certaines propriétés CSS avec certaines
versions de navigateurs.
Les préfixes, comme leur nom l’indique, vont devoir être précisés avant
l’emploi de la propriété « qui peut poser problème ».
Quasiment chaque navigateur possède son préfixe vendeur. Voici la liste des
principaux :
Nous allons donc utiliser ces préfixes avec la propriété linear-gradient afin
que celle-ci fonctionne normalement avec les anciennes versions des
navigateurs cités ci-dessus.
Ensuite, le navigateur de vos visiteurs « choisira » lui même quelle « version »
de la propriété utiliser.
La propriété linear-gradient est un peu spéciale car elle va devoir elle même
être utilisée à l’intérieur de la propriété background (en réalité, linear-
gradient n'est pas tout à fait une propriété CSS mais on va la considérer en
Le problème étant que selon le préfixe vendeur utilisé, un même mot clef ou
angle ne signifie pas la même chose.
Par exemple, la syntaxe commune (c’est-à-dire sans préfixe vendeur, pour les
versions récentes des navigateurs) pour un dégradé vers la droite est « to
right ».
Cependant, avec les préfixes vendeurs –moz- et –o-, la syntaxe sera
simplement « right » tandis qu’avez –webkit- il faudra préciser… le contraire,
c’est-à-dire « left ».
Cela doit peut être vous sembler un peu obscur pour le moment, nous allons
donc voir différents exemples ensemble.
chaque navigateur puisse utiliser la version qui lui convient. Il faudra toujours
préciser la version non préfixée de linear-gradient en dernier.
Notez également une nouvelle fois l’utilisation de mots clefs différents afin
que tous les navigateurs comprennent bien la même direction pour notre
dégradé.
Ici, notre dégradé se déplace du coin supérieur gauche vers le coin inférieur
droit.
On peut encore utiliser des angles comme direction de nos dégradés. A noter
que 180deg est la valeur par défaut, c’est-à-dire que cela crée un dégradé du
haut vers le bas.
Essayer ce code
La propriété radial-gradient
La propriété radial-gradient va donc nous servir à créer des dégradés
radiaux. On va une nouvelle fois l’utiliser de concert avec background .
Pour tester ce nouveau type de dégradé, nous allons plutôt cette fois-ci créer
un div dédié car, si on applique un dégradé radial à notre élément body , le
rendu risque d'être très mauvais. Nous allons donc également donner une
taille définie à ce div .
Essayer ce code
Nous venons donc tout simplement de créer notre premier dégradé radial de
forme circulaire. Ce dégradé utilise trois couleurs : le bleu, le violet et le
rouge.
Concernant les mots clefs nous permettant de gérer la taille du dégradé, nous
pouvons choisir entre :
Ici, notre premier dégradé « deg1 » possède un centre situé à 20% du bord
gauche de son élément conteneur et à 40% de bord haut. De plus, on
demande au dégradé de toucher le ou les côtés les plus proches de son
centre avec le mot clef closest-side.
Remarquez bien la différence de syntaxe entre la propriété préfixée et
l’écriture non-préfixée. Dans ce dernier cas, il faut ajouter un « at » et définir
ensemble la position et la taille du dégradé.
On fait de même pour notre dégradé « deg2 » sauf que cette fois-ci on lui
demande de toucher le ou les côtés les plus éloignés de son centre.
Dans les deux cas, on crée une démarcation assez nette entre le violet et le
rouge à 90% de la taille du dégradé afin de bien observer les effets de notre
positionnement et de nos mots clefs.
La propriété radial-gradient
La propriété radial-gradient va donc nous servir à créer des dégradés
radiaux. On va une nouvelle fois l’utiliser de concert avec background .
Pour tester ce nouveau type de dégradé, nous allons plutôt cette fois-ci créer
un div dédié car, si on applique un dégradé radial à notre élément body , le
rendu risque d'être très mauvais. Nous allons donc également donner une
taille définie à ce div .
Essayer ce code
Nous venons donc tout simplement de créer notre premier dégradé radial de
forme circulaire. Ce dégradé utilise trois couleurs : le bleu, le violet et le
rouge.
Concernant les mots clefs nous permettant de gérer la taille du dégradé, nous
pouvons choisir entre :
Ici, notre premier dégradé « deg1 » possède un centre situé à 20% du bord
gauche de son élément conteneur et à 40% de bord haut. De plus, on
demande au dégradé de toucher le ou les côtés les plus proches de son
centre avec le mot clef closest-side.
On fait de même pour notre dégradé « deg2 » sauf que cette fois-ci on lui
demande de toucher le ou les côtés les plus éloignés de son centre.
Dans les deux cas, on crée une démarcation assez nette entre le violet et le
rouge à 90% de la taille du dégradé afin de bien observer les effets de notre
positionnement et de nos mots clefs.
CREER UN TABLEAU SIMPLE
EN HTML
Pour créer un tableau simple, nous allons avoir besoin de trois éléments HTML
:
Ainsi, les tableaux en HTML vont être construits ligne par ligne, et cellule par
cellule en ajoutant des éléments td à l'intérieur d'éléments tr . Des colonnes
vont se créer automatiquement dès que l’on va insérer au moins deux
éléments td à l’intérieur d’un élément tr .
Cependant, pour l’instant, cela ne ressemble pas à l’idée que l’on se fait d’un
tableau, je vous l’accorde.
Cela est parfaitement normal puisque nous n’avons pas encore mis notre
tableau en forme grâce au CSS, en ajoutant des bordures par exemple.
Pourtant, au sens du HTML, c’est déjà un tableau.
Nous allons donc maintenant utiliser le CSS pour mettre notre tableau en
forme.
Nous avons donc maintenant des bordures autour de chacune des cellules de
notre tableau. Il ne nous reste plus qu’à coller ces bordures entre elles afin
d’obtenir un premier rendu correct.
Essayer ce code
Une nouvelle fois, faîtes bien attention à bien appliquer border-collapse à
l’élément table et non pas aux éléments td .
Ici, on attribue des class différentes selon que la ligne soit « impaire » (1ère
ligne, 3ème ligne, etc.) ou « paire » (2ème ligne, 4ème ligne, etc.) puis on
attribue une couleur de fond à chaque type de ligne afin de créer une
alternance de couleur. Simple mais efficace !
CREER UN TABLEAU
STRUCTURE EN HTML
Par exemple, dans notre tableau créé dans la partie précédente, notre ligne
d’en-tête est celle qui contient les cellules « nom », « prénom » et « âge »,
qui indiquent bien le type de données de chaque colonne.
Pour créer une ligne d’en-tête en HTML, nous allons cette fois-ci devoir utiliser
l’élément th , pour « table head » ou « en-tête du tableau » en français à la
place de nos éléments td dans notre première ligne.
Ici, on s’est contenté de changer la couleur de notre texte dans notre ligne
d’en-tête ainsi que la couleur de fond de cette ligne et le poids par défaut du
texte, afin de mieux le faire ressortir.
Pensez bien surtout à appliquer vos bordures et votre padding à vos
éléments th aussi bien qu’à vos éléments td !
Pour définir chaque partie d’un tableau, nous disposons d'un élément HTML
spécifique :
Nous allons ainsi pouvoir combiner plusieurs cellules adjacentes d’une même
ligne ou d’une même colonne entre elles grâce aux attributs
HTML colspan et rowspan .
Voyons déjà comment combiner plusieurs cellules d’une même ligne entre
elles, c’est à dire comment combiner plusieurs colonnes finalement
avec colspan .
Pour faire cela, nous allons utiliser un tableau simple avec une mise en forme
CSS minimale.
Essayer ce code
Notre but va donc être d'utiliser l'attribut colspan afin que l'ensemble des
cellules constituant chaque ligne occupent la place de cinq colonnes à chaque
fois pour uniformiser le tableau.
La seule chose à laquelle vous devez faire attention ici est de bien adapter le
nombre d'éléments th ou td de chaque ligne selon le nombre de cellules
fusionnées.
Pour fusionner des cellules d’une même colonne appartenant donc à
différentes lignes, nous allons nous y prendre de la même façon mais en
utilisant cette fois-ci l’attribut HTML rowspan .
Essayer ce code
Lorsque vous utilisez rowspan , faites bien attention une nouvelle fois à
compter le nombre de cellules par ligne. Si une cellule occupe deux lignes,
par exemple, il faudra donc en déclarer une de moins pour la deuxième ligne.
Pour ajouter une légende, nous allons utiliser l’élément HTML caption . Cet
élément est très simple d’utilisation, mais il faut respecter une règle : il doit
être inséré immédiatement après la balise ouvrante de l’élément table .
LES IMAGES EN HTML ET EN
CSS
Pour rappel, l’élément img est représenté par une balise orpheline et possède
deux attributs obligatoires : l'attribut src , qui sert à indiquer le chemin (relatif
ou absolu) de l’image, et l'attribut alt qui sert à décrire l’image, dans le cas
où l'utilisateur ne pourrait pas la voir.
Commençons donc par placer une image dans le même dossier que notre
fichier HTML et essayons de l’afficher. Pour ma part, mon image s’appelle «
coucher-soleil.png ».
Mon image, sans surprise, s’affiche convenablement.
Une petite astuce ici : en ne modifiant que l’un des deux paramètres de
l’image, le second va se mettre automatiquement à l’échelle.
En revanche, si vous souhaitez modifier la largeur et la hauteur, faites bien
attention à ne pas trop « casser » les proportions initiales de l’image pour un
rendu visuel optimal.
Première méthode, on peut déjà commencer par placer nos images au sein
d'un élément div ou p , tous deux de type block :
Deuxième méthode, on peut utiliser la propriété display :
Dernière méthode, nous pouvons encore utiliser les
propriétés float et clear :
Créer un cadre autour de nos images
Afin d’améliorer l’esthétique de nos images, nous pouvons utiliser les
propriétés vues dans la partie concernant le modèle des boîtes pour créer un
cadre autour de nos images et les faire ressortir.
Ici, nous commençons par définir une bordure grise et fine autour de notre
image grâce à la propriété CSS border .
Ensuite, nous utilisons la propriété padding afin d'éloigner notre image en soi
de sa bordure, et ainsi de créer un cadre blanc autour de notre image.
Finalement, nous créons une ombre centrée et très diffuse autour de notre
image avec la propriété box-shadow . Cela nous permet de faire ressortir notre
image et sa bordure du reste de la page.
INSERER DU CONTENU AUDIO
EN HTML
Un problème de formats
Pour insérer du contenu audio dans un document HTML, nous allons
utiliser l’élément HTML audio .
Le problème, c’est que la prise en charge de l’audio par le HTML est assez
récente (cela date du HTML5).
Ainsi, tandis qu’il existe différents formats audio (tout comme il existe
différents formats d’image), aucun de ces formats n’est reconnu de façon
universelle par les vieilles versions des principaux navigateurs.
Il va donc nous falloir insérer plusieurs fois la même piste audio sous
différents formats afin d’être sûr d’avoir une bonne prise en charge de notre
fichier par les navigateurs principaux utilisés par vos visiteurs.
Navigateur MP3 O
Chrome Oui O
Safari Oui No
Comme vous pouvez le voir, les dernières versions des navigateurs les plus
connus supportent toutes le mp3. Cependant, je vous conseille d’utiliser au
moins deux formats pour vos visiteurs utilisant d’anciennes versions, afin
encore une fois de maximiser la compatibilité.
Nous allons très simplement enregistrer cet audio dans le même dossier que
notre fichier HTML, afin encore une fois de faciliter la création de lien avec
celui-ci. Dans mon cas, les deux versions de mon fichier s’appellent «
magic.mp3 » et « magic.ogg »
De plus, nous allons écrire un texte dans notre élément audio qui ne sera
affiché que si aucun fichier audio n’a pu être lu.
Comme vous pouvez le voir, c’est rudimentaire, mais ça fonctionne.
Notez que seul l’attribut preload a absolument besoin d'une valeur, car tous
les autres ne possèdent qu’une valeur qui est donc utilisée par défaut.
Cependant, c'est une bonne pratique de toujours préciser une valeur pour un
attribut même lorsque celle-ci est évidente, et je vous recommande donc de
le faire.
Un problème de formats
Pour insérer du contenu audio dans un document HTML, nous allons
utiliser l’élément HTML audio .
Le problème, c’est que la prise en charge de l’audio par le HTML est assez
récente (cela date du HTML5).
Ainsi, tandis qu’il existe différents formats audio (tout comme il existe
différents formats d’image), aucun de ces formats n’est reconnu de façon
universelle par les vieilles versions des principaux navigateurs.
Il va donc nous falloir insérer plusieurs fois la même piste audio sous
différents formats afin d’être sûr d’avoir une bonne prise en charge de notre
fichier par les navigateurs principaux utilisés par vos visiteurs.
Navigateur MP3 O
Chrome Oui O
Safari Oui No
Opera Oui O
Comme vous pouvez le voir, les dernières versions des navigateurs les plus
connus supportent toutes le mp3. Cependant, je vous conseille d’utiliser au
moins deux formats pour vos visiteurs utilisant d’anciennes versions, afin
encore une fois de maximiser la compatibilité.
Utilisation de l’élément HTML audio et de ses
attributs
Pour commencer, vous allez devoir vous munir d’une piste audio. Dans l’idéal,
vous devrez enregistrer cette piste sous deux formats différents, disons mp3
et ogg.
Nous allons très simplement enregistrer cet audio dans le même dossier que
notre fichier HTML, afin encore une fois de faciliter la création de lien avec
celui-ci. Dans mon cas, les deux versions de mon fichier s’appellent «
magic.mp3 » et « magic.ogg »
De plus, nous allons écrire un texte dans notre élément audio qui ne sera
affiché que si aucun fichier audio n’a pu être lu.
Comme vous pouvez le voir, c’est rudimentaire, mais ça fonctionne.
Notez que seul l’attribut preload a absolument besoin d'une valeur, car tous
les autres ne possèdent qu’une valeur qui est donc utilisée par défaut.
Cependant, c'est une bonne pratique de toujours préciser une valeur pour un
attribut même lorsque celle-ci est évidente, et je vous recommande donc de
le faire.
Pour la vidéo, nous allons retrouver ce problème, étant donné qu’une vidéo
est composée d’un codec audio, d’un codec vidéo et d’un conteneur
rassemblant ces deux éléments.
Une nouvelle fois, il va donc être conseillé d’utiliser différents formats vidéo
afin de s’assurer une bonne compatibilité avec les navigateurs les plus
utilisés par vos visiteurs.
Navigateur MP4 Og
L’élément video va également posséder quelques attributs qui lui sont
propres, notamment l’attribut poster qui va nous permettre d’afficher une
image de fond avant que la vidéo ne soit lancée.
INTEGRATION ET
SEMANTIQUE : YOUTUBE,
FIGURE ET FIGCAPTION
L’alternative YouTube
Si vous ne souhaitez pas vous embêter à créer différents formats de pistes
audio ou de vidéo et à gérer le tout en HTML, vous disposez d’une autre
alternative : télécharger votre audio ou votre vidéo sur un site comme
YouTube, Dailymotion ou Vimeo puis intégrer le contenu sur votre site.
Pour intégrer une vidéo préalablement postée sur YouTube, par exemple, il
vous suffit de vous rendre dans l’onglet « partager » de la vidéo puis de
choisir « intégrer ». Vous n’aurez alors plus qu’à copier-coller le code
d’intégration dans votre page HTML, à l’endroit voulu.
Bien évidemment, vous pouvez modifier les valeurs des attributs de l’élément
HTML iframe ou tout simplement les supprimer, selon comment vous
souhaitez afficher votre vidéo sur votre site.
On va utiliser l’élément HTML figure pour indiquer qu’une image, une piste
audio ou vidéo n’est pas strictement décorative, mais sert à la
compréhension générale de notre page web. On n’utilisera donc pas cet
élément si nos contenus ne sont là que pour habiller la page.
Par exemple, pour définir une bordure, nous avons deux façons de faire : soit
on utilise les trois propriétés CSS border-width , border-style et border-
color (notation long hand), soit on utilise la propriété border (qui correspond
donc à la notation short hand) avec les valeurs des trois propriétés
précédentes.
Les notations short hand ont l’avantage d’être plus rapides à écrire, de
consommer moins de ressources et d’être également finalement plus lisibles.
Je vous encourage donc à les utiliser.
Dans la suite de cette partie, nous allons voir quelques unes des notations
short hand les plus utilisées.
Comme vous pouvez le voir ci-dessus, nous devons juste donner les valeurs
des différentes propriétés dans l’ordre que je vous ai donné à font pour que
cette propriété fonctionne.
Faîtes bien attention à l'utilisation des notations short hand : vous devrez
toujours suivre un ordre précis d'écriture des différentes valeurs.
Notez également que l'on doit ici séparer les deux valeurs en pixels par un
slash.
Grâce à eux, nous allons par exemple pouvoir sélectionner tous les éléments
d’une page HTML, sélectionner un élément par rapport à son parent ou
encore sélectionner un élément selon la valeur de son attribut.
Ici, seul notre dernier paragraphe possède une couleur de fond car c’est bien
le seul élément p de même niveau qu’un élément div et suivant directement
un élément div (les autres paragraphes sont des éléments enfants de nos
éléments div ).
Ici encore, nous n’allons voir que les sélecteurs assez courants.
:visited va nous permettre de styliser un lien une fois celui-ci visité.
Cependant, comme cet état a souvent été utilisé dans le passé par des
utilisateurs malveillants pour exploiter des failles, les navigateurs
modernes vont ignorer la plupart des règles données en CSS ;
:hover va nous permettre de changer l’aspect d’un élément lorsque vos
Nous allons pouvoir indiquer entre les parenthèses de cette pseudo classe
soit un nombre, soit un mot clef.
Cette pseudo classe CSS n'est pas forcément la plus évidente à comprendre.
Nous allons voir son fonctionnement à travers différents exemples.
Essayer ce code
Par exemple, dans mon exemple précédent, l'élément body possède en tout
cinq enfants : un titre h1 , un titre h2 , deux éléments p et un élément div .
Notre élément div possède à son tour trois enfants : un titre h2 et deux
éléments p .
Je commence par utiliser ma pseudo classe pour mettre en violet tous mes
paragraphes qui sont des enfants pairs d'un certain élément HTML, quel qu'il
soit (grâce au mot clef "even" qui signifie "pair" en anglais).
Ensuite, je veux que tous mes éléments h2 qui sont le deuxième enfant d'un
élément HTML s'affichent en vert. Ce n'est le cas que de mon premier titre h2 .
La majorité d’entre elles vont servir à cibler des types d’éléments présents
dans les formulaires HTML, et ne sont donc pas intéressantes à connaître
pour le moment.
Il est possible que vous croisiez encore des pseudo éléments CSS écrits avec
seulement « : » (un deux-points). Ceci est une ancienne syntaxe, vouée à
disparaître.
Il n’existe que cinq pseudo éléments en CSS, que nous allons étudier dans
l’ordre :
HTML.
A noter que le pseudo élément ::first-letter ne peut être appliqué qu’à des
éléments HTML de type block.
De plus, ce pseudo élément ne supporte pas toutes les propriétés CSS mais
peut être utilisé avec les suivantes (liste non exhaustive) :
La propriété border ;
La propriété margin ;
La propriété padding ;
La propriété vertical-align ;
La propriété line-height ;
La propriété border ;
La propriété vertical-align ;
La propriété line-height ;
La propriété clear .
Ce pseudo élément supporte les propriétés CSS color et background ainsi
que cursor et outline .
Essayer ce code
Ces pseudo éléments ne vont peut être pas vous sembler très utile pour le
moment, mais lorsque vous aurez emmagasiné de nouvelles connaissances
en HTML, CSS et JavaScript, vous comprendrez toute la puissance de ceux-ci.
En utilisant des sprites, une seule requête sera envoyée au serveur et cela
optimisera les performances de votre site.
Plutôt que d’enregistrer les logos des réseaux sociaux qui nous intéressent
séparément, on va tous les enregistrer côte-à-côte, sur la même image,
comme ceci :
On place ensuite notre image dans le même dossier que nos fichiers HTML et
CSS.
Ensuite, nous allons simplement créer nos liens en HTML et leur appliquer la
propriété background afin d’y ajouter notre image cliquable.
L’idée va alors être de ne récupérer que le logo qui nous intéresse dans notre
sprite d’image pour chaque lien et nous allons évidemment faire cela en CSS.
Commencez donc par vous munir d’une image contenant différents logos de
réseaux sociaux, puis renommez la « logos-sociaux.png » par exemple afin
que nous travaillions tous avec les mêmes bases.
Ensuite, nous allons créer nos liens en HTML en donnant un id à chaque lien
afin de pouvoir ensuite le cibler précisément en CSS.
Pour notre exemple, nous n’allons créer des liens que vers les réseaux
sociaux Facebook, Twitter et LinkedIn.
Finalement, nous allons utiliser le CSS pour mettre seulement le bon « bout »
d’image en fond de chaque lien.
Pour cela, la solution la plus simple va être de déclarer nos liens comme des
éléments block afin de pouvoir leur donner une taille en pixels puis de
positionner l’image de fond.
Ici, je sais que mes petits logos ont une taille d’environ 50*50 pixels. Je donne
donc la même taille à tous mes liens afin de ne récupérer qu’un bout de
50*50 pixels de notre sprite CSS à chaque fois.
Par exemple, pour afficher le logo de Twitter, je sais qu’il faut se déplacer de
50px vers la droite sur notre image, ou encore faire bouger notre image de
50px vers la gauche pour la faire « démarrer » à 50px de son bord gauche.
J’utilise donc la valeur -50px qui va me faire commencer à 50px du début «
théorique » de mon image.
La deuxième valeur correspond au déplacement vertical. Notre logo Twitter
est sur la première ligne, donc à 0px du haut de notre image. Je précise donc
0px. Pour le logo LinkedIn, en revanche, je précise -50px pour décaler mon
image de 50px vers le haut et donc commencer 50px plus bas.
Avant de commencer, sachez que le CSS ne gère les transitions que depuis
relativement peu de temps.
La propriété CSS transition est une écriture short hand regroupant en fait
quatre propriétés :
s’appliquer ;
transition.
Ainsi, nous utiliserons souvent les transitions avec les pseudo classes et
particulièrement avec :hover .
Création d’une transition simple en CSS
Nous allons effectuer un effet de transition sur la taille et la couleur de fond
d’un div , lorsqu’un utilisateur va passer sa souris dessus.
Essayer ce code
Comme vous pouvez le voir, on peut très bien spécifier plusieurs noms de
propriétés et transitions dans notre propriété transition , en les séparant par
une virgule.
Pensez bien une nouvelle fois à déclarer les préfixes vendeurs avant la
version standardisée de la propriété en soi ainsi que les valeurs dans l'ordre
que je vous propose (nom de la propriété avant la durée de la transition).
Ici, dès qu’un utilisateur passe sa souris sur notre div , celui-ci change
progressivement de forme et de couleur en deux secondes.
jouée ;
Parmi toutes ces propriétés, seules les valeurs relatives aux deux premières
doivent obligatoirement être précisées dans la propriété CSS animation .
Comme vous pouvez le voir, on applique notre animation à notre élément div .
On se contente ici d’utiliser les propriétés animation-name et animation-
duration . Pensez bien une nouvelle fois à préciser la propriété préfixée avant
Notez qu’une fois notre animation terminée un élément reprend son style
d’origine.
On va également faire bouger notre div dans notre page en lui attribuant une
position relative puis en modifiant celle-ci dans notre @keyframes .
Essayer ce code
Ici, nous commençons par définir la taille, une couleur de fond par défaut et le
positionnement de notre div .
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.
PRESENTATION DES
FORMULAIRES
Les formulaires en HTML
Les formulaires vont nous permettre de recueillir des données envoyées par
nos utilisateurs.
Vous devez TOUJOURS vous méfier des données envoyées par l’utilisateur et
sécuriser vos formulaires avant d’effectuer toute autre opération sur ces
données.
En effet, même s’ils sont peu nombreux, soyez sûr qu’un jour ou l’autre un
utilisateur malveillant essaiera de profiter d’un formulaire pour envoyer des
données non souhaitées et tenter de faire buguer votre site ou encore de
récupérer des informations sensibles.
Une nouvelle fois, nous n’allons pas pouvoir sécuriser nos formulaires en
HTML, nous aurons besoin de l’aide d’autres langages comme le PHP pour
faire cela.
Cependant, retenez bien cette mise en garde si vous devez un jour demander
des données à vos utilisateurs.
CREER UN FORMULAIRE
SIMPLE
Elément Définition
L’élément form
Pour définir un formulaire en HTML, nous allons utiliser l’élément form qui
signifie « formulaire » en anglais.
Cet élément form va avoir besoin de deux attributs pour fonctionner
normalement : les attributs method et action .
L’attribut method va indiquer comment doivent être envoyées les données
saisies par l’utilisateur. Cet attribut peut prendre deux valeurs : get et post.
Ces deux valeurs vont correspondre aux deux choix que nous avons : soit
faire transiter les données par l’URL afin de pouvoir ensuite les traiter, soit les
envoyer par HTTP post transaction.
Concrètement, si l’on choisit l’envoi via l’URL (avec la valeur get), nous serons
limités dans la quantité de données pouvant être envoyées et surtout les
données vont être envoyées en clair. Evitez donc absolument d’utiliser cette
méthode si vous demandez des mots de passe ou toute information sensible
dans votre formulaire.
L’attribut action va lui nous servir à préciser l’adresse relative de la page
dans laquelle les données doivent être traitées. Ce sera généralement un
fichier PHP. Nous n’allons pas créer ce fichier dans ce cours, mais je vous
propose pour les exemples suivants de faire comme si ce fichier existait et de
l’appeler « traitement.php ».
L’élément input se présente sous la forme d’une balise orpheline et possède
un attribut type auquel on va pouvoir donner de nombreuses valeurs.
Il faudra donner strictement la même valeur aux attributs for et id afin de «
lier » entre eux un label et un élément de formulaire. Vous pouvez donner la
valeur que vous voulez, mais essayez de rester cohérent et logique dans la
mesure du possible.
L’attribut name
Nous allons également devoir préciser un attribut name pour chaque élément
de notre formulaire demandant des informations à un utilisateur.
Cet attribut name va nous permettre, par la suite, de reconnaître le contexte
de chaque donnée envoyée par l’utilisateur afin de pouvoir les traiter
efficacement.
En effet, sans attribut name , nous recevrions des données mais ne saurions
pas quoi en faire, ne sachant pas à quel champ elles appartiennent.
Cet attribut est donc indispensable. Vous pouvez une nouvelle fois lui
attribuer la valeur souhaitée. Seule restriction : cette valeur doit être unique
afin de bien pouvoir identifier chaque champ.
Essayer ce code
Nous n’avons pas besoin non plus de label pour notre bouton d’envoi : nous
préférerons indiquer un attribut value et préciser une valeur qui s’affichera
dans le bouton même.
Nous allons voir ensemble quelques unes des valeurs les plus courantes de
l’attribut type .
Lorsque l’utilisateur écrit dans le champ, ce qu’il écrit n’est pas affiché en
clair mais est remplacé par des astérisques ou des points.
Input type = "date"
La valeur date va être utilisée pour créer des champs de formulaire devant
recevoir une date, comme une date de naissance par exemple.
Selon le navigateur utilisé par vos visiteurs, ceux-ci verront peut être une liste
de dates à choisir dans le champ input type="date" .
Cela va être utile si l’on souhaite demander l’adresse de son site web à un
utilisateur par exemple.
Tout comme pour la valeur email de type , une validation des données pourra
être faîte lors de la soumission du formulaire selon le navigateur utilisé.
Pour plus d’esthétique, nous allons cette fois-ci placer le label après
l’élément input (afin d’avoir nos boutons radio alignés avant le texte
descriptif).
Essayer ce code
Cependant, cette valeur est moins restrictive que radio : en effet, avec radio,
l’utilisateur devait absolument choisir une et une seule option.
Tout comme pour les boutons radio, nous allons devoir utiliser le même
attribut name pour chaque groupe d’options et différencier les options en soi
avec un attribut value .
Essayer ce code
Un élément input type="submit" ne va pas nécessiter de name car ce n’est pas
un champ de saisie de données utilisateur. Nous allons utiliser un
attribut value contenant en valeur le texte qui sera affiché au sein de notre
bouton.
Les listes d'options des formulaires HTML
Les listes vont permettre à un utilisateur de choisir une valeur dans une liste
d’options déroulante.
Pour créer une liste d’options, nous allons cette fois-ci utiliser l’élément
HTML select pour définir notre liste en soi, et des éléments option pour
définir chaque élément de notre liste.
Nous devrons préciser un attribut name pour notre élément select puis des
attributs value pour chaque élément option .
Essayer ce code
Nous allons encore pouvoir grouper différentes options entre elles au sein
d’une liste grâce à l’élément optgroup (pour « option group », ou « groupe
d’options »).
Pour chaque groupe d’options, nous préciserons un attribut label (à ne pas
confondre avec l’élément label utilisé précédemment). Celui-ci va tenir le
même rôle que l’élément label .
Essayer ce code
AMELIORER UN FORMULAIRE
AVEC LES ATTRIBUTS HTML
Attribut Rôle
Autocomplete Permet l'autocomplétion d'un champ
Cet attribut peut prendre deux valeurs : on (le champ va s’auto compléter)
et off.
Essayer ce code
L’attribut autofocus
L’attribut HTML autofocus va nous permettre d’attribuer automatiquement le
focus sur un élément lors du chargement de la page.
Il n’est pas obligatoire de préciser une valeur pour cet attribut, puisqu'il n'en
possède qu'une qui est "autofocus". Cependant, une nouvelle fois, je vous
conseille de toujours écrire un attribut avec sa valeur afin de bien se rappeler
qu'un attribut possède toujours une valeur.
Essayer ce code
Essayer ce code
L’attribut HTML selected va lui occuper le même rôle pour l’élément select ,
c’est-à-dire pour les listes d’option de nos formulaires.
Essayer ce code
Attention cependant, cet attribut n’est pas supporté ni par les vieilles version
d’Internet Explorer (<9), ni par Safari. Nous utiliserons donc Chrome pour le
tester dans ce cours.
Essayer ce code
Ici, j’ai essayé d’envoyer le formulaire sans remplir de valeur dans mon
champ pseudo. Comme celui-ci possède un attribut required , le navigateur
n’envoie pas le formulaire et m’indique à la place que je dois remplir le
champ en question.
ORGANISER ET METTRE EN
FORME UN FORMULAIRE
Pour cela, nous allons commencer par harmoniser nos lignes grâce aux
propriétés width et height .
Ensuite, nous allons rajouter des padding et margin pour aérer nos formulaires
et nous allons mettre en forme nos textes.
Voici donc le code CSS que je vous propose. A votre niveau, vous devriez être
capable de comprendre ce code tout seul. Notez que nous utilisons la pseudo
classe :hover pour que l’utilisateur puisse mieux se repérer dans le
formulaire.
Essayer ce code
INTRODUCTION AU
RESPONSIVE DESIGN
1. Créer un site dédié pour chaque terminal différent (un site mobile, un
site pour ordinateur, etc.) ;
3. Utiliser les outils offerts par le HTML et le CSS et créer une version «
responsive » de notre site.
Dans cette section, nous nous concentrerons sur cette troisième méthode.
LE VIEWPORT ET
L'UTILISATION DES
POURCENTAGES
Présentation du viewport
Le « 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.
Regardez le résultat avec et sans utilisation de meta viewport de notre code
HTML pour un affichage sur mobile :
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 taille égale à 100% pour votre élément body , puis
ensuite une largeur de 50% pour un div enfant direct du body , la taille
du div sera toujours égale à 50% de celle du body .
Si maintenant vous définissez à nouveau une largeur égale à 50% pour les
paragraphes à l'intérieur de votre div , les paragraphes occuperont 50% de la
largeur du div
Limites de ces deux premières méthodes
Le fait d'utiliser la meta name="viewport" et des tailles relatives dans votre
code CSS devrait déjà vous fournir une bonne base pour adapter votre site
web aux différentes tailles d'écran.
La meilleure méthode pour faire tout cela va être d'utiliser une nouvelle fois
la règle CSS @ ainsi que ce qu'on appelle les "media queries".
MEDIA QUERIES ET
RESPONSIVE DESIGN
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.
Cependant, sachez que l’on peut également utiliser @media print , par
exemple, afin de n’appliquer certaines règles que pour les imprimantes ou
encore @media speech , pour les ordinateurs spéciaux qui vont « lire à haute
voix » une page.
Pour faire cela, nous allons pouvoir utiliser les propriétés display , position et
les valeurs relatives en pourcentages de façon générale.
Imaginons par exemple une page web composée de trois div côte à côte et
d’un pied de page.
Essayer ce code
Pour l’affichage sur mobile, nous désirons maintenant afficher la page sur une
seule colonne et enlever le pied de page afin de faciliter la lisibilité des
visiteurs.
Admettons qu’on considère tous les écrans de mobiles d’une taille intérieure
à 780px.
Nous allons utiliser @media avec les bonnes propriétés CSS afin d’avoir
l’affichage souhaité sur téléphone portable :
Essayer ce code
@media et orientation
On peut également définir des règles spécifiques selon l’orientation de l’écran
de vos visiteurs (utile pour l’affichage sur tablette ou iPhone entre autres).
Pour cela, on peut utiliser « orientation : landscape » pour définir des règles
spécifiques pour les écrans tournés en mode « paysage ».
LE FLEXBOX CSS
Introduction au Flexbox
Jusqu’à présent, nous avons étudié différentes techniques et propriétés CSS
pour mettre en page et organiser nos différents éléments HTML.
La direction des éléments (en colonne ou en ligne, avec un retour à la ligne ou non) ;
L’alignement des éléments selon un axe principal et secondaire ainsi que leur répartition ;
L’idée est simple : nous allons commencer par définir un élément conteneur
(qui sera souvent un div ) dans lequel nous allons placer les différents
éléments que l’on souhaite positionner dans la page et aligner les uns par
rapport aux autres.
Bien évidemment, nous allons pouvoir définir autant de conteneurs dans une
page web que l’on souhaite. L’idée ici est que les éléments contenus dans un
conteneur vont former un groupe. Nous allons ensuite pouvoir organiser les
éléments de manière précise et efficace les uns par rapport aux autres à
l’intérieur de chaque groupe.
Pour faire fonctionner le modèle de FlexBox, nous allons déjà devoir appliquer
un display : flex ou éventuellement un display : inline-flex à notre
conteneur.
Notez que j’ai ajouté une marge intérieure et une couleur de fond différente
pour chaque div contenu dans notre conteneur afin de rendre l’exemple plus
visuel et de pouvoir bien les différencier les uns des autres.
Nous allons ici étudier les propriétés suivantes (notez que certaines
propriétés vont s’appliquer au conteneur tandis que d’autres vont s’appliquer
aux éléments contenus) :
Justify-content ;
Align-items ;
Align-self ;
Align-content ;
Order ;
Flex (version shorthand des propriétés flex-grow + flex-shrink + flex-
basis ).
Reprenons nos pages HTML et CSS et appliquons par exemple un flex-
direction : column-reverse à notre conteneur.
Comme vous pouvez le constater, nos éléments s’affichent désormais
verticalement (c’est-à-dire en colonne) dans l’ordre inverse de leur
déclaration en HTML.
Wrap : les éléments peuvent passer à la ligne dans leur ordre naturel
de déclaration ;
Regardez plutôt l’exemple suivant pour bien comprendre l’utilisation que l’on
peut faire avec cette propriété :
Ici, j’ai défini un flex-direction : row pour notre conteneur. Les éléments
contenus s’afficheront donc à la suite les uns des autres.
J’ai également défini une largeur de 250px pour chacun de nos éléments à
l’intérieur de notre conteneur.
Par défaut, les éléments flex-items n’ont pas le droit d’aller à la ligne. Ainsi, si
j’essaie de modifier la largeur de ma fenêtre, les éléments vont se recadrer à
l’intérieur du conteneur jusqu’à finalement dépasser si la somme de leurs
contenus devient plus grande que ma fenêtre.
Notez pour finir que les deux propriétés flex-direction et flex-wrap peuvent
être déclarées avec la propriété raccourcie flex-flow .
La propriété flex-flow va donc prendre donc deux valeurs : la valeur relative
à flex-direction en premier puis celle relative à flex-wrap en deuxième.
Nous allons pouvoir définir l’organisation des éléments selon l’axe principal
des éléments (horizontal ou vertical) avec la propriété justify-content .
L’organisation des éléments selon l’axe secondaire va ensuite pouvoir être
gérée avec les propriétés align-items , align-self et align-content .
Baseline : les éléments sont alignés de telle sorte à ce que leurs lignes
de base soient alignées les unes par rapport aux autres.
On demande donc aux éléments de notre premier conteneur .c1 de s’aligner
à partir de la fin de leur axe secondaire en plus de leur alignement par
rapport à l’axe principal. Dans ce cas, l’axe secondaire des éléments est l’axe
vertical et nos éléments sont par défaut organisés du haut vers le bas. Le bas
de l’axe vertical correspond donc à la fin de l’axe. Nos éléments s’alignent
donc à partir du bas de notre conteneur en plus de leur alignement principal
horizontal.
Ensuite, nous alignons les éléments de notre conteneur .c2 au centre par
rapport à l’axe vertical. Ainsi, ils se placent au milieu (en hauteur) de leur
conteneur.
La propriété align-self peut prendre les mêmes valeurs que align-items . Elle
va s’appliquer à un élément flex-item en particulier et non pas au conteneur.
Illustrons son fonctionnement immédiatement :
Ici, on cible le deuxième élément dans notre premier conteneur et on lui
applique un align-self : flex-start . Cet élément en particulier se placera
donc au début du conteneur selon son axe secondaire, c’est-à-dire l’axe
vertical dans le cas présent.
Gérer l’organisation éléments par ligne selon l’axe secondaire
Notez que cette propriété n’aura aucun effet si notre Flexbox ne contient
qu’une ligne.
Grâce au Flexbox, nous allons pouvoir centrer très simplement des éléments
horizontalement et verticalement.
Pour cela, il nous suffit de centrer les éléments selon leur axe principal avec
la propriété justify-content et selon leur axe secondaire grâce à la
propriété align-items .
Notez également que vous n’êtes pas du tout obligé de donner un order : 0 à
l’élément que vous voulez voir s’afficher en premier, un order : 1 au
deuxième, etc. Il suffit juste de donner la valeur la plus faible au premier, et
d’aller croissant ensuite.
Notez déjà que les différentes propriétés que l'on va voir dans cette partie
s'appliquent aux flex-items et non pas au conteneur.
Si tous les flex-items possèdent un flex-grow : 1 , par exemple, alors l'espace
restant dans le conteneur sera distribué régulièrement à tous les flex-items.
En revanche, si on définit un flex-grow : 2 à l'un des flex-items, alors il
absorbera deux fois pus d'espace disponible que les autres.
Dans notre deuxième conteneur .c2 , nous attribuons un flex-grow : 1 à tous
nos flex-items. L'espace restant dans le conteneur sera donc distirbué
également entre tous nos flex-items.
Enfin, nous attribuons un flex-grow : 1 aux deux premiers flex-items de notre
troisième conteneur et un flex-grow : 2 au dernier. Le dernier flex-item
absorbera deux fois plus d'espace restant que les deux premiers flex-items.
La propriété flex-shrink va être la propriété inverse de flex-grow et va gérer
la capacité d'un flex-item à rétrécir par rapport aux autres.
Notez que pour que flex-shrink ait un effet visible, il faut que la somme des
tailles par défaut des flex-items dépasse du conteneur.
Cette propriété peut prendre une valeur de type taille (20%, 5rem, etc.) ou un
mot clef en valeur.
La valeur par défaut de flex-basis est auto , qui signifie que l'élément obéira
aux règles données par les propriétés width et lenght si celles-ci ont été
définies.
Enfin, flex-basis peut prendre la valeur content qui signifie que la taille des
flex-items sera basée sur la taille de leur contenu. Cependant, cette valeur
n'est pas encore bien standardisée ni reconnue par les navigateurs donc je
vous recommande de l'éviter.
Présentation de l’exercice
Vous savez maintenant quasiment tout ce qu’il y a à savoir sur le HTML et le
CSS. Tout ce qu’il vous reste à faire maintenant est de pratiquer, encore et
encore.
Déroulé de l’exercice
Comme souvent lorsque l’on doit mener à bien un projet (informatique), nous
allons suivre différentes phases.
Nous sommes limités dans cet exercice par une chose : nous n’avons le droit
de n’utiliser que le HTML et le CSS.
Nous voulons un site moderne qui s’adapte selon les tailles d’écran ( donc un
site responsive).
En effet, nos pages auront des designs et des codes différents les unes des
autres, à l’exception de certaines parties « fixes ». On va donc pouvoir
travailler sur chaque page séparément.
Commençons déjà par créer nos quatre pages HTML qui vont constituer notre
site.
index.html ;
experiences-pro.html ;
hobbies.html ;
contact.html .
Pour simplifier le tout, je vous invite à mettre tous ces fichiers dans le même
dossier comme ceci :
Comme vous pouvez le voir, j’ai également créé un dossier « imgs » dans le
dossier contenant les différentes pages de notre site.
Nous allons créer ces parties dans la page index.html , puis nous copierons et
collerons le code dans les autres pages de notre site.
Cependant, je pars du principe pour cet exercice que vous ne connaissez que
le HTML et le CSS. Nous allons donc être obligé de procéder en copiant et en
collant.
Notez également qu’on ajoute un attribut lang à notre élément html . Cela va
donner une indication aux moteurs de recherche sur la langue utilisée dans
nos pages web. Pour le français, le code est « fr-FR ».
Ces éléments sont des éléments HTML structurants qui sont apparus avec
HTML5.
Ces éléments sont de type block et peuvent ainsi remplacer certains de nos
éléments div .
Voici la liste complète des éléments HTML structurants ainsi que leur cas
d’utilisation. Je vous encourage fortement à vous aussi les utiliser.
Nom de
Cas d’utilisation
l’élément
Au final, il faut bien vous interroger à l’avance sur le sens que vous voulez
donner à vos pages et bien définir leurs contenus pour bien les structurer.
Pour cela, nous utilisons de façon classique un élément ul pour définir notre
menu en soi et des éléments li pour chaque élément de notre menu.
Dans nos éléments li , nous créons des liens avec des éléments a afin que
nos éléments de menu renvoient bien vers les autres pages de notre site.
Nous précisons déjà des attributs class pour nos éléments li afin de préparer
le terrain pour la mise en forme en CSS.
De même, nous insérons un div qui englobe notre menu. Celui-ci nous
permettra plus tard de centrer le menu dans notre page en CSS.
Voilà tout pour les éléments « fixes » de notre site. Vous pouvez ici copier ce
contenu et le coller dans vos quatre pages HTML, en modifiant juste le
contenu de l’élément title afin d’avoir un titre qui reflète le contenu de
chaque page.
Evidemment, sans CSS, ce n’est pour le moment pas très engageant, mais
patience !
Commençons avec les styles généraux et ceux de nos header et footer .
On étend notre élément nav et on lui donne une couleur de fond :
Ensuite, nous allons mettre en forme nos éléments de lien, c’est-à-dire nos
éléments a .
Ensuite, on veut centrer notre menu dans notre page. Pour cela, nous allons
devoir appliquer un display : table et un margin : 0
auto au div intermédiaire que nous avions créé.
Arrivé ici, nous avons fait le plus gros du travail. Il ne nous reste plus qu’à
ajouter un style spécifique pour chacun de nos éléments de menu.
Voilà tout pour notre menu, et pour les parties fixes de notre site.
On se permet de faire comme cela car nos éléments de menu prennent peu
de place. Pour créer un véritable menu responsive, je vous invite à regarder
l’exercice qui y est consacré sur ce site.
En voilà donc le résultat sur Smartphone :
SQUELETTE HTML ET MISE EN
FORME CSS DE NOTRE PAGE
D'ACCUEIL
Le résultat final
Afin que vous compreniez dès le début pourquoi on fait telle ou telle chose, et
que ce tutoriel vous soit le plus bénéfique, je vais déjà vous montrer le
résultat auquel on souhaite parvenir.
La meta description et les sections
Nous allons à présent nous attaquer au code HTML spécifique à la
page index.html .
La meta description va être un petit texte qui va être affiché dans les
résultats de recherche des moteurs de recherche (Google par exemple), sous
le titre de votre site.
Pour faire cela, nous allons utiliser quatre éléments HTML section et allons
placer le tout à l’intérieur d’un élément article , car le tout peut faire office de
CV et donc se suffit à lui même.
Je vais donc découper cette section en deux avec deux éléments div .
Une nouvelle fois, je rajoute un div class="sec" et des attributs class et id à
mes éléments div et section car je sais que je vais ensuite en avoir besoin en
CSS pour la mise en page.
Comme toutes mes images sont dans mon sous dossier « imgs », je pense
bien à en tenir compte dans la valeur de mon attribut src .
Là encore, je vais séparer ma section en deux avec des dates sur la gauche et
les expériences correspondant aux dates sur la droite.
Cependant, ici, afin que les dates soient bien alignées par rapport aux
expériences, nous allons utiliser un div intermédiaire de plus à chaque fois
pour englober la date et l'expérience correspondante ensemble.
J’expliquerai mieux le pourquoi de chaque div lorsque nous passerons au
CSS. Pour l’instant, je veux simplement vous montrer l’intérêt et l’efficacité
d’une bonne réflexion avant de se lancer dans un projet.
La section compétences de notre site HTML
La troisième section de ma page doit présenter mon niveau de compétences
relativement à certains sujets. Ici, je vais utiliser plus ou moins la même mise
en forme que pour ma section précédente à l’exception près qu’on va vouloir
afficher deux compétences sur la même ligne.
On va donc avant tout séparer la section en deux parties, puis ensuite mettre
en forme chaque partie sur le même schéma que précédemment.
La section recommandations de notre site HTML
Finalement, la dernière section de ma page d’accueil va contenir des
témoignages et des recommandations de mes anciens employeurs,
professeurs ou clients.
Voilà tout pour notre page index.html . Ce sera déjà pas mal pour
commencer !
Nous allons déjà commencer par définir la largeur de nos sections, ainsi que
la hauteur minimale et les marges intérieures et extérieures.
Ensuite, nous allons rajouter des marges gauche et droite à nos
div class="sec" afin de centrer un peu le contenu des sections.
Nous allons déjà faire flotter tous nos div de sous-section. En effet, rappelez
vous que nous avons utilisé des div pour "couper" chacune de nos sections en
deux (ou en quatre).
Nous allons maintenant faire flotter tous ces div afin que les contenus se
placent côte à côte.
Nous avons séparé nos sections en deux avec div class="left" et div
class="right" .
Dans ce cas, on veut que la sous section gauche occupe 30% de l’espace
disponible et la section droite les 70% restants.
Ici, la section compétence est un peu particulière puisqu’on la découpe en
deux puis à nouveau en deux.
Dans ce cas, on veut que chacune des quatre parties de section occupe 25%
de l’espace disponible.
On applique donc un width : 50% aux div qui coupent la section en deux et à
nouveau 50% pour les div qui recoupent en deux.
Arrivé ici, on se heurte à un problème : nos div de section contiennent des
enfants flottants. Or, en CSS, tout parent non flottant qui possède des enfants
flottants va collapser.
Vous pouvez déjà observer le résultat dans votre navigateur : tout est bien
placé !
Cela n’est pas un miracle : c’est dû au fait que nous avons construit notre
code HTML avec une idée précise de ce que nous souhaitions obtenir.
Le but de cet exercice, encore une fois, n’est pas d’en mettre « plein la vue »
question CSS, mais simplement de créer un site agréable et fonctionnel.
La page experiences-pro.html
Dans la page experiences-pro.html , nous allons détailler nos expériences
professionnelles.
Pour cela, on peut par exemple décrire l’activité de nos anciens employeurs,
créer un lien vers leur site web, décrire les tâches que nous avons effectuées,
etc.
Je souhaite pour chacune d’entre elles afficher une photo à gauche qui me
servira de lien et un texte à droite.
Je vais donc utiliser deux éléments section entre les éléments nav et footer ,
que je vais ensuite diviser en deux avec deux div .
Côté CSS, ça va être également très court. Nous allons réutiliser le design
général de notre page d’index pour cette page.
Ensuite, on donne une taille en pourcentage à nos images afin que celles-ci se
redimensionnent automatiquement avec la fenêtre, mais on leur demande de
ne jamais excéder 400px de large (ce qui est la taille de base de nos images)
afin que celles-ci ne pixellisent pas.
Le code CSS correspondant au div class="sec" est évidemment également
réutilisé puisque nous n’avons qu’une page CSS.
Nous allons donc utiliser un nouvel élément section par loisir, et afficher à
chaque fois une image et un petit texte.
Voici donc le code HTML de cette page (sans les parties fixes cette fois-ci) :
On réutilise les div class="sec" , div class="rightexp" et div
class="leftexp" utilisés précédemment.
Dans notre deuxième section, nous inversons simplement l’ordre d’écriture
des div rightexp et leftexp afin de changer la position de notre texte et de
l’image.
En CSS, c’est une nouvelle fois très court et très simple, puisqu’on réutilise
évidemment le code écrit précédemment :
Comme nous ne connaissons pas le PHP, nous ne pouvons pas encore créer
de formulaires d’envoi de mail.
En HTML, nous avons donc tout simplement ceci (sans les parties fixes) :
L’importance de la préparation
Nous venons donc de créer un site complet en HTML et en CSS, qui pourra
vous servir de site personnel ou de CV interactif.
Une nouvelle fois, l’objectif n’était pas de faire quelque chose d’extrêmement
compliqué ou perfectionné, mais simplement un site fonctionnel et assez joli.
J’espère donc à ce niveau que vous avez bien compris tout l’intérêt et
l’importance d’une bonne préparation en amont ; l’importance de ne se
lancer dans le code immédiatement mais de bien réfléchir à ce que l’on
souhaite auparavant.
En effet, vous devez vous confronter aux difficultés pour progresser, et non
pas les esquiver.
En ce sens, n’hésitez pas à modifier le code du site que l’on vient tout juste
de créer, à l’enrichir et à le perfectionner afin de rendre le site totalement
conforme à vos attentes.
Pour cela, vous devrez acheter un nom de domaine ainsi qu’un espace
serveur.
Conclusion et remerciements
Merci à tous d’avoir suivi ce cours !
Comme vous avez pu le voir, celui-ci est véritablement complet et vous a été
fourni gratuitement.
2. Ordonner du contenu
Afficher la réponse
Question n°2 :
1. L'élément title
2. L'élément head
Afficher la réponse
Réponse 3. Pour définir un titre dans une page HTML, on utilise un élément de
type "h". L'élément title est utilisé pour définir le titre DE la page (qui
s'affichera dans la barre haute du navigateur).
Question n°3 :
1. <a target="http://wikipedia.org">Wikipédia</a>
2. <a href="http://wikipedia.org">
3. <a href="http://wikipedia.org">Wikipédia</a>
Afficher la réponse
Question n°4 :
1. Un attribut target
2. Un attribut href
Afficher la réponse
Question n°5 :
1. <!--Commentaire-->
2. <--Commentaire-->
3. <!--Commentaire--!>
Afficher la réponse
Question n°6 :
1. Strong
2. Em
3. Mark
Afficher la réponse
Question n°7 :
1. ul et li
2. ol et li
3. ul et ol
Afficher la réponse
Réponse 1. Pour créer une liste non-ordonnée, on utilise les éléments ul et li.
"ul" est l'abréviation de "unordered list", c'est-à-dire "liste non ordonnée" en
français. "li" signifie "list item", ou "élément de liste".
Question n°8 :
Afficher la réponse
Réponse 2. L'élément img est représenté par une unique balise orpheline et
doit être obligatoirement accompagné de ses deux attributs src et alt.
Question n°9 :
Afficher la réponse
Réponse 1. L'attribut alt sert à décrire l'image. Cela est essentiel dans le cas
où l'image ne pourrait pas être affichée ainsi que pour les personnes mal
voyantes ou non voyantes.
Question n°10 :
Réponses 1, 2 et 3 !
Question n°1 :
2. Ordonner du contenu
Afficher la réponse
Question n°2 :
Afficher la réponse
Question n°3 :
2. Une propriété
3. Une déclaration
Afficher la réponse
Réponse 2. "color" est ce qu'on appelle une propriété CSS. Une propriété CSS
sert à modifier un style en particulier de nos éléments HTML.
Question n°4 :
Afficher la réponse
Question n°5 :
2. On doit donner une valeur unique à un attribut class mais pas à des
attributs id
3. On doit donner une valeur unique à chaque attribut class et id dans une
page
Afficher la réponse
Question n°6 :
Afficher la réponse
Question n°7 :
1. L'élément span est de type block, l'élément div est de type inline
2. L'élément div est de type block, l'élément span est de type inline
Afficher la réponse
Réponse 2. Les éléments div et span peuvent tous les deux servir de
conteneurs pour des contenus différents. Cela est dû a fait que div est un
élément block et span est un élément inline.
Question n°1 :
Afficher la réponse
Question n°2 :
3. Car ces polices vont pouvoir être lues par tous les navigateurs
Afficher la réponse
Réponse 3. En utilisant une police de Google, vous êtes assuré que tous vos
utilisateurs pourront lire votre contenu.
Question n°3 :
Afficher la réponse
Question n°4 :
Afficher la réponse
Question n°5 :
Que représentent les deux premiers chiffres composant une notation
hexadécimale ?
Afficher la réponse
Question n°6 :
Afficher la réponse
Question n°7 :
1. 2 valeurs
2. 3 valeurs
3. 4 valeurs
Afficher la réponse
Question n°8 :
Afficher la réponse
Afficher la réponse
Question n°2 :
1. Bordure en pointillés
Afficher la réponse
1. Border-style
2. Border-radius
3. Radius
Afficher la réponse
Question n°4 :
1. La marge intérieure
2. La marge extérieure
3. Le contenu de l'élément
Afficher la réponse
Question n°5 :
Afficher la réponse
Question n°6 :
Afficher la réponse
Réponse 2. La valeur inset va nous servir à projeter une ombre vers l'intérieur
de notre boîte.
Question n°7 :
Question n°8 :
On ne peut pas utiliser les propriétés top, right, bottom et left sur un élément
quand...
Afficher la réponse
Réponse 1. Les propriétés top, right, bottom et left ne s'appliqueront pas sur
un élément possédant un positionnement "static". Or, les éléments HTML
possèdent justement ce positionnement par défaut.
Question n°9 :
Afficher la réponse
Réponse 1. La propriété clear est utilisée pour empêcher des éléments de
venir se placer aux côtés d'éléments positionnés avec float. clar:left va
neutraliser l'effet d'un float:left.
Question n°1 :
1. color
2. background-color
3. background-image
Afficher la réponse
Question n°2 :
1. Horizontalement
2. Pas du tout
3. Horizontalement et verticalement
Afficher la réponse
Afficher la réponse
Question n°4 :
Afficher la réponse
Réponse 2. Les préfixes vendeurs vont pouvoir être utilisés afin que
d'anciennes versions de certains navigateurs puissent lire certaines
propriétés CSS récentes.
Question n°5 :
1. -webkit-
2. -o-
3. -moz-
Afficher la réponse
Réponse 3. -webkit- est la préfixe utilisé pour Chrome et Safari tandis que -o-
est le préfixe pour le navigateur Opéra.
Question n°6 :
Afficher la réponse
Réponse 1. Avec le préfixe -webkit-, il faut bien indiquer le point de départ du
dégradé. La propriété non préfixée nécessite elle l'emploi du mot clef "to".
Question n°7 :
1. Un dégradé qui se fait dans toutes les directions à partir d'un point
central
Afficher la réponse
Réponse 1. Un dégradé radial part d'un point central dans toutes les
directions.
Question n°8 :
1. Circulaire
2. Elliptique
3. Triangulaire
Afficher la réponse
Réponse 3. On peut définir un dégradé radial afin qu'il soit en forme de cercle
ou d'ellipse uniquement.
Question n°1 :
Lequel de ces éléments sert à créer une nouvelle ligne dans un tableau
HTML ?
1. L'élément table
2. L'élément tr
3. L'élément td
Afficher la réponse
Réponse 2. L'élément table sert à définir le tableau HTML en soi tandis que
l'élément td sert à définir les cellules d'un tableau.
Question n°2 :
Quelle propriété CSS utilise t-on pour "coller" les bordures d'un tableau ?
1. La propriété border
2. La propriété border-radius
3. La propriété border-collapse
Afficher la réponse
Quel élément HTML sert à définir une ligne d'en tête pour notre tableau ?
1. L'élément tr
2. L'élément th
3. L'élément thead
Afficher la réponse
Question n°4 :
Afficher la réponse
Comment faire en sorte qu'une cellule occupe l'espace de trois colonnes dans
un tableau HTML ?
3. En crivant deux cellules vides après cette cellule dans notre tableau
Afficher la réponse
Question n°6 :
Lequel de ces éléments HTML sert à ajouter une légende à un tableau HTML ?
1. L'élément legend
2. L'élément figcaption
3. L'élément caption
Afficher la réponse
Citez trois manières pour faire qu'une image occupe sa propre ligne
Afficher la réponse
Question n°2 :
Afficher la réponse
Question n°3 :
Pourquoi n'est-on pas obligé de préciser de valeur pour certains attributs
HTML ?
Afficher la réponse
Question n°4 :
Lequel de ces attributs permet de faire se répéter en boucle une piste audio
ou une vidéo ?
1. L'attribut preload
2. L'attribut loop
3. L'attribut autoplay
Afficher la réponse
Question n°5 :
Quels sont les trois formats audio les plus utilisés et les mieux supportés ?
Afficher la réponse
Ce sont les formats mp3, ogg et wav.
Question n°6 :
Lequel de ces attributs nous permet d'ajouter une image de fond à notre
vidéo (qui s'affichera avant son lancement) ?
1. L'attribut poster
2. L'attribut caption
3. L'attribut controls
Afficher la réponse
Réponse 1. On utilise l'attribut poster pour ajouter une image de fond qui
s'affichera avant le lancement d'un fichier vidéo.
Question n°7 :
Quel est l'intérêt majeur de télécharger vos fichiers sur des sites comme
YouTube, Daylimotion, etc. pour ensuite les intégrer sur votre site ?
Afficher la réponse
Afficher la réponse
Ces deux éléments servent avant tout à donner des informations sur nos
médias au navigateur (et au moteur de recherche). En effet, un navigateur ou
un moteur de recherche ne "comprend" pas le contenu d'une image ou d'une
vidéo à priori.
Question n°1 :
Afficher la réponse
Les notations short hand CSS sont des propriétés auxquelles on va pouvoir
attribuer plusieurs valeurs appartenant à d'autres propriétés d'un même
"type". Ainsi, nous allons pouvoir modifier plusieurs styles d'un coup d'un
élément HTML grâce aux notations short hand.
Question n°2 :
Afficher la réponse
Afficher la réponse
Question n°4 :
Afficher la réponse
Réponse 1. Les pseudo classes CSS commencent toutes par ":", tandis que les
pseudo éléments commencent par "::".
Question n°5 :
A quoi sert la pseudo classe :hover ?
Afficher la réponse
Question n°6 :
Afficher la réponse
Question n°7 :
Afficher la réponse
Question n°8 :
Quelle est la grande différence entre une transition et une animation en CSS ?
Afficher la réponse
Pour créer une transition dans les valeurs d'une propriété CSS, il faut déjà que
la propriété en question connaisse à un moment donné un changement de
valeur, condition qui n'est pas nécessaire pour créer une animation.
Question n°9 :
Afficher la réponse
Afficher la réponse
Question n°2 :
Afficher la réponse
Il faut toujours se méfier des données qui sont envoyées par les utilisateurs :
vous ne devez jamais vous attendre à recevoir des données conformes. Vous
devez donc sécuriser vos formulaires puis effectuer des tests pour nettoyer et
valider les données reçues en PHP par exemple.
Question n°3 :
1. L'élément form
2. L'élément input
3. L'élément label
Afficher la réponse
Question n°4 :
Afficher la réponse
Question n°5 :
Afficher la réponse
Question n°6 :
1. L'élément input
2. L'élément date
3. L'élément select
Afficher la réponse
Réponse 1. Nous utiliserons l'élément input avec son attribut type et sa valeur
date pour créer un champ de type date dans un formulaire.
Question n°7 :
1. L'attribut selected
2. L'attribut autocomplete
3. L'attribut checked
Afficher la réponse
Question n°8 :
Afficher la réponse
Question n°9 :
Afficher la réponse
Afficher la réponse
Question n°2 :
Afficher la réponse
1. De sa taille de départ
2. De la taille de la fenêtre
Afficher la réponse
Question n°4 :
Afficher la réponse
Réponse 2. On n'utilise jamais le signe égal en CSS pour définir une taille.
Faites bien attention aux parenthèses en utilisant les media queries !
https://www.pierre-giraud.com/html-css/exercices-html-css/centrer-horizontalement-
element.php