Alain Barraud | Mémento informatique |
css : Cascading Style Sheets ou Feuilles de style en cascade
On dit "Feuille de style" car en règle générale, on écrit le code CSS dans un fichier à part (avec l'extension .css au lieu de .html).
On peut écrire du code CSS dans 3 endroits différents.
C'est la méthode la plus pratique. Parmi les nombreux avantages que cette solution apporte, il y a la possibilité de pouvoir proposer facilement plusieurs designs différents aux visiteurs.
Méthode :
Code html
La balise <link />
comporte plusieurs attributs. On peut en modifier deux d'entre eux pour le moment :
Il est aussi possible de taper du CSS directement à l'intérieur même du fichier XHTML, entre les balises <head> </head>
, et ce avec la balise <style> </style>
.
Code html
Note : la première solution (utiliser un .css externe) est quand même bien plus pratique, car elle permet de faire changer le design du site en un clin d'oeil. De plus, le fichier ne sera téléchargé qu'une seule fois pour toutes les pages du site, ce qui allègera la taille des fichiers .html et rendra donc le site plus rapide !
C'est la troisième (et la moins recommandée) des méthodes. Elle consiste à ajouter un attribut style sur les balises pour leur appliquer un style particulier. Cet attribut fonctionne sur toutes les balises.
Par exemple sur un titre :
Code html
Cette méthode a tous les défauts : non seulement le CSS sera peu lisible à l'intérieur des balises, mais en plus ça ne permet pas de profiter de tous les avantages du CSS, comme la possibilité de changer la couleur de tous les titres du site en un clic.
Pour la syntaxe, voir http://www.commentcamarche.net/contents/css/csssyntax.php3 (on y parle entre autres : du sélecteur universel *, du sélecteur d'éléments père-fils selecteur_X > selecteur_Y { /* style; */ }
).
Dans un CSS, on trouve 3 éléments différents :
<h1>
, je dois écrire h1Syntaxe type :
Code css
On trouve le nom des balises auxquelles on veut affecter un style. Pour chaque balise, on ouvre des accolades pour y mettre les propriétés et valeurs souhaitées. (autant qu'on en veut)
Chaque propriété est suivie du symbole "deux-points" (:) puis de sa valeur correspondante. Enfin, chaque ligne se termine par un point-virgule (;)
Note : le point-virgule n'est pas obligatoire s'il n'y a qu'une seule propriété pour la balise (comme c'est le cas pour la balise 3). Toutefois, mieux vaut prendre l'habitude de le mettre tout le temps, c'est plus sûr
Je veux modifier tous mes paragraphes qui sont entre les balises <p> </p> pour avoir une police de couleur bleue avec une taille de 18 pixels.
1/ Créer le code css
Code css
Note :
- ne jamais mettre d'espace entre 18 et px, sinon le code css ne fonctionnera pas.
- de même, ne pas oublier de mettre les unités
Enregistrer ce code CSS dans un fichier "essai1.css"
2/ Créer un fichier xhtml quelconque pour tester ce code css. C'est la balise <link/>
qui sert pour indiquer où se trouve le fichier css
Code html
Enregistrer ce fichier : "ex1.html"
3/ Résultat
Exemple : on veut les titres h1 et h2 en rouge
Code css
Mais, cette façon d'écrire le code est répétitive. En css, pour appliquer le même style à des balises différentes, il suffit de séparer leurs noms par une virgule et mettre les propriétés à la suite.
Il est plus rationnel d'écrire ce code de cette manière :
Code css
De même, par exemple, si on veut les titres, les liens et les citations en rouge, il faut saisir : h1, h2, a, q
Comme pour le xhtml, il est possible d'insérer des commentaires dans du css. Celà peut-être utile pour s'y retrouver dans un long fichier css.
Les fichiers css sont assez longs. Il est recommandé d'en créer plusieurs. Un pour le design, un autre pour le menu, etc…
pour insérer un commentaire, on tape /*, on saisit le commentaire, puis */ pour terminer le commentaire.
Code css
En codifiant comme précédemment, tous les titres sont identiques. Si on veut écrire certains titres différemment, on va utiliser des attributs spéciaux qui fonctionnent sur toutes les balises :
On va voir successivement :
Les attributs class et id sont quasiment identiques.
Attribut class
L'attribut class : peut-être mis sur n'importe quelle balise (paragraphe, titre, image, etc…)
<h1 class=""> </h1>
<p class=""></p>
<img class="" />
L'attribut class aura comme valeur un nom (celui que l'on veut). Ce nom permet de personnaliser un style.
Exemple : on veut définir un style appelé "important" qui écrive en rouge / 18 pixels. On mettra l'attribut class="important" à chacune des balises que l'on veut modifier.
Code css
Enregistrer ce code CSS dans un fichier "essai2.css"
Note : au lieu de mettre le nom de la balise avant les accolades, on met le nom de la class précédé d'un point.
Exemple d'un fichier xhtml avec cet attribut class
Code html
Enregistrer ce fichier : "ex2.html"
Attribut id
Fonctionne exactement comme class à un détail prêt : il ne peut-être utilisé qu'une fois.
L'intérêt ? sert pour le Javascript pour reconnaître certaines balises. L'attribut id sert pour réaliser des ancres.
En pratique "id" se mettra sur des éléments qui sont uniques sur une page comme par exemple le logo :
<img src="images/logo.png" alt="Logo du site" id="logo" />
Dans le code du css, différemment de class, ce n'est pas un point qui précède le nom de id mais un dièse (#).
Code css
Note :si on hésite entre class et id, on peut toujours utiliser class, car ça marche toujours.
On peut avoir besoin d'appliquer une class (ou un id mais c'est plus rare) à certains mots qui ne sont pas entourés par des balises.
En effet, le problème des class c'est qu'il s'agit d'un attribut, on ne peut donc en mettre que sur une balise.
Exemple : si je veux modifier uniquement successeur pour le mettre en bleu dans la phrase suivante
Code html
Comme il n'y a pas de balise autour de successeur, le css utilise la balise-qui-ne-sert-à-rien
En fait, il y en a 2. Rappel car déjà vu avec xhtml, paragraphe sur balises universelles :
Application
Code css
Enregistrer dans un fichier "bleu.css"
Reprendre le fichier html
Code html
Une notion importante, c'est l'ordre d'imbrication des balises.
Exemple : définir un style uniquement pour les balises </em> qui se trouvent à l'intérieur d'un titre </h3>. Le code css s'écrit :
Code css
Enregistrer dans un fichier "essai4.css"
Note :on sépare juste le nom des 2 balises par un espace. Celà permet d'indiquer dans le css, dans quel ordre sont imbriquées les balises.
Application dans un fichier xhtml
Code html
Enregistrer ce fichier : "ex4.html"
On peut mélanger balises et class.
Exemple : blockquote p strong, h1 .important
Attention : la virgule "coupe" la ligne en deux. Elle signifie "ET".
Mettons en couleur pour mieux comprendre :
blockquote p strong, h1 .important
Ce qui veut dire : "Toutes les balises <strong> contenues dans un <p> elles-mêmes contenues dans un <blockquote> ET toutes les class "important" contenues dans un titre <h1>"
Se rapporter à Liste des propriétés
2 notions importantes sur les propriétés
Les pseudos-formats servent en css pour appliquer des propriétés à un endroit ou un moment précis.
Ne fonctionnent que très peu avec IE
Quelques pseudos-formats compatibles avec IE et limités à certaines balises.
Voir quelques applications en regardant le code css de cette page pour les liens et sur des modèles de boutons