Séance 6
Séance 6
Séance 6
Dans ce premier chapitre sur le CSS, nous allons voir la théorie sur le CSS : qu'est-ce que
c'est ? À quoi cela ressemble-t-il ? Où est-ce qu'on écrit du code CSS ? Ces aspects
théoriques ne sont pas bien compliqués, mais vous devez obligatoirement les connaître car
c'est la base du CSS. C'est d'ailleurs la seule chose que je vous demanderai de retenir par
cœur en CSS, vous pourrez retrouver le reste dans le mémo en annexe.
CSS (Cascading Style Sheets), c'est cet autre langage qui vient compléter le HTML.
Vous vous souvenez de son rôle ? Gérer la mise en forme de votre site.
Et aussi, c'est lui qui permet de faire la mise en page de votre site. Vous pourrez dire : je
veux que mon menu soit à gauche et occupe telle largeur, que l'en-tête de mon site soit calé
en haut et qu'il soit toujours visible, etc.
Souvenez-vous de ce petit comparatif que nous avions vu dès le premier chapitre (figure
suivante).
FORMATION DEVELOPPEMENT WEB
La même page
HTML, sans et avec CSS (www.csszengarden.com)
Grâce au HTML, nous avons pu rédiger le contenu de notre site, mais il est brut de
décoffrage. Le CSS vient compléter ce code pour mettre en forme tout cela et donner
au contenu l'apparence que l'on souhaite.
Cependant, le CSS n'a pas été adopté immédiatement par les webmasters, loin de
là. Il fallait se défaire de certaines mauvaises habitudes et cela a pris du temps.
Encore aujourd'hui, on peut trouver des sites web avec des balises HTML de mise en
forme anciennes et obsolètes, comme <font> !
CSS : la prise en charge des navigateurs
Tout comme le HTML, le CSS a évolué. Je vous avais indiqué qu'il y avait quatre
versions importantes de CSS :
FORMATION DEVELOPPEMENT WEB
CSS 1 ;
CSS 2.0 ;
CSS 2.1 ;
CSS 3.
Ce sont les navigateurs web qui font le travail le plus complexe : ils doivent lire le
code CSS et comprendre comment afficher la page.
Au début des années 2000, Internet Explorer était le navigateur le plus répandu,
mais sa gestion du CSS est longtemps restée assez médiocre (pour ne pas dire
carrément mauvaise). C'était la grande époque de la version 6 (IE6).
Bon, ton cours d'histoire, c'est bien joli, mais en quoi cela me concerne-t-il
aujourd'hui ?
Que faut-il retenir de tout cela ? Que les navigateurs ne connaissent pas toutes les
propriétés CSS qui existent. Plus le navigateur est vieux, moins il connaît de
fonctionnalités CSS.
<!DOCTYPE html>
FORMATION DEVELOPPEMENT WEB
<html>
<head>
</head>
<body>
<p>Pour le moment, mon site est un peu <em>vide</em>. Patientez encore un peu !</p>
</body>
</html>
Vous noterez le contenu de la ligne 5, <link rel="stylesheet"
href="style.css" /> : c'est elle qui indique que ce fichier HTML est associé à un
fichier appelé style.css et chargé de la mise en forme.
Enregistrez ce fichier sous le nom que vous voulez (par exemple, page.html ). Pour
le moment, rien d'extraordinaire à part la nouvelle balise que nous avons ajoutée.
Maintenant, créez un nouveau fichier vide dans votre éditeur de texte (par
exemple Sublime Text) et copiez-y ce bout de code CSS (rassurez-vous, je vous
expliquerai tout à l'heure ce qu'il veut dire) :
color: blue;
}
Pour obtenir la coloration du code dans Sublime Text, enregistrez bien votre fichier
avec l'extension .css d'abord.
Enregistrez le fichier en lui donnant un nom qui se termine par .css , comme style.css .
Placez ce fichier .css dans le même dossier que votre fichier .html .
Dans Sublime Text, vous devriez observer quelque chose de similaire à la figure
suivante.
FORMATION DEVELOPPEMENT WEB
Dans votre explorateur de fichiers, vous devriez les voir apparaître côte à côte. D'un côté
le .html , de l'autre le .css , comme à la figure suivante.
FORMATION DEVELOPPEMENT WEB
Ouvrez maintenant votre fichier page.html dans votre navigateur pour le tester, comme
vous le faites d'habitude. Regardez, c'est magique : vos paragraphes sont écrits en bleu,
comme dans la figure suivante !
FORMATION DEVELOPPEMENT WEB
<!DOCTYPE html>
<html>
<head>
<style>
{
FORMATION DEVELOPPEMENT WEB
color: blue;
</style>
</head>
<body>
<p>Pour le moment, mon site est un peu <em>vide</em>. Patientez encore un peu !</p>
</body>
</html>
Testez, vous verrez que le résultat est le même.
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>Pour le moment, mon site est un peu <em>vide</em>. Patientez encore un peu !</p>
</body>
</html>
Cette fois, seul le texte du premier paragraphe (ligne 11), dont la balise contient le
code CSS, sera coloré en bleu (figure suivante).
Pour le moment, vous faites vos tests sur un seul fichier HTML. Cependant, votre site sera
plus tard constitué de plusieurs pages HTML, on est d'accord ?
Imaginez : si vous placez le code CSS directement dans le fichier HTML, il faudra copier ce
code dans tous les fichiers HTML de votre site ! Et si demain vous changez d'avis, par
exemple si vous voulez que vos paragraphes soient écrits en rouge et non en bleu, il faudra
modifier chaque fichier HTML un à un, comme le montre la figure suivante.
FORMATION DEVELOPPEMENT WEB
Le code CSS
est répété dans chaque fichier HTML
Si vous travaillez avec un fichier CSS externe, vous n'aurez besoin d'écrire cette
instruction qu'une seule fois pour tout votre site, comme le montre la figure suivante.
color: blue;
}
Dans un code CSS comme celui-ci, on trouve trois éléments différents :
des noms de balises : on écrit les noms des balises dont on veut modifier
l'apparence. Par exemple, si je veux modifier l'apparence de tous les
paragraphes <p> , je dois écrire p ;
FORMATION DEVELOPPEMENT WEB
des propriétés CSS : les « effets de style » de la page sont rangés dans des
propriétés. Il y a par exemple la propriété color qui permet d'indiquer la
couleur du texte, font-size qui permet d'indiquer la taille du texte, etc. Il y a
beaucoup de propriétés CSS et, comme je vous l'ai dit, je ne vous obligerai
pas à les connaître toutes par cœur ;
les valeurs : pour chaque propriété CSS, on doit indiquer une valeur. Par
exemple, pour la propriété color , il faut indiquer le nom de la couleur.
Pour font-size , il faut indiquer quelle taille on veut, etc.
Schématiquement, une feuille de style CSS ressemble donc à cela :
balise1
propriete1: valeur1;
propriete2: valeur2;
propriete3: valeur3;
balise2
propriete1: valeur1;
propriete2: valeur2;
propriete3: valeur3;
propriete4: valeur4;
balise3
propriete1: valeur1;
}
Vous repérez dans cet extrait de code les balises, propriétés et valeurs dont je viens
de vous parler.
Comme vous le voyez, on écrit le nom de la balise (par exemple h1 ) et on ouvre des
accolades pour, à l'intérieur, mettre les propriétés et valeurs que l'on souhaite. On
FORMATION DEVELOPPEMENT WEB
peut mettre autant de propriétés que l'on veut à l'intérieur des accolades. Chaque
propriété est suivie du symbole « deux-points » ( : ) puis de la valeur correspondante.
Enfin, chaque ligne se termine par un point-virgule ( ; ).
Je vous apprendrai de nombreuses propriétés dans les chapitres suivants. Pour le
moment, dans les exemples, on va juste changer la couleur pour s'entraîner.
color: blue;
}
… signifie donc en français : « Je veux que tous mes paragraphes soient écrits en
bleu. ». Le résultat est visible à la figure suivante.
Essayez de changer le nom de la balise affectée par le code CSS. Par exemple, si
j'écris h1 , c'est le titre qui sera écrit en bleu. Modifiez votre fichier style.css
comme ceci :
h1
FORMATION DEVELOPPEMENT WEB
color: blue;
}
Maintenant, ouvrez à nouveau votre page HTML (souvenez-vous, c'est la page
HTML qu'on ouvre dans le navigateur, pas le fichier CSS !) : vous devriez voir son
titre s'afficher en bleu (figure suivante) !
h1
color: blue;
em
FORMATION DEVELOPPEMENT WEB
color: blue;
}
Il signifie que nos titres <h1> et nos textes importants <em> doivent s'afficher en bleu. Par
contre, c'est un peu répétitif, vous ne trouvez pas ?
Heureusement, il existe un moyen en CSS d'aller plus vite si les deux balises doivent avoir la
même présentation. Il suffit de combiner la déclaration en séparant les noms des balises par
une virgule, comme ceci :
h1, em
color: blue;
}
Le résultat se trouve à la figure suivante.
Cela signifie : « Je veux que le texte de mes <h1> et <em> soit écrit en bleu ».
Vous pouvez indiquer autant de balises à la suite que vous le désirez.
FORMATION DEVELOPPEMENT WEB
D'ailleurs, vous allez vous en rendre compte, en général le fichier HTML est assez
court et la feuille CSS assez longue (si elle contient tous les éléments de style de
votre site, c'est un peu normal). Notez qu'il est possible de créer plusieurs fichiers
CSS pour votre site si vous ressentez le besoin de séparer un peu votre code CSS
(en fonction des différentes sections de votre site, par exemple).
/*
style.css
---------
*/
}
Il est possible que j'utilise les commentaires dans la suite du cours, pour vous donner
des explications à l'intérieur même des fichiers .css .
Appliquer un style : class et id
Ce que je vous ai montré jusqu'ici a quand même un défaut : cela implique par exemple que
TOUS les paragraphes possèdent la même présentation (ici, ils seront donc tous écrits en
bleu).
Comment faire pour que certains paragraphes seulement soient écrits d'une manière
différente ? On pourrait placer le code CSS dans un attribut style sur la balise que l'on vise
(c'est la technique que je vous ai présentée un peu plus tôt) mais, comme je vous l'ai dit, ce
n'est pas recommandé (il vaut mieux utiliser un fichier CSS externe).
l'attribut class ;
l'attribut id .
Que les choses soient claires dès le début : les attributs class et id sont quasiment
identiques. Il y a seulement une petite différence que je vous dévoilerai plus bas.
Pour le moment, et pour faire simple, on ne va s'intéresser qu'à l'attribut class .
Comme je viens de vous le dire, c'est un attribut que l'on peut mettre sur n'importe quelle
balise, aussi bien titre que paragraphe, image, etc.
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<p>Pour le moment, mon site est un peu <em>vide</em>. Patientez encore un peu !</p>
</body>
</html>
FORMATION DEVELOPPEMENT WEB
Maintenant que c'est fait, votre paragraphe est identifié. Il a un nom : introduction .
Vous allez pouvoir réutiliser ce nom dans le fichier CSS pour dire : « Je veux que
seules les balises qui ont comme nom 'introduction' soient affichées en bleu ».
Pour faire cela en CSS, indiquez le nom de votre classe en commençant par un
point, comme ci-dessous :
.introduction
color: blue;
}
Testez le résultat : seul votre paragraphe appelé introduction va s'afficher en bleu
(figure suivante) !
Et l'attribut id , alors ?
Lui, il fonctionne exactement de la même manière que class , à un détail près : il ne
peut être utilisé qu'une fois dans le code.
Quel intérêt ? Il y en a assez peu pour tout vous dire ; cela vous sera utile si vous
faites du JavaScript plus tard, pour reconnaître certaines balises. D'ailleurs, nous
avons déjà vu l'attribut id dans le chapitre sur les liens (pour réaliser des ancres).
En pratique, nous ne mettrons des id que sur des éléments qui sont uniques dans la
page, comme par exemple le logo :
FORMATION DEVELOPPEMENT WEB
#logo
}
Je ne vous propose pas de le tester, cela fonctionne exactement comme class .
Si vous vous emmêlez les pinceaux entre class et id , retenez que deux balises
peuvent avoir le même nom avec l'attribut class . Un nom d' id doit en revanche
être unique dans la page HTML.
Les balises universelles
Il arrivera parfois que vous ayez besoin d'appliquer une class (ou un id ) à certains
mots qui, à l'origine, ne sont pas entourés par des balises.
En effet, le problème de class , c'est qu'il s'agit d'un attribut. Vous ne pouvez donc en
mettre que sur une balise. Si, par exemple, je veux modifier uniquement « bienvenue » dans
le paragraphe suivant :
<span> </span> : c'est une balise de type inline, c'est-à-dire une balise que
l'on place au sein d'un paragraphe de texte pour sélectionner certains mots
uniquement. Les balises <strong> et <em> sont de la même famille. Cette
balise s'utilise donc au milieu d'un paragraphe et c'est celle dont nous allons
nous servir pour colorer « bienvenue » ;
<div> </div> : c'est une balise de type block, qui entoure un bloc de texte.
Les balises <p> , <h1> , etc., sont de la même famille. Ces balises ont
quelque chose en commun : elles créent un nouveau « bloc » dans la page et
provoquent donc obligatoirement un retour à la ligne. <div> est une balise
fréquemment utilisée dans la construction d'un design, comme nous le verrons
plus tard.
Pour le moment donc, nous allons utiliser plutôt la balise <span> . On la met autour
de « bienvenue », on lui ajoute une classe (du nom qu'on veut), on crée le CSS et
c'est gagné !
.salutations
{
FORMATION DEVELOPPEMENT WEB
color: blue;
}
Vous pouvez voir le résultat à la figure suivante.
}
FORMATION DEVELOPPEMENT WEB
… signifie « Je veux toucher tous les paragraphes ». Après, c'est à vous de dire ce
que vous faites à ces paragraphes (vous les écrivez en bleu, par exemple).
h1, em
}
… qui signifie « Tous les titres et tous les textes importants ». Nous avons
sélectionné deux balises d'un coup.
Et enfin, nous avons vu comment sélectionner des balises précises à qui nous avons
donné un nom, grâce aux attributs class et id :
.class
#id
}
Vous savez quoi ? Il existe des dizaines d'autres façons de cibler des balises en CSS
! Nous n'allons pas toutes les voir car il y en a beaucoup et certaines sont
complexes, mais voici déjà de quoi vous permettre d'être plus efficace en CSS !
}
Sélectionne toutes les balises sans exception. On l'appelle le sélecteur universel.
FORMATION DEVELOPPEMENT WEB
h3 em
}
Sélectionne toutes les balises <em> situées à l'intérieur d'une balise <h3> . Notez
qu'il n'y a pas de virgule entre les deux noms de balises.
Exemple de code HTML correspondant :
h3 + p
}
Sélectionne la première balise <p> située après un titre <h3> .
Exemple :
<h3>Titre</h3>
<p>Paragraphe</p>
A[attribut] : une balise qui possède un attribut
a[title]
}
Sélectionne tous les liens <a> qui possèdent un attribut title .
Exemple :
a[title="Cliquez ici"]
{
FORMATION DEVELOPPEMENT WEB
}
Idem, mais l'attribut doit en plus avoir exactement pour valeur « Cliquez ici ».
Exemple :
a[title*="ici"]
}
Idem, l'attribut doit cette fois contenir dans sa valeur le mot « ici » (peu importe sa position).
Exemple :
Sachez que nous découvrirons certains de ces autres sélecteurs dans la suite de ce cours !
FORMATION DEVELOPPEMENT WEB
En résumé
CSS est un autre langage qui vient compléter le HTML. Son rôle est de mettre
en forme votre page web.
Il faut être vigilant sur la compatibilité des navigateurs avec certaines
fonctionnalités récentes de CSS3. Quand un navigateur ne connaît pas une
instruction de mise en forme, il l'ignore simplement.
On peut écrire le code CSS à plusieurs endroits différents, le plus conseillé
étant de créer un fichier séparé portant l'extension .css (exemple : style.css
).
En CSS, on sélectionne quelles portions de la page HTML on veut modifier, et
on change leur présentation avec des propriétés CSS :
balise1
propriete1: valeur1;
propriete2: valeur2;
}
Il existe de nombreuses façons de sélectionner la portion de la page que l'on
veut mettre en forme. Par exemple, on peut viser :
o toutes les balises d'un même type, en écrivant simplement leur nom
( h1 , par exemple) ;
o certaines balises spécifiques, auxquelles on a donné des noms à l'aide
des attributs class ou id ( .nomclasse ou #nomid ) ;
o uniquement les balises qui se trouvent à l'intérieur d'autres balises
( h3 em ).
o etc.