Cours 2¶
Tutorat¶
| Qui | Quand | Où |
|---|---|---|
| Alexis Guilbault | Mardi 12h30 à 14h10 |
En personne au Centre d’aide C-1612 |
| Olivier Laliberté | Mercredi 20h00 à 21h15 |
Sur Teams |
| Thomas Bozelko | Jeudi 20h00 à 21h15 |
Sur Teams |
| Kellie Gravel | Dimanche 19h00 à 20h15 |
Sur Teams |
Retour sur les exercices¶
CSS grid + Mandala
Classroom50¶

Pour les exercices en classe, nous travaillerons désormais avec Classroom 50. Un outil d'attribution de devoir via GitHub.
Pour commencer, veuillez remplir le formulaire suivant :
Pause
Avec vos informations, je pourrai vous faire parvenir une invitation au projet Classroom 50.
🕐 Donnez-moi juste le temps de compiler vos informations. Ça devrait pas être trop long.
Vous devriez recevoir un lien par courriel, sinon : https://github.com/orgs/tim-w3/invitation
Les exercices¶
Pour les exercices, un lien vous sera remis en temps et lieu.
Vous serez alors dirigé vers une page comme celle-ci :

Cliquer sur « Accepter le devoir »

Cliquer sur « Ouvrir le dépôt »

Cloner le dépôt avec GitHub Desktop
Dans l'image ci-dessus, vous remarquerez 2 lignes en rouge. Ces lignes doivent simplement être ignorées : ne les modifiez pas. Elles sont requises pour fonctionner avec Classroom 50.
Complétez l'exercice demandé et n'oubliez pas de faire un commit + push. Cela officialisera la complétion de votre exercice.
Cadriciel CSS¶

En Web 2, vous écriviez tout votre CSS à la main.
Cette session, on découvre un pilier du développement moderne : les cadriciels CSS (ou frameworks CSS). Un framework CSS, c'est du CSS déjà préparé qu'on branche à une page Web pour la styler sans partir de zéro.
Il en existe une grande variété, mais Tailwind est aujourd'hui le plus utilisé. Toutefois, afin d'aténuer la courbe d'apprentissage de ce nouveau concept, nous commencerons avec un minuscule framework nommé Milligram .
Introduction au framework CSS¶


Exercice - Milligram
Mon premier framework
Tailwind¶

Tailwind est aussi un framework CSS, mais sa philosophie est différente.
Milligram fournit des classes « sémantiques » toutes faites : .button, .row, .column.
Tailwind fournit des classes « utilitaires ». Il donne des micro-classes qui font chacune une seule petite chose, qu'on compose soi-même. Le but de Tailwind est de ne plus jamais coder de CSS 😈
<a href="#" class="button">
Voir la bande annonce
</a>
<a href="#" class="px-6 py-2 bg-purple-600 text-white rounded font-bold uppercase">
Voir la bande annonce
</a>
La documentation¶
La documentation Tailwind est la source d'information la plus fiable. Toutefois, elle peut être mélangeante, car en un clic on peut passer de Tailwind CSS à Tailwind Plus qui est la partie payante du site. Ignorez la simplement.

Installation¶


Exercice - Tailwind
Installation Tailwind en CDN
Espacements¶
Les classes d'espacement (padding et margin ) se construisent avec ce motif :
<propriété><côté*>-<size>
| Propriété | |
|---|---|
m |
margin |
p |
padding |
| Coté (facultatif) | |
|---|---|
t |
top |
b |
bottom |
l |
left |
r |
right |
x |
right + left |
y |
top + bottom |
| Unité | |
|---|---|
0 |
0rem |
1 |
0.25rem |
2 |
0.5rem |
3 |
0.75rem |
4 |
1rem |
| ... |
See the Pen Tailwind4 Spacing Builder by TIM Montmorency (@tim-momo ) on CodePen .
On pourra alors utiliser ce type de classe dans le HTML. Voici un exemple :
See the Pen Tailwind4 Premier pas by TIM Montmorency (@tim-momo ) on CodePen .
Couleurs¶

Les classes de couleur se construisent généralement avec ce motif :
<propriété>-<couleur>-<tinte>/<transparence>
Plusieurs propriétés peuvent être colorées. Ici on peut voir trois classiques : couleur de fond , texte et bordure .
See the Pen Tailwind4 Color Builder by TIM Montmorency (@tim-momo ) on CodePen .
Notez qu'il n'est pas possible de changer la tinte d'une couleur définitive comme le blanc, le noir et la transparence.
Typographie¶

See the Pen Tailwind4 Typography Builder by TIM Montmorency (@tim-momo ) on CodePen .
<style type="text/tailwindcss">
@theme {
--font-sans: 'Inter', sans-serif;
--font-serif: 'Merriweather', serif;
--font-mono: 'Fira Code', monospace;
}
</style>
😜 Évidemment, il ne faut pas oublier de lier les GoogleFonts dans le HTML avec leur script d'importation.

Bordures¶
Les configurations radius , width , color et style sont gérées pour les propriétés border et les outline. La syntaxe est la suivante :
rounded-<size>
border-<size>
border-<style>
border-<couleur>-<tinte>
See the Pen Tailwind4 Border Builder by TIM Montmorency (@tim-momo ) on CodePen .

Exercice - Tailwind
Intro à Tailwind | Les bases
Grandeurs (sizing)¶
Les dimensions comme le width et le height suivent la même syntaxe :
<w>-<value>
<h>-<value>
Les valeurs peuvent être :
- une fraction (ex.:
1/4,2/3, ...) - une valeur fixe (ex.:
4,10, ...) - un conteneur (
xs,sm,md,lg,xl,2xl,3xl...).
On peut aussi utiliser le mot screen pour signifier la largeur de la fenêtre du navigateur (ex.: w-screen équivaut à width: 100vw;). Si vous avez besoin de vous rafaichir la mémoire sur les unités relatives au viewport, consultez la page Viewport units sur web.dev .
Enfin, si on veut ajouter un min-width ou max-width, on peut le faire avec cette syntaxe :
min-<w>-<value>
max-<w>-<value>
See the Pen Tailwind4 Sizing Builder by TIM Montmorency (@tim-momo ) on CodePen .
Valeur arbitraire
Il est également possible de spécifier une valeur arbitraire en l'inscrivant entre crochets.
<div class="w-[5px]">
...
</div>
Conteneurs Tailwind¶
Les conteneurs Tailwind c'est juste des dimensions normalisées qu'on peut appliquer sur certaines classes. L'important ici est juste de savoir que ça existe.
| Taille | rem |
|---|---|
| xs | 20rem |
| sm | 24rem |
| md | 28rem |
| lg | 32rem |
| xl | 36rem |
| 2xl | 42rem |
| ... |
Effets¶
Les effets CSS comme box-shadow , opacity ou les filtres sont faciles à utiliser, mais demandent de bien comprendre leur fonctionnement. C'est pourquoi il sera recommandé ici de consulter la documentation officielle pour maîtriser leur syntaxe.
See the Pen Tailwind4 Effect Builder by TIM Montmorency (@tim-momo ) on CodePen .
Display¶
| Classe Tailwind | Équivalent CSS |
|---|---|
block |
display: block; |
inline-block |
display: inline-block; |
inline |
display: inline; |
flex |
display: flex; |
inline-flex |
display: inline-flex; |
grid |
display: grid; |
hidden |
display: none; |
Flexbox¶
Le mode flex s'active avec la classe flex sur le parent. On configure ensuite la disposition des enfants avec ces classes :
| Classe (parent) | Effet |
|---|---|
flex-row / flex-col |
Enfants en ligne ou en colonne |
flex-wrap |
Les enfants retournent à la ligne si l'espace manque |
justify-<value> |
Alignement sur l'axe principal |
items-<value> |
Alignement sur l'axe secondaire |
gap-<size> |
Espace entre les enfants |
See the Pen Tailwind4 Flexbox Builder by TIM Montmorency (@tim-momo ) on CodePen .
Chaque enfant peut aussi être configuré individuellement :
| Classe (enfant) | Effet |
|---|---|
flex-1 / grow |
L'enfant grandit pour occuper l'espace disponible |
shrink-0 |
L'enfant ne rétrécit pas |
basis-<size> |
Taille de départ de l'enfant avant distribution de l'espace |
self-start/center/end |
Aligne cet enfant seul, différemment des autres |
order-<n> |
Change l'ordre visuel sans toucher au HTML |
Grid¶
Le mode grid s'active avec la classe grid sur le parent. On définit ensuite le nombre de colonnes/rangées avec ces classes :
| Classe (parent) | Effet |
|---|---|
grid-cols-<n> |
Nombre de colonnes |
grid-rows-<n> |
Nombre de rangées |
gap-<size> |
Espace entre les cellules (aussi gap-x-/gap-y-) |
See the Pen Tailwind4 Grid Builder by TIM Montmorency (@tim-momo ) on CodePen .
Chaque enfant peut ensuite occuper plusieurs cellules :
| Classe (enfant) | Effet |
|---|---|
col-span-<n> |
Occupe n colonnes |
row-span-<n> |
Occupe n rangées |
col-start-<n> / col-end-<n> |
Position précise de début/fin (colonne) |
row-start-<n> / row-end-<n> |
Position précise de début/fin (rangée) |
https://www.tailwindgen.com/ (choisir le format HTML et non JSX)

Exercice - Tailwind
Intro à Tailwind | Layout
Responsive¶

Pour spécifier une classe à un breakpoint donné, il faut ajouter le préfixe du breakpoint à une classe Tailwind :
<prefixe>:<classe>
md:bg-red-100
Les différents breakpoints sont les suivants :
| Préfixe | Largeur minimale |
|---|---|
sm |
40rem |
md |
48rem |
lg |
64rem |
xl |
80rem |
2xl |
96rem |
See the Pen Tailwind4 Responsive by TIM Montmorency (@tim-momo ) on CodePen .

Exercice - Tailwind
Intro à Tailwind | Responsive
Interactivité¶
Les pseudo-classes comme :hover ou :focus sont configurables de la même façon que les breakpoints.
hover:<classe tailwind>
focus:<classe tailwind>
See the Pen Tailwind4 hover by TIM Montmorency (@tim-momo ) on CodePen .
Mode sombre (darkmode)¶

Tailwind vient nativement avec le concept de dark mode . Pour en faire usage, il existe quelques méthodes.
Méthode automatique (prefers-color-scheme)¶
Selon la préférence du navigateur. C'est la plus simple. Pour ce faire, il ne suffit que de spécifier l'état en darkmode avec dark:
dark:<classe tailwind>
<div class="bg-white dark:bg-black">
Fond en blanc par défaut, mais en noir si le OS est configuré en darkmode.
</div>
Méthode manuelle¶
On doit d'abord indiquer à Tailwind une règle spéciale via sa balise <style>.
Ainsi, si la classe dark est présente dans le HTML, cette partie sera forcée en darkmode.
<head>
...
<script src="https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4"></script>
<style type="text/tailwindcss">
@custom-variant dark (&:where(.dark, .dark *));
</style>
</head>
<button id="darkmode-toggle">Passer en mode clair</button>
...
<script>
// Ajoute/retire la classe "dark" sur la balise <html>
document.getElementById("darkmode-toggle").addEventListener("click", function() {
document.documentElement.classList.toggle('dark');
});
</script>
Transform¶
See the Pen Tailwind4 Transform Builder by TIM Montmorency (@tim-momo ) on CodePen .
La translation peut se faire en pourcentage avec des fractions (ex.: 1/4) ou des valeurs fixes (ex.: 4). Un axe (x, y) peut être spécifié. La valeur full représente une translation de 100%.
translate-<value>
translate-<axe>-<value>
La rotation se fait simplement en degrés. Un axe (x, y ou z) peut être spécifié.
rotate-<value>
rotate-<axe>-<value>
L'échelle (scale) se fait normalement en pourcentage (ex. 110 pour 110%). Un axe (x, y ou z) peut être spécifié.
scale-<value>
scale-<axe>-<value>
Une valeur négative peut être spécifié en appliquant un «-» avant la classe. (ex.: -scale-10)
Exercices¶

Exercice - Tailwind
Gratuit