Bases en css
les fondamentaux du css: cascade et héritage: MDN
Les sigles « CSS » sont l’abréviation de « Cascading StyleSheets » ou « feuilles de styles en cascade » en français.
Le CSS vient résoudre un problème bien différent du HTML : en effet, le HTML sert à définir les différents éléments d’une page, à leur donner du sens. Le CSS, lui, va servir à mettre en forme les différents contenus définis par le HTML en leur appliquant des styles.
Si votre navigateur affiche par défaut les contenus textuels que vous avez déclaré comme des titres en HTML en grand et en gras et à l’inverse les paragraphes en plus petit c’est justement parce que chaque navigateur possède sa propre feuille de styles. En fournissant nos styles CSS pour les différents contenus de notre page, nous allons donc pouvoir définir l’apparence de ceux-ci puisque les styles que nous allons fournir vont être considérés comme prioritaires par rapport à ceux du navigateur. C’est le principe du style en cascade (CSS)
Une déclaration en CSS
Une règle typique est composée de trois parties :
- un sélecteur,
- une propriété,
- une valeur
La valeur de la propriété se met après le séparateur :
.
Ces règles deviennent des déclarations lorsque celles-ci comprennent plusieurs couples propriété-valeur :Les règles sont alors séparées par un point-virgule ;
, dans la même accolade:
selecteur {
propriete 1: valeur;
propriete 2: valeur;
}
Le selecteur fait référence à un ou plusieurs éléments du document.
indexer les parties du document
Classes et identifiants L’un des attributs des éléments HTML peut servir à indexer cet élément :
- de manière unique : l’attribut
id="valeur"
: une seule valeur d’attributid
peut être utilisée dans tout le document HTML. L’attribut id sert, comme son nom l’indique, à identifier un élément HTML en particulier dans une page pour ensuite pouvoir le cibler précisément (pour lui appliquer des styles CSS, ou bien créer un lien vers cet élément). - avec un attribut de classe :
class="valeur"
: ici, plusieurs éléments peuvent avoir la même classe. On pourra alors séléctionner (en css et en javascript) tous les éléments possédant cette classe, avec une seule instruction.
Remarque: Plusieurs classes peuvent être associées à un élément HTML en les séparant par un espace : <h1 class="titre lexique">
Selecteurs
Pour pouvoir appliquer un style à un contenu, il va déjà falloir le cibler, c’est-à-dire trouver un moyen d’indiquer qu’on souhaite appliquer tel style à un contenu en particulier.
Pour cela, nous allons utiliser des sélecteurs.
selecteur | effet |
---|---|
h1 | Le nom d’une balise. Toutes les balises de ce nom contenues dans le document seront concernées. |
h1,h2,h3 | Plusieurs sélecteurs séparés par des virgules.Toutes les balises énumérées sont concernées. |
#logo | Le caractère # indique un identifiant. La balise avec cet ID est concernée.Exemple img id=“logo” src="…"/. |
.bidule | Le point introduit une classe. Toutes les balises comportant un attribut class de ce nom sont concernées.Exemple : p class=“bidule” |
tab img | Plusieurs sélecteurs séparés par un espace : inclusion. Les balises img incluses dans un tableau sont concernées. Il peut exister des niveaux intermédiaires : ici il y aura probablement au moins des balises tr et td. |
Règles principales
Règles appliquées aux textes
Tutoriel complet: developer.mozilla.org
Quelques propriétés CSS relatives aux textes
paramètre | valeurs possibles | effet |
---|---|---|
color | blue, yellow, red, … | colorie le texte selon le nom anglais de la couleur |
color | rgb(0..255, 0..255, 0..255) | selon le code RGB sur un octet chacun |
color | #0..F0..F0..F | selon le code RGB exprimé en hexadecimal, sans separateur |
background-color | idem color | couleur de fond |
font-family | arial, courier new… | choix de la police de caractères |
font | italic 12 px sans-serif | informations complémentaires pour la police |
text-align | center, left, right, justify | alignement du texte |
font-weight | bold | mettre en gras |
Règles appliquées aux boites
Tutoriel complet: developer.mozilla.org
En CSS, tout élément est inclus dans une boîte
paramètre | valeurs possibles | effet |
---|---|---|
border | solid, dashed, none | bordure en trait plein, pointillé, sans bordure |
margin | 1px | marge exterieur, dimension en pixels |
padding | 1px | marge intérieure |
Rappel sur la propriété display
- Les balises s’affichant en “block” (bloc) : elles prennent toute la largeur disponible et s’affichent avec un saut de ligne avant et après. On peut les dimensionner avec les propriétés
width
etheight
. Elles n’accèptent pasvertical-align
- Les balises s’affichant en “inline” (dans la ligne) : elles prennent uniquement la largeur dont elles ont besoin, sans ajouter de saut de ligne. Elles acceptent
vertical-align
, mais paswidth
etheight
.
CSS intermediaire
héritage
L’héritage des CSS est fondé sur le modèle Parent-Enfant(s) : chaque élément Enfant reçoit en héritage tous les styles de son élément Parent. Par exemple, la balise <html>
est parent de <body>
, et <table>
est parent de <tr>
qui lui-même est parent de <td>
. Cet héritage est très pratique et permet d’éviter beaucoup de répétitions inutiles.
Précision : l’élément enfant héritera de toutes les propriétés de l’élément parent uniquement si ces propriétés s’héritent, car l’héritage ne fonctionne pas non plus sur toutes les propriétés css (margin, padding et autres propriétés de bloc).
Pour appliquer une propriété de style “par défaut” à un document, un auteur peut l’appliquer à la racine de l’arbre du document.
Par exemple ici, tous les descendants de l’élément BODY auront la valeur de couleur ‘black’, la propriété ‘color’ étant héritée :
BODY { color: black; }
Les valeurs de pourcentage spécifiées ne sont pas héritées, celles calculées le sont.
Par exemple, cette feuille de style :
BODY { font-size: 10pt }
H1 { font-size: 120% }
et cet extrait d’un document :
<BODY>
<H1>Un <EM>grand</EM> titre</H1>
</BODY>
Ici, la propriété ‘font-size’ de l’élément H1 aura une valeur calculée de ‘12pt’ (120% de la valeur de son parent). Et, comme la valeur de la propriété ‘font-size’ est héritée, la valeur calculée pour l’élément EM sera aussi ‘12pt’.
Selection, compléments
selecteur | effet |
---|---|
td > img | Plusieurs sélecteurs séparés par un caractère supérieur : inclusion directe.Les balises img directement incluses dans une cellule de tableau sont concernées. Il ne doit pas exister de niveaux intermédiaires. |
td + img | Plusieurs sélecteurs séparés par un signe + : vient après.Désigne les balises img venant après une balise p. |
p ~ img | Plusieurs sélecteurs séparés par un signe ~ : une balise qui suit une autre (directement ou pas) |
:hover | Le caractère : (deux points) introduit une pseudo-classe. La pseudo-classe désigne un élément lorsqu’il se trouve dans une certaine situation : ici lorsqu’il est survolé par la souris.Voir la liste complète des pseudo-class. |
img[width] | Désigne les balises img comportant un attribut width quelle que soit la valeur de ce dernier. On teste donc seulement la présence de l’attribut. |
p[lang = “fr” ] | Ici on limite la portée aux balises p qui comportent l’attribut lang avec la valeur “fr”.p lang=“fr” |
Exemple: mise en couleur de fond gris pour une cellule sur 2 du tableau
tbody > tr:nth-child(odd) > td {
background-color: lightGrey;
}
CSS avancé
- article sur l’attribut focus 24joursdeweb.fr