Aller au contenu

Cours 2

Tutorat

Qui Quand
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

Calendrier

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 :

Formulaire à remplir

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 .

Codepen

Valeur arbitraire

Il est également possible de spécifier une valeur arbitraire en l'inscrivant entre crochets.

Exemple
<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 :

Syntaxe
<prefixe>:<classe>
Exemple
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 .

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:

syntaxe
dark:<classe tailwind>
exemple
<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>

See the Pen Untitled by TIM Montmorency (@tim-momo ) on CodePen .

Partie javascript du bouton
<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