Programmation Web AvancéeCSS
Programmation Web AvancéeCSS
Avancée
PWA
[email protected]
2020-2021
1
Cascading Style Sheets
(CSS)
Il y a trois méthode pour introduire CSS dans un document HTML :
1. Directement dans les balises du fichier HTML via un attribut style;
<h1 style="color:blue;">This is a Blue
Heading</h1>
2. Dans l'en-tête <head> du fichier HTML ;
<head>
<style>
body {background-color: powderblue;}
h1 {color: blue;}
p {color: red;}
</style>
</head>
3
3. Dans un fichier .css (méthode la plus recommandée) ;
<head>
<link rel="stylesheet" href="styles.css">
</head>
L’attribut rel va préciser le type de fichier ( « stylesheet » pour feuille de style)
et href va indiquer l’adresse relative du fichier CSS.
Le fichier styles.css: Sélecteur { propriété : valeur ;}
Un sélecteur qui détermine à quel élément les styles correspondant seront
appliquées
Une propriété qui détermine le style qui sera appliquée à un élément
Une valeur qui détermine le comportement d’une propriété
body {background-color: powderblue;}
h1,h2 {color: blue;}
p {color: red;}
4
Les sélecteurs les plus utilisés comprennent des éléments, des identifiants et des
classes:
1. Les sélecteurs de type : le style sera appliqué à l’ensemble des éléments du même
type
p {color: red;}
5
3. Les sélecteurs d’ID sont utilisés pour cibler un élément UNIQUE
sur le document
#p01 {
color: blue;
}
<p id="p01">I am different</p>
6
On peut sélectionner les éléments auxquels un style s'applique :
*: tous les éléments
x: tous les éléments dont la balise est x
.foo: tous les éléments dont l'attribut class contient foo
x.foo: (sans espace) tous les éléments dont l'attribut class contient foo
et dont la balise est x
#foo: l'élément dont l'attribut id vaut foo (les id doivent être uniques)
X Y: tous les éléments selectionnés par Y qui sont des descendants
des éléments sélectionnés par X
X,Y: tous les éléments sélectionnés par X ou par Y
X>Y: tous les éléments dont sélectionnés par Y qui sont des fils
d'éléments sélectionnés par X 7
• Dans un document HTML, chaque élément est représenté par une boîte
rectangulaire qui peut être ajustée grâce à des propriétés CSS spécifiques.
8
• La propriété display contrôle le mode d'affichage d'un élément:
• none : l'élément n'est pas dessiné et n'occupe pas d'espace.
• inline : l'élément est placé sur la ligne courante.
• block : l'élément est placé seul sur sa ligne
• Inline-block: positionné comme inline mais la taille peut être modifiée comme
pour block.
9
Le type de positionnement est donné par la propriété position
• static : positionnement « automatique »
• fixed : positionnement fixé par rapport a la fenêtre du navigateur
(l’élément reste
à la même place, même si l’un des visiteurs "scroll" dans la page.
Ex: les contacts (Facebook).
• relative : positionnement « relatif » par rapport à sa position normale. Si on positionne
un
élément HTML de façon relative et qu’on lui ajoute left:50px, l’élément sera
déplacé de
50 pixels vers la droite par rapport à sa position par défaut.
• absolute : nous permet de positionner un élément de façon relative par rapport à son
parent
le plus proche auquel on a appliqué un positionnement spécifique (relative, fixed ou
absolute)
10
• Lorsque deux éléments se chevauchaient, il y a toujours un au-dessus de l’autre.
Dans ce cas, on peut utiliser la propriété z-index pour définir l'ordre d'empilement
(plus elle est élevée, plus la boite est en avant plan). Le z-index par défaut vaut zéro,
11
• La propriété float nous permet de « flotter » des éléments HTML à gauche ou à
droite dans une page web selon qu'on lui ait attribué la valeur left ou right. Les
éléments suivants un élément flottant vont se positionner à côté de celui-ci par
défaut.
• Par défaut dans les navigateurs, les éléments positionnés grâce à la propriété CSS
float sortent du flux de leur conteneur, celui-ci va déborder de son conteneur
verticalement.
12
• Afin d’éviter ce comportement, on peut utiliser la propriété overflow. Cette
propriété peut prendre les valeurs suivantes :
– Scroll : coupe ce qui dépasse et ajoute une barre de défilement afin d’avoir
accès à tout le contenu ;
13
• Les pseudo classes (commencent tous par le symbole :) vont nous permettre de
changer le style d’un élément HTML selon son état. Par exemple, nous allons pouvoir
afficher un paragraphe en gras lorsque l’utilisateur passe sa souris dessus ou changer la
couleur d’un lien une fois celui-ci cliqué.
• :visited va nous permettre de styliser un lien une fois celui-ci visité.
• :hover permet de spécifier l'apparence d'un élément au moment où l'utilisateur le
survole avec le pointeur;
h1:hover {
color: blue;
}
• :active va nous permettre de modifier l’aspect d’un lien lors du clic.
• :first-child: permet de cibler un élément qui est le premier élément fils par
rapport à son élément parent.
• :last-child: permet de cibler un élément qui est le dernier enfant de son parent.
• :first-letter et :first-line correspondent respectivement au premier
caractère et à la première ligne de texte au sein d’un élément.
14
p:first-child {
color: blue;
}
p:last-child {
background: #ff0000;
}
<p>This is some text.</p>
<p>This is some text.</p>
<p>This is some text.</p>
<p>This is some text.</p>
15
• ::before et ::after permettent d’ajouter du contenu directement après ou directement
avant un élément via CSS, sans que celui-ci ne soit présent dans le document HTML . Ces
pseudo éléments vont devoir être utilisés avec la propriété CSS content qui va nous
permettre d’ajouter toute sorte de contenu (du texte, des images, etc.).
p::after {
• Nous pouvons laisser la propriété content vide et traiter le pseudo-élément comme une
boîte vide :
p::after {
content: "";
display: block;
width : 100px; 16
La fonction attr() est utilisée afin de récupérer la valeur d'un attribut d'un élément
pour l'utiliser dans la feuille de style.
Dans l'exemple suivant on illustre ::after avec l'expression CSS attr() et un
attribut de données personnalisé data-descr afin de créer une bulle d'information de
type glossaire en CSS pur.
span[data-descr]{
position: relative; 17
span[data-descr]:hover::after {
content: attr(data-descr);
position: absolute;
left: 0;
top: 24px;
min-width: 200px;
border: 1px #aaaaaa solid;
border-radius: 10px;
background-color: #ffffcc;
padding: 12px;
color: #000000; font-size: 14px; z-index: 1;
}
18
• Les transitions CSS permettent un passage en douceur de l’ancienne vers la
nouvelle valeur d’une propriété CSS lorsqu’un événement est déclenché :
La durée de l'animation
• Propriété à animer : transition-property
cette propriété accepte trois valeurs :
1. all (valeur par défaut) : toutes les propriétés possibles seront animées ;
2. propriété : le nom d’une propriété pouvant être animée ;
3. none : aucune propriété ne sera animée. 19
• Durée de l’animation : transition-duration
20
• la notation raccourcie transition cumule tous ces aspects.
.box:hover {
background-color: #FFCCCC;
width: 200px;
height: 200px;
}
21
<canvas> est un nouvel élément HTML qui peut être utilisé pour dessiner des
éléments graphiques 2D en Javascript à la volée.
<canvas id="myCanvas" width="200" height="100">Your browser does not
support the canvas tag </canvas>
<script>
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.moveTo(0,0);
ctx.lineTo(200,100);
ctx.stroke();
</script>
moveTo(x, y) : Déplace le stylo aux coordonnées x et y.
lineTo(x, y): Dessine une ligne de la position de dessin courante à la position
spécifiée par x et y.
stroke(): Dessine le trajet en traçant son contour. 22
<script>
var canvas = document.getElementById('"myCanvas"');
var ctx = canvas.getContext('2d');
ctx.fillRect(25,25,100,100);
ctx.clearRect(45,45,60,60);
ctx.strokeRect(50,50,50,50);
</script>
23
• SVG est un format de données conçu pour décrire des ensembles de graphiques
vectoriels et basé sur XML. On peut inclure une image SVG directement dans le
code du document.
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="green" stroke-
width="4" fill="yellow" />
</svg>
SVG est un format d'image léger lorsqu'il s'agit de représenter des formes simples, car
seules les informations décrivant ces formes sont stockées (coordonnées, couleurs,
effets) contrairement aux images bitmap (JPG, PNG, GIF) qui doivent mémoriser le
contenu pixel par pixel.
24
• L'élément <video>, offre en HTML5 une solution simple pour l'intégration
d'une vidéo dans une page web. On peut également proposer plusieurs sources
dans plusieurs formats différents en indiquant les types grâce à l'attribut type :
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
Your browser does not support the video tag.
</video>
L’attribut controls donne accès aux contrôles de lecture (boutons
de navigation, volume, etc, selon les possibilités du navigateur)
25