Cours 11¶
Hygiène CSS¶

Lorsqu'on écrit des classes CSS, on peut écrire n'importe quoi et la fonctionnalité ne sera pas affectée. Par contre, à la lecture, il est intéressant de comprendre ce que fait le style, sinon c'est plus laborieux.
<div class="asdfasdf">
🤷
</div>
.asdfasdf {
width: 100%;
height: 30vh;
position: relative;
background: #ccc;
padding: 15px;
margin: 1rem auto;
}
<div class="slideshow">
👌
</div>
.slideshow {
width: 100%;
height: 30vh;
position: relative;
background: #ccc;
padding: 15px;
margin: 1rem auto;
}
BEM¶

BEM (Block Element Modifier), c’est une façon de nommer les classes CSS pour que le code reste clair et organisé.
.block {
}
.block__element {
}
.block__element--modifier {
}
Bloc¶

Un block, c’est une composante.
Les composantes... vous vous souvenez ? Dans le cours 1
Exemple : une carte, un menu, un bouton, un formulaire.
<div class="card">
...
</div>
Élément¶

Un element, c’est une partie du bloc qui n’a pas de sens tout seul.
Exemple : le titre, l’image ou le bouton d’une carte.
<div class="card">
<h2 class="card__title">Titre</h2>
<p class="card__text">Texte descriptif</p>
</div>
Modificateur¶

Un modifier, c’est une variante du block ou de l’élément.
Exemple : une carte “active”, un bouton “rouge”, un titre “grand”.
<div class="card card--shadow">
<h2 class="card__title card__title--large">Titre</h2>
</div>
--shadow et --large indiquent des versions différentes, sans créer un nouveau composant.
utility-first¶

Pas facile de le franciser celui-là.
En « utility-first », au lieu de créer des classes pour des composantes, on utilise plein de petites classes "utilitaires" qui font une seule chose chacune.
Présentement, c'est ce qui est le plus utilisé en entreprise, mais ça prends son sens seulement quand on travaille avec des technologies un peu plus haut niveau que ce qu'on fait en Web 1. Voici tout de même le concept.
BEM
<button class="btn">
Envoyer
</button>
.btn {
background-color: #007bff;
color: white;
padding: 0.5rem 1rem;
border-radius: 0.5rem;
}
utility-first
<button class="bg-blue color-white p-2 rounded">
Envoyer
</button>
.bg-blue {
background-color: #007bff;
}
.color-white {
color: white;
}
.p-2 {
padding: 0.5rem;
}
.rounded {
border-radius: 0.5rem;
}
En utility-first, on composer le design directement dans le HTML, un peu comme avec des LEGO.
Bref
L'important c'est surtout d'écrire les classes (class) et les identifiants (id) pour qu'on comprenne ce qu'ils font.
Imbrication CSS¶

L'imbrication CSS (ou CSS nesting) est une technique d'organisation du CSS. Elle permet d'imbriquer des classes entre elles afin de visualiser l'aspect hiérarchique.
Par exemple, un style de card conventionnel pourrait ressembler à ceci :
.card {
padding: 2rem;
border-radius: 1rem;
background-color: #444;
}
.card .card--title {
font-size: 26px;
font-weight: bold;
font-family: sans-serif;
margin: 0;
}
.card .card--title.card--title__light {
color: greenyellow;
}
La version imbriquée ressemblerait à ceci :
&
L'esperluette (&) représente le sélecteur parent (le sélecteur courant).
.card {
&.active { /* identique à : .card.active */ }
& img { /* identique à : .card img */ }
&:hover { /* identique à : .card:hover */ }
& + & { /* identique à : .card + .card */ }
}
aspect-ratio¶
Le ratio d’image décrit la forme d’une image, c’est-à-dire la relation entre sa largeur et sa hauteur. Ils sont normalement écris de la manière suivante :
- 1:1
- 4:3
- 16:9
En CSS, la propriété CSS aspect-ratio définit un ratio d'affichage. Au lieu d'avoir un ":" pour réparer les chiffres, en css on écrit un slash "/".
.mon-style {
aspect-ratio: 16 / 9;
}
ratio et images¶
Si on veut que les images conservent leur ratio original peu importe la configuration css, il suffit d'inscrire les dimensions de l'image en html. Ex :
<img src="..." alt="..." width="123" height="456">
opacity¶

La propriété opacity ressemble à ce que fait rgba pour la couleur. Elle permet de gérer l'opacité d'un élément. Une valeur de 0 correspond à une transparence complète, tandis qu'une valeur de 1 correspond à une opacité complète.
Important à savoir, ça affecte aussi les enfants (héritée visuellement).
.mon-style {
opacity: 0.5;
}
box-shadow¶
La propriété CSS box-shadow fonctionne un peu comme le text-shadow.
Ça ajoute des ombres à un élément. Ils peuvent être en flou ou pas et peuvent être à l'intérieur ou à l'extérieur
.mon-style {
box-shadow: 10px 10px red;
/* ou */
box-shadow: 0 0 10px red;
/* ou */
box-shadow: inset 5px 5px 5px red;
/* ou */
box-shadow: 10px 10px red, 20px 20px blue;
}
Raccourcis clavier¶

- Sélectionner tout le texte : Ctrl+A
- Sauvegarder : Ctrl+S
- Annuler (Undo) : Ctrl+Z
- Refaire (Redo) : Ctrl+Shift+Z ou Ctrl+Y
- Copier : Ctrl+C
- Couper : Ctrl+X
- Coller : Ctrl+V
- Coller sans mise en forme : Ctrl+Shift+V
- Ouvrir un onglet fermé : Ctrl+Shift+T
- Changer d’application ouverte (task switcher) : Alt+Tab
- Chercher : Ctrl+F
Mac
La plupart du temps, les variations pour mac remplacent Ctrl par Cmd.
Prochain cours : examen 02¶
Révision avec le prof 🧑🏫
Exercices¶

Exercice - CSS
Néomorphisme

Exercice de révision CSS
Priorités

Exercice - CSS
Discord

Exercice - CSS
Discord, la suite
