B:B Cours web 2023-2024

CSS les propriétés

Les couleurs

Les couleurs peuvent s’appliquer en css à plusieurs éléments avec les propriétés suivantes :

background-color ou background pour le fond ou autrement dit la couleur d’arrière-plan

color pour la couleur du text

border-color ou border* (*avec autres valeurs)

*Pour les svg : stroke (couleur du contour) fill (couleur de remplissage)

Pour le choix de la couleur on peut utiliser comme valeur différents format de choix de couleur :

#RRVVBB = hexadecimal format à préconiser la plupart du temps
peut être raccourci pour les couleurs ayant pour la même lettre la même valeur p.ex un rouge : #f35 = #FF3355

*depuis peu, on peut ajouter aussi la transparence à la fin mais c’est pas easy à lire
#ff335575 = 75% opacité préféré le rgba

rgb(RRR,VVV,BBB) & rgba(RRR,VVV,BBB,AA) = format à préconiser quand il y a de la transparence = plus facile à lire

red black tomato : nom de la couleur. Éviter ce format il n’est pas précis et peut être réinterprété par le navigateur

h1 {
  color: #005B86;
  background-color: rgba(0,0,0,0.5);
  /* bordure */
  border-width: 0.08em;
  border-style: dotted;
  border-color:#f38
}
div.frame {
   background: lightyellow; /* = background-color raccourcie */
   color: #111;
   /* bordure raccourcie */
   border: 1px solid rgb(230, 50, 30);
}
/* pour les svg */
svg path{
 stroke:#f00;
 fill:rgba(0,255,12,.8);
}

Unités et dimensions

Il y a 2 catégories d’unité qu’on utilise sur le web. Les unités figées et les unités relatives.

Pour les unités figées : px (pixel) ou cm (centimètres) ou mm (millimètres) mais aussi deg (degrés pour les rotations). Nous n’utilisons plus trop les unités en pixel depuis que les sites doivent s’adapter aux écrans. Ces unités sont figées, c’est-à-dire qu’elles ne dépendent pas d’autres éléments externes. 16px seront toujours 16px, sur un mobile comme sur un écran 5k.

Les unités (ou dimensions) relatives : dépendent des dimensions d’un autre élément de référence. De ce fait, elles vont s’adapter en fonction de cet élément de référence.

% (pourcentage) = 0-100% de la taille du parent

em & rem (emphemeral unit / root empheral unit) : Dimensions relatives à la taille de la police de l’élément
a) parent = em (pour les marges intérieures (padding) ou extérieures (margin)
b) racine = rem (tout le reste) => la + utilisée, celle a préconiser
consultez cet excellent article qui explique les em & rem

vw & vh (viewport width / viewport height) : Dimension relative à la taille de la partie visible dans la fenêtre du navigateur

En résumé :
px = dimension figée => à éviter
em & rem = dimension relative à la taille de police (em pour parent) rem pour taille de police définie dans html (16px par défaut) => préconiser rem
% = pourcentage => pratique pour le flex = mettre des élément côte à côte (qu’on étudiera plus tard)
vw & vh = dimension relative à la taille de l’écran (on utilise peu vh mais pas mal vw)

Largeur et hauteur

width = (avec un d sinon ça veut dire avec) précise et force la largeur d’un élément
height = précise et force la hauteur d’un élément. ⚠️ en général, on ne force pas la largeur d’un élément, il prends la place dont il a besoin. Forcer la hauteur peut provoquer des chevauchements intempestifs.

Les max-width et min-width | max-height et min-height

Permet de déterminer une largueur ou hauteur minimum / maximum pour les blocs. Hyper pratique pour que les blocs de taille fluide ne soit pas trop petits ou trop grand. Ou pour occuper min-height:100vh afin de forcer une section à 100% du viewport

Le ratio largeur / hauteur

.gallery figure{
 aspect-ratio:16 / 9;
}

aspect-ratio: auto | 1 | 16 / 9 | 4 / 3
La propriété aspect-ratio permet de forcer un ratio largeur hauteur d’un bloc. S’utilise généralement sur les images ou les figure contenant une image. Ne l’utilisez pas sur d’autres bloc.

Espacements ou marges

Il existe 2 types de marges : internes et externes. Elles ont les 2 des sous-propriétés si on ne veut agir que sur une seule ou forcer une au l’autre.

margin = marges externes
margin-top
margin-right
margin-bottom
margin-left

padding = marges interne
padding-top
padding-right
padding-bottom
padding-left

Les propriétés margin et padding sont un raccourci des 4 autres et il existe plusieurs manières de l’écrire :

header{
  margin: 2rem; /* marge ext. de 2*16px partout */
}
main{
  margin: 2rem 3vw; /* marge ext. de 2*16px en haut et bas et 3% du viewport width à gauche et droite */
}
main article{
   margin:    1rem     1.8rem.    1.5rem     3rem; 
/* marge ext. ⬆️top     ➡️ droite  ⬇️ bas      ⬅️ gauche 
              (sens des aiguilles d'une montre 🕑) */
}

Idem pour padding (marges internes)

header{
  padding: 1.2rem; /* marges internes de 1.2*16px partout */
}
main{
  padding: 1.23rem 2.5vw; /* marges internes de 1.23*16px en haut et bas et 2.5% du viewport width à gauche et droite */
}
main article{
   padding:         1rem        1.8rem            1.5rem       3rem; 
/* marges internes  ⬆️top        ➡️ droite          ⬇️ bas        ⬅️ gauche 
                    (sens des aiguilles d'une montre 🕑) */
}

footer{
  margin: 1rem; /* marge idem partout */
  margin-top: 2rem; /* force la marge du haut à 2rem */
  padding : .5rem /* marge interne idem partout */
  padding-left: 1rem; /* force la marge interne à gauche */
  padding-bottom: .8rem /* force la marge interne en bas */
  /* pour le padding on aurait du écrire pour le même résultat */
  padding : .5rem .5rem .8rem 1rem; /* sens des aiguilles */
}
  

Propriétés liées au texte

h2{
 font-family : "Nom_De_La_Typo", Helvetica, Arial, Verdana, sans-serif;
}

font-family
détermine la police du texte.

h1{
 font-size : 2rem
}

font-size: 1rem;
détermine la taille du texte.
on utilise des rem si possible
on peut aussi utiliser font-size: clamp(16px,3vw,3rem)= miniumum 16px, 3vw (essaye), mais max 3rem)

h1{
 line-height : 1.12
}

line-height: 1.2;
permet de spécifier la hauteur d’une ligne de texte et donc aussi de gérer l’espace entre les lignes (généralement utilisé sans unité, donc basé sur le font-size

h3{
 font-weight:bold;
}

font-weight: normal(400) | bold (800) | 300 (light)
épaisseur de la police (plus ou moins gras). On peut spécifier la valeur bold pour rendre gras, ou une valeur entre 100 et 900 pour avoir plus de contrôle sur l’épaisseur. ⚠️ (chaque graisse doit être loadé avec un @font-face)

h3{
 font-style:italic;
}

font-style : normal | italic
permet de forcé l’italique ou de l’annuler ⚠️ (chaque style doit être loadé)

p#copyright{
 color:#ddd;
}

color : rgba(221,221,221,1)
couleur du texte

p#copyright{
 text-align: right;
}

text-align : left | center | right | justify
Alignement du texte dans un bloc

h1{
 text-transform: uppercase;
}

text-transform : uppercase | lowercase | capitalize | none
Modifier la « capitalisation » ( Majuscule Minuscule ) d’un bloc texte

nav a{
 text-decoration: none;
}

text-decoration : none | underline | line-through | overline
Modifier les décorations linéaires d’un mot par exemple si le mot est souligné ou barré, etc…

h1{
 text-shadow: 0 0 .2em #000;
}

text-shadow : x y flou couleur
Créer une ombre portée sous le texte



Les bordures

Les propriétés border en CSS permettent de définir les bordures des éléments HTML. Elles sont composées de trois propriétés principales :

.blog article{
 border-width:0.08rem;
 border-style:solid;
 border-color:#777;
}

border-width : définit l’épaisseur de la bordure, en rem ou em ou en px.

border-style : définit le style de la bordure, parmi les valeurs suivantes : solid : bordure pleine, dashed : bordure traitillé, dotted : bordure en pointillée
double : bordure double ligne

border-color : définit la couleur de la bordure.

.blog article{
 border:0.08rem solid #777;
}

border : width style couleur;
En règle général, on utilise la propriété raccourcie border qui permet de définir les trois propriétés border-width, border-style et border-color en une seule propriété.

.blog article{
 border-radius:1.2rem;
}

border-radius : xrem | xem | xpx | x% | xvw | xvh
Permet de définir des coins arrondis pour la bordure d’un élément

il existe pour chaque coin une propriété
border-top-left-radius , border-top-right-radius , border-bottom-right-radius , border-bottom-left-radius

C’est tout pour l’instant : affaire à suivre …