Séance 04 CSS3
Séance 04 CSS3
Niveau : S1
CSS3
Cascading Style Sheets 3
Contenu :
• Feuille de style. Définition.
• Où écrire une feuille de style
• Feuille de style de type « balise », « id » & « classe »
• Les sélecteurs avancés
• Autres propriétés CSS
• Création d’un Menu
Présenté par :
Redouane ESBAI
Année universitaire : 2024 / 2025
Codification des couleurs
Couleurs en La couleur est désignée par son code hexadécimal : les deux premiers digits correspondent à
background-color : #808080
hexadécimal la valeur de rouge, les deux suivants le vert et les deux derniers le bleu
Couleurs La couleur est définie par trois nombres décimaux qui peuvent prendre les valeurs de 0 à 255
background-color : RGB( 128,128,128 )
décomposées indiquant respectivement le taux de rouge, le taux de vert et le taux de bleu.
Unités de mesure
Les unités relatives font varier la taille d’un élément en fonction de la taille de la police ou de l’élément parent.
Les unités dites « relatives au texte » sont utilisées pour harmoniser les éléments d’un design. Ces unités sont les suivantes:
• rem : fait toujours référence à la taille de la police de l’élément racine. Elle dépend du font-size définit par défaut.
Les unités relatives au viewport permettent aux éléments de s’adapter à la taille de la fenêtre du navigateur. Elle sont
essentielles pour mettre en place un design responsive :
Cinq familles sont distinguées : serif (Times, etc.), sans-serif (Arial, Helvetica, etc.), cursive, monospace, Fantasy.
Les polices sont associées de préférence « en pile ». Dans l’exemple suivant, si le visiteur du site n’a pas la police Helvetica Neue
sur sa machine, on passe automatiquement à la suivante et ainsi de suite.
p{
font-family:'Helvetica Neue',Helvetica,sans-serif;
}
@font-face {
font-family: 'newFont';
src: url('PARCHM.ttf');
Règle @font-face : permet d’importer un font (extension .ttf)
}
p{
font-family:'newFont';
}
Les sélecteurs complexes
Exemple :
le code suivant permet de colorier tous les textes du document en marron.
*{
color : brown;
}
Les sélecteurs complexes
Les sélecteurs d'attribut "[ ]"
Ce sélecteur permet de cibler des éléments d'un document en fonction de la valeur d'un de leurs attributs.
• [attr] : cible un élément qui possède un attribut attr.
• [attr=valeur] : cible un élément qui possède un attribut attr dont la valeur est exactement valeur.
• [attr~=valeur] : cible un élément qui possède un attribut attr dont la valeur est égale à la valeur spécifiée.
• [attr|=valeur] : cible un élément qui possède un attribut attr dont la valeur est exactement égale à valeur ou dont la valeur
commence par valeur suivi immédiatement d'un tiret.
• [attr^=valeur] : cible un élément qui possède un attribut attr dont la valeur commence par valeur.
• [attr$=valeur] : cible un élément qui possède un attribut attr dont la valeur se termine par valeur.
• [attr*=valeur] : cible un élément qui possède un attribut attr et dont la valeur contient au moins une occurrence de valeur
dans la chaine de caractères.
Les sélecteurs complexes
Exemple :
/* Les éléments <a> avec un attribut title */
a[title] { color : purple; }
/* Les éléments <a> avec un href qui correspond à "https ://example.org" */
a[href="https ://example.org"] { color : green; }
/* Les éléments <a> dont href contient "example" */
a[href*="example"] { font-size : 2em; }
/* Les éléments <a> dont href finit par ".org" */
a[href$=".org"] { font-style : italic; }
/* Les éléments <a> dont l'attribut class contient le mot logo */
/* comportement identique à a.logo */
a[class~="logo"] {
padding : 2px;
}
Les sélecteurs complexes
Exemple :
li :first-of-type + li {
color : red;
}
<ul> Résultat :
<li>Un</li>
<li>Deux</li> • Un
<li>Trois</li> • Deux
</ul> • Trois
Les sélecteurs (pseudo-classes)
Pseudo-classes
Une pseudo-classe est un mot-clé qui peut être ajouté à un sélecteur afin d'indiquer l'état spécifique dans lequel
l'élément doit être pour être ciblé par la déclaration.
Exemple : La pseudo-classe :hover permettra d'appliquer une mise en forme spécifique lorsque l'utilisateur
survole l'élément ciblé par le sélecteur (changer la couleur d'un bouton par exemple).
Les sélecteurs (pseudo-classes)
Liste des pseudo-classes
sélecteur exemple Description
: checked input :checked Tout élément de formulaire sélectionné
: désactivé input :disabled Sélectionnez tous les éléments de formulaire désactivé
: vide p :empty Sélectionnez tous les éléments p aucun enfant
: activé input :enabled Sélectionnez tous les éléments de formulaire activés
: First-of-Type p :first-of-type Sélectionnez chaque élément parent et les premiers éléments p p élément enfant
: In-gamme input :in-range Sélectionnez les valeurs des éléments dans une plage spécifiée
: invalide input :invalid Sélectionnez tous les éléments non valides
: Last-child p :last-child Sélectionnez tous les éléments p dans le dernier élément enfant
: Dernier-type p :last-of-type Sélectionner chaque élément p est le dernier élément d'un élément parent p
: Non (sélecteur) :not(p) Sélectionnez tous les éléments autres que le p
: Nth-child (n) p :nth-child(2) Sélectionner tous les éléments p dans le deuxième sous-élément
: Nth-last-child (n ) p :nth-last-child(2) Sélectionnez tous les éléments de l'inverse de p second élément enfant
: Nth-last-of-type (n) p :nth-last-of-type(2) Sélectionner tous les éléments p est l'inverse du deuxième sous-élément p
: Nth-of-type (n ) p :nth-of-type(2) Sélectionnez tous les éléments p dans le deuxième sous-élément pour la p
: Seulement-of-type p :only-of-type Sélectionnez tout simplement un élément de p éléments de l'enfant
: Seul enfant p :only-child Sélectionnez tout simplement un élément de p éléments de l'enfant
: en option input :optional Choisissez pas l'attribut "nécessaire" de l'élément
: Out-of-range input :out-of-range Sélectionnez élément d'attribut en dehors de la plage de valeurs
Les sélecteurs (pseudo-classes)
Liste des pseudo-classes
Le principe du positionnement en CSS permet de définir l’emplacement des boites générées pour chaque élément de la page.
1. Le flux normal : consiste à garder le flux normal des éléments selon leur ordre et leur type (bloc , inline)
La propriété float est utilisée pour positionner et formater le contenu. Par exemple, faire flotter une image à gauche du texte
dans un conteneur.
img{
width : 100px;
height : 100px;
}
Si la COVID-19 se propage dans votre communauté, protégez-vous en prenant quelques précautions
Simples, comme maintenir une distance physique avec autrui, porter un masque, bien ventiler les pièces,
éviter les rassemblements, vous laver les mains et tousser dans votre coude replié ou un mouchoir. Suivez
Les recommandations locales là où vous vivez et travaillez. Faites tout cela!
flux normal
Exemple 2 : avec float = left
img{
width : 100px; Si la COVID-19 se propage dans votre communauté, protégez-vous en prenant quelques précautions
Simples, comme maintenir une distance physique avec autrui, porter un masque, bien ventiler les pièces,
height : 100px; éviter les rassemblements, vous laver les mains et tousser dans votre coude replié ou un mouchoir. Suivez
float : left; Les recommandations locales là où vous vivez et travaillez. Faites tout cela!
}
Propriété float en CSS
Utilisation des conteneurs Flex (FlexBox)
La méthode Flexbox facilite la structuration et la mise en page souple et réactive, sans utiliser les marges et le positionnement.
La page est décomposée en un agencement de boites qui peuvent se suivre (boites voisines ) et s'imbriquer (boites ancêtres).
En définissant les tailles et les interactions entre les différentes boîtes, on obtient une adaptation automatique des éléments de la page lorsqu'elle est redimensionnée.
Le conteneur flex (flex container) ou bien la boite dite « parent », contient les éléments flex (flex items) ou bien les boites « enfants ».
L'idée est définir, en utilisant les différentes propriétés CSS, l'ordre des "boites enfants" dans la "boite parent".
Utilisation des conteneurs Flex (FlexBox)
<div class="conteneur">
La boite se transforme en "conteneur flex" dès lors qu'on lui attribue la propriété CSS "flex"comme montré dans le code CSS suivant :
.conteneur {
display : flex;
}
Utilisation des conteneurs Flex (FlexBox)
• row : les éléments flex se suivent sur une ligne, ce qui correspond à la direction normale du sens d'écriture du document
• row-reverse : les éléments flex se suivent sur une ligne en ordre inversé. ce qui correspond à la direction inverse du sens d'écriture du document
• column : les éléments flex se suivent sur une colonne. column-reverse : les éléments flex se suivent sur une colonne en ordre inversé
Utilisation des conteneurs Flex (FlexBox)
élément flex 1 élément flex 2 élément flex 3 élément flex 1 élément flex 2 élément flex 3
axe principal
Figure 43: Exemple de flex-direction row Figure 44: Exemple de flex-direction column
Le choix des axes est essentiel car leur orientation va déterminer le résultat de l'application des propriétés suivantes :
justify-content : définit comment les éléments flex sont positionnés le long de l'axe principal ;
align-items : définit comment les éléments flex sont positionnés le long de l'axe secondaire ;
align-self : définit comment un seul élément flex est positionné le long de l'axe secondaire.
Utilisation des conteneurs Flex (FlexBox)
Exemple 1 : justify-content : flex-start => les éléments flexibles sont placés à partir de la ligne de début du conteneur sur l'axe principal.
Exemple 2 : justify-content : flex-end => les éléments flexibles sont placés à partir de la ligne de fin du conteneur sur l'axe principal.
Exemple 3 : justify-content : center => les éléments flexibles sont centrés le long de l'axe principal.
Exemple 4 : justify-content : space-between => l'espace disponible est réparti de façon égale entre chaque élément.
Exemple 5 : justify-content : space-around => l'espace disponible est réparti de façon égale entre chaque élément, y compris au début et à la fin.
Exemple 6 : justify-content : space-evenly => l'espace disponible est réparti de façon égale entre chaque élément avec un espace entier au
début et à la fin.
Exemple 1 : align-items : stretch => les éléments flexibles sont étirés le long de l'axe secondaire.
Exemple 1 : align-items : flex-start => les éléments flexibles sont alignés sur la ligne de début de l'axe secondaire.
Élément 4
Élément 1 Élément 3
Élément 2
Exemple 3 : align-items : flex-end => les éléments flexibles sont alignés sur la ligne de fin de l'axe secondaire.
Élément 2
Élément 1 Élément 3
Élément 4
Exemple 4 : align-items : center => les éléments flexibles sont centrés sur la ligne d'axe secondaire.
Exemple 5 : align-items : baseline => les éléments flexibles sont alignés sur leur ligne de base (les textes sont alignés).
2 heures
ADAPTER UNE PAGE WEB AU DISPOSITIF 1. Introduction au Responsive Design
D’AFFICHAGE 2. Media Queries
Introduction au Responsive Design
• Le Responsive web design consiste à utiliser les langages CSS et HTML pour redimensionner, masquer, réduire, agrandir ou déplacer le contenu d’une page pour
s’adapter à l’écran d’affichage
ADAPTER UNE PAGE WEB AU DISPOSITIF 1. Introduction au Responsive Design
D’AFFICHAGE 2. Media Queries
Les media queries
Les medias queries dans CSS3 ont étendu l'idée des types de médias CSS2 : examiner la capacité du périphérique au lieu de chercher son type.
Les requêtes multimédias peuvent être utilisées pour vérifier de nombreuses propriétés, telles que :
6 heures
1. Manipulation des propriétés d’animation
CRÉER DES ANIMATIONS 2. Types d’animation (transition, transformation…)
3. Utilisation des keyFrames
Manipulation des propriétés d’animation
Propriétés d’animation
La propriété raccourcie (ou bien les propriétés détaillées correspondantes ) est utilisée pour créer une animation CSS. Elle permet de configurer la durée, le minutage et
d'autres détails de l'animation.
L'apparence visuelle de l'animation est définie en utilisant des règles CSS de mise en forme au sein de la règle @keyframes.
animation-name : Cette propriété déclare un nom à l’animation (utilisé comme référence à l'animation pour la règle @keyframes ).
animation-delay : Cette propriété définit le délai entre le chargement de l'élément et démarrage de l'animation.
animation-iteration-count : Cette propriété détermine le nombre de répétition de l'animation. Pour répéter une animation infiniment, On utilise la valeur infinite.
animation-direction : Cette propriété précise si l'animation doit alterner entre deux directions de progression (faire des allers-retours) ou recommencer au début à
chaque cycle de répétition.
Manipulation des propriétés d’animation
Propriétés d’animation
animation-fill-mode : Cette propriété indique les valeurs à appliquer aux propriétés avant et après l'exécution de l'animation.
animation-play-state : Cette propriété permet d'interrompre (« pause ») ou de reprendre l'exécution d'une animation.
1. Manipulation des propriétés d’animation
CRÉER DES ANIMATIONS 2. Types d’animation (transition, transformation…)
3. Utilisation des keyFrames
Types d’animation
Animations CSS
CSS permet l'animation d'éléments HTML sans utiliser JavaScript
Une animation permet à un élément de passer progressivement d'un style à un autre en modifiant les propriétés CSS
Les transformations 2D
Les transformations CSS 2D permettent de déplacer, faire pivoter, mettre à l'échelle et incliner des éléments.
div { div {
width : 300px; width : 300px;
height : 100px; height : 100px;
background-color : cyan; background-color : cyan;
border : 1px solid black; border : 1px solid black;
} }
div :hover{ div :hover{
transform : translate(50px,100px); transform : rotate(20deg);
} }
Types d’animation
Les transformations 2D
div { div {
width : 300px; width : 300px;
height : 100px; height : 100px;
background-color : cyan; background-color : cyan;
border : 1px solid black; border : 1px solid black;
} }
div :hover{ div :hover{
transform : scale(2,3); transform : skew(20deg,10deg);
} }
Types d’animation
Transitions CSS
Les transitions CSS permettent de modifier les valeurs des propriétés sur une durée donnée.
Exemple : un élément <div> rouge de 100 px * 100 px subit un effet de transition pour la propriété width, d'une durée de 2 secondes :
div {
width : 100px;
height : 100px;
background : red;
transition : width 2s;
}
Lorsqu'un utilisateur passe la souris sur l'élément <div>, une nouvelle valeur pour la propriété width s’applique.
L'effet de transition démarre lorsque la propriété CSS spécifiée (largeur) change de valeur.
div {
div :hover {
transition :width 2s, height 4s;
width : 300px;
}
}
1. Manipulation des propriétés d’animation
CRÉER DES ANIMATIONS 2. Types d’animation (transition, transformation…)
3. Utilisation des keyFrames
Utilisation des keyFrames
La règle @keyframes
La spécification d’un style CSS à l'intérieur de la règle @keyframes permet à une animation de passer progressivement du style actuel au nouveau style.
@keyframes example {
Exemple 1 : from {background-color : red;}
to {background-color : yellow;}
}
La règle @keyframes
Exemple 2 :
@keyframes example {
0% {background-color : red;}
25% {background-color : yellow;}
50% {background-color : blue;}
100% {background-color : green;}
}
/* The element to apply the animation to */
div {
width : 100px;
height : 100px;
background-color : red;
animation-name : example;
animation-duration : 4s;
}
Utilisation des keyFrames
La règle @keyframes
Exemple 3 :
@keyframes example {
0% {background-color :red; left :0px; top :0px;}
25% {background-color :yellow; left :200px; top :0px;}
50% {background-color :blue; left :200px; top :200px;}
75% {background-color :green; left :0px; top :200px;}
100% {background-color :red; left :0px; top :0px;}
}
div {
width : 100px;
height : 100px;
position : relative;
background-color : red;
animation-name : example;
animation-duration : 4s;
}