« Tutoriel CSS » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
m (Nouvelle page : = Cascading Style Sheets = </div><div> ==== Auteurs et version ==== * '' [http://tecfa.unige.ch/tecfa-people/schneider.html [http://tecfa.unige.ch/~class/ [http://tecfa.unige.ch/...)
 
mAucun résumé des modifications
Ligne 1 : Ligne 1 :
= Cascading Style Sheets =
<pageby nominor="false" comments="false"/>
 
== Tutoriel CSS ==
 
</div><div>
 
==== Auteurs et version ====
 
* '' [http://tecfa.unige.ch/tecfa-people/schneider.html [http://tecfa.unige.ch/~class/ [http://tecfa.unige.ch/~jermann/ Daniel K. Schneider]] - '' [http://tecfa.unige.ch/~ott/ David Ott]'' - '' [http://tecfa.unige.ch/~paraskev/ Vivian Synteta]'' - '' [http://tecfa.unige.ch/perso/staf/michel/ Natascha Michel]'' ]''
* Version: 1.1 (modifié le 25/8/08 par DKS)
 
</div><div>
 
==== Prérequis ====
 
* Module technique précédent: '' [../../html/html-intro/html-intro.html html-intro]''
* Module technique précédent: '' [http://tecfa.unige.ch/guides/tie/html/xhtml-intro/xhtml-intro.html xhtml-intro]''
* Module technique précédent: '' [../../html/xml-tech/xml-tech.html xml-tech]'' (pour les chapitres sur XML seulement)
 
</div><div>
 
==== Autres modules ====
 
* Module technique suppl.: '' [../../html/xml-xslt/xml-xslt.html xml-xslt]''
 
</div><div>
 
==== Abstract ====


Petite introduction à CSS
Petite introduction à CSS


</div><div>
=== Objectifs ===
 
==== Objectifs ====


* Savoir faire de simples style sheets HTML avec CSS
* Savoir faire de simples style sheets HTML avec CSS
Ligne 37 : Ligne 10 :
* XML avec CSS
* XML avec CSS
* (Pas de DHTML pour le moment, ce se fera dans un autre module je pense)
* (Pas de DHTML pour le moment, ce se fera dans un autre module je pense)
</div><div>


== 2. Introduction aux "Cascading Style Sheets" ==
== 2. Introduction aux "Cascading Style Sheets" ==
<div>


=== 2.1 Motivation ===
=== 2.1 Motivation ===


<div>
==== Avantages ====
 
===== Avantages =====


* Mises en page HTML et XML sophistiquées
* Mises en page HTML et XML sophistiquées
* DHTML (changement de positionnement d�$-1òùéléments sur x,y et z par exemple)
* DHTML (changement de positionnement d'éléments sur x,y et z par exemple)
* Séparation de contenu et de style:
* Séparation de contenu et de style:
** permet de servir une page à plusieurs "sauces" (HTML riche, HTML pauvre mais efficace, HTML vocal, ....), donc variantes pour imprimer, le PDA, etc.
** permet de servir une page à plusieurs "sauces" (HTML riche, HTML pauvre mais efficace, HTML vocal, ....), donc variantes pour imprimer, le PDA, etc.
** permet de gérér centralement le "look" de pleines de pages, donc diminue le coût de maintenance
** permet de gérér centralement le "look" de pleines de pages, donc diminue le coût de maintenance
** rends une page plus "lisible" et plus rapide à télécharger
** rend une page plus "lisible" et plus rapide à télécharger
 
</div><div>


===== Désavantages =====
==== Désavantages ====


* Dans CSS1 / CSS2: peu de capacités pour transformer un texte (voir XSLT)
* Dans CSS1 / CSS2: peu de capacités pour transformer un texte (voir XSLT)
* Implémentations CSS1: bonnes dans Mozilla/Firefox et potables dans IE 6
* Implémentations CSS1: bonnes dans Mozilla/Firefox et potables dans IE 6
* Implémentations CSS2: toujours lacunaires.
* Implémentations CSS2: toujours lacunaires.
* Il existe des tables de compatibilités
* Il existe des tables de compatibilités, voir [[:en:CSS|CSS]] (en Anglais)
* (voir '' [http://tecfa.unige.ch/guides/css/pointers.html http://tecfa.unige.ch/guides/css/pointers.html)]''
 
</div></div><div>


=== 2.2 Principe de base ===
=== 2.2 Principe de base ===


* Feuille de style = jeux de règles qui précise l�$-1òùaffichage dòùun élément HTML ou XML
* Feuille de style = jeux de règles qui précise l'affichage d'un élément HTML ou XML
* Chaque règle est composée:
* Chaque règle est composée:
** d�$-1òùun '' sélecteur'' (qui indique à quel type d�$-1òùélément la règle s�$-1òùapplique)
** d'un '' sélecteur'' (qui indique à quel type d'élément la règle s'applique)
** une '' déclaration'' (qui comprend une ou plusieurs instructions de mise en page
** une '' déclaration'' (qui comprend une ou plusieurs instructions de mise en page
<div>


==== Exemples (de sensibilisation) ====
==== Exemples (de sensibilisation) ====


     H1 { color: red }
     H1 { color: red }
     P  { font-face: Verdana, sans-serif ; font-size: 12pt}
     P  { font-face: Verdana, sans-serif ; font-size: 12pt}
     H1, H2, H3 { color : blue }
     H1, H2, H3 { color : blue }
 
        H1.ChapterTOC, H2.PeriodeTOC, H2.ExerciceTOC, H2.SectionTOC  {
    H1.ChapterTOC, H2.PeriodeTOC, H2.ExerciceTOC, H2.SectionTOC  {
 
         display: block;text-indent: 30pt;
         display: block;text-indent: 30pt;
         text-align: left; font-size: 14.000000pt;
         text-align: left; font-size: 14.000000pt;
         font-weight: Bold;    font-family: "Times";
         font-weight: Bold;    font-family: "Times";
       }
       }


<div>[[Image:css-intro-1.png]]</div></div></div><div>
[[Image:css-intro-1.png]]


=== 2.3 Ressources ===
* '' [http://tecfa.unige.ch/guides/css/pointers.html http://tecfa.unige.ch/guides/css/pointers.html ]'' (voir la section links!!)
* '' http://www.w3.org/Style/CSS/'' (CSS page c/o W3C)
</div><div>


=== 2.4 Conseils HTML ===
=== 2.4 Conseils HTML ===
Ligne 110 : Ligne 57 :
* Testez avec Mozilla/Firefox, ajustez ensuite pour IE Explorer (et autres navigateurs déficients).
* Testez avec Mozilla/Firefox, ajustez ensuite pour IE Explorer (et autres navigateurs déficients).


<div>
==== Pour être compatible: ====
 
===== Pour être compatible: =====


* Pour gérer les anciens browsers (NS 4 et IE 5) comprénant mal CSS il faut écrire des scripts de filtrage (disponibles sur le "web master�$-1òùs sites").
* Pour gérer les anciens browsers (NS 4 et IE 5) comprénant mal CSS il faut écrire des scripts de filtrage (disponibles sur le "web master's sites").
* Pour gérer les Netscape 3 etc. pas de problème, ils ignorent les CSS
* Pour gérer les Netscape 3 etc. pas de problème, ils ignorent les CSS


</div></div></div><div>
== 3. Association d'une feuille de style à une page HTML ==
 
== 3. Association d�$-1òùune feuille de style à une page HTML ==
 
<div>
 
===== Il existe plusieurs méthodes =====


</div><div>
Il existe plusieurs méthodes


=== 3.1 Styles "inline" ===
=== 3.1 Styles "inline" ===
Ligne 131 : Ligne 70 :
* On peut définir un attribut style pour chaque élément HTML
* On peut définir un attribut style pour chaque élément HTML


&lt;p style="color: red; font: 12pt times; margin-left: 2em"&gt;
&lt;p style="color: red; font: 12pt times; margin-left: 2em"&gt;
 
  On peut définir un style pour chaque balise.  
On peut définir un style pour chaque balise.
  Ce paragraphe contient son propre style, mais ce n'est pas très efficace ...
 
</p>
Ce paragraphe contient son propre style, mais ce n�$-1òùest pas
 
très efficace ...
 
&lt;/p&gt;


* '' http://tecfa.unige.ch/guides/css/ex/simple-css2.html''
Source: '' http://tecfa.unige.ch/guides/css/ex/simple-css2.html''
* Il s�$-1òùagit ici dòùune technique quòùil faut mieux éviter, car elle ne respecte pas très bien le principe de la séparation de contenu et de présentation
* Voir aussi &lt;span&gt; qui permet de définir un style à l�$-1òùintérieur d�$-1òùun paragraphe.


&lt;p&gt;
* Il s'agit ici d'une technique qu'il faut mieux éviter, car elle ne respecte pas très bien le principe de la séparation de contenu et de présentation
* Voir aussi &lt;span&gt; qui permet de définir un style à l'intérieur d'un paragraphe.


On peut définir &lt;span style="color: red;"&gt; une phrase toute
<p>
On peut définir <span style="color: red;"> une phrase toute
rouge </span>. Et revenir à la normale plus tard ...
</p>


rouge &lt;/span&gt;. Et revenir à la normale plus tard ...
&lt;/p&gt;
</div><div>


=== 3.2 Feuille de style imbriquée dans une page ===
=== 3.2 Feuille de style imbriquée dans une page ===


* Déclaration d�$-1òùune feuille de style avec la balise &lt;style&gt;
* Déclaration d'une feuille de style avec la balise &lt;style&gt;
 
<div>


==== Exemple 3-1: Simples feuilles CSS imbriquées ====
==== Exemple 3-1: Simples feuilles CSS imbriquées ====
Ligne 166 : Ligne 95 :
* '' http://tecfa.unige.ch/guides/css/ex/simple-css2.html'' (exemple plus compliqué)
* '' http://tecfa.unige.ch/guides/css/ex/simple-css2.html'' (exemple plus compliqué)


<div>
==== Utilisation: ====
 
===== Utilisation: =====
 
* La déclaration doit se faire dans le &lt;head&gt; (sinon il peut y avoir des problèmes, par ex. la couleur background du body qui ne s�$-1òùaffiche pas)
* Pour rester compatible avec les anciens navigateurs, il faut commenter les règles CSS comme dans l�$-1òùexemple ci-dessous !
 
&lt;!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN"&gt;
 
&lt;html&gt; &lt;head&gt;
 
    &lt;title&gt;Simple CSS démo&lt;/title&gt;


    &lt;STYLE type="text/css"&gt;
* La déclaration doit se faire dans le &lt;head&gt; (sinon il peut y avoir des problèmes, par ex. la couleur background du body qui ne s'affiche pas)
 
* Pour rester compatible avec les anciens navigateurs, il faut commenter les règles CSS comme dans l'exemple ci-dessous !
      &lt;!--


<pre>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
<html> <head>
    <title>Simple CSS démo</title>
    <STYLE type="text/css">
      <!--
       body    {background: white; font-family: Helvetica, Arial, sans-serif;}
       body    {background: white; font-family: Helvetica, Arial, sans-serif;}
       H2, H3    {font-family: Helvetica, Arial, sans-serif;}
       H2, H3    {font-family: Helvetica, Arial, sans-serif;}
       P.intro    {color: blue; margin-left: 4em; margin-right: 2em;}
       P.intro    {color: blue; margin-left: 4em; margin-right: 2em;}
       .default  {margin-left: 2em;}
       .default  {margin-left: 2em;}
 
       -->
       --&gt;
     </STYLE>
 
   </head>
     &lt;/STYLE&gt;
</pre>
 
   &lt;/head&gt;
 
</div></div></div><div>


=== 3.3 Feuille de style externe associé à des pages HTML ===
=== 3.3 Feuille de style externe associé à des pages HTML ===
Ligne 203 : Ligne 119 :
* Solution efficace pour gérér le look des plusieurs (ou pleins!) de pages
* Solution efficace pour gérér le look des plusieurs (ou pleins!) de pages
* La balise &lt;link&gt; doit se trouver dans le &lt;head&gt;
* La balise &lt;link&gt; doit se trouver dans le &lt;head&gt;
* Si vous utilisez des caractères non standards dans le texte ("é","ö", etc.) il faudrait déclarer l�$-1òùattribut CHARSET dans le HTML (à vérifier)
* Si vous utilisez des caractères non standards dans le texte ("é","ö", etc.) il faudrait déclarer l'attribut CHARSET dans le HTML (à vérifier)
* Pensez à créer un répertoire central pour vos styles ! (A tecfa: /web/styles)
* Pensez à créer un répertoire central pour vos styles ! (A tecfa: /web/styles)
* Vous pouvez regarder le source d�$-1òùune page HTML et ensuite manuellement entrer lòùURL pour le CSS et le regarder (sòùil en existe un)
* Vous pouvez regarder le source d'une page HTML et ensuite manuellement entrer l'URL pour le CSS et le regarder (s'il en existe un)
 
<div>


==== Exemple 3-2: Simple feuille CSS externe ====
==== Exemple 3-2: Simple feuille CSS externe ====


* '' http://tecfa.unige.ch/guides/css/ex/simple-css3.html''
* '' http://tecfa.unige.ch/guides/css/ex/simple-css3.html''
 


  &lt;html&gt;
  &lt;html&gt;
   &lt;head&gt;
   &lt;head&gt;
     &lt;link rel="stylesheet" href="simple-css3.css" charset="ISO-8859-1" type="text/css"/&gt;
     &lt;link rel="stylesheet" href="simple-css3.css" charset="ISO-8859-1" type="text/css"/&gt;
 
     &lt;title&gt;Simple CSS démo III&lt;/title&gt;
     &lt;title&gt;Simple CSS démo III&lt;/title&gt;
   &lt;/head&gt;
   &lt;/head&gt;
   &lt;body&gt;
   &lt;body&gt;


 
'' ATTENTION'' : Dans le fichier - feuille de style vous mettez '' juste '' les déclarations CSS, rien d�$-1òùautre: pas dòùentêtes, rien d�$-1òùautre !!


</div></div><div>
'' ATTENTION'' : Dans le fichier - feuille de style vous mettez '' juste '' les déclarations CSS, rien d'autre: pas d'entêtes, rien d'autre !!


=== 3.4 Multiples feuilles de style ===
=== 3.4 Multiples feuilles de style ===


* On peut laisser l�$-1òùutilisateur choisir !
* On peut laisser l'utilisateur choisir !
** dans Mozilla en tout cas (Menu View-&gt;Use Style)
** dans Mozilla en tout cas (Menu View-&gt;Use Style)
** on peut aussi écrire un programme JavaScript qui le fait
** on peut aussi écrire un programme JavaScript qui le fait
* '' http://www.alistapart.com/stories/alternate/test.html''
* '' http://www.alistapart.com/stories/alternate/test.html''
* Pensez à faire une version spéciale pour l�$-1òùimpression
* Pensez à faire une version spéciale pour l'impression


Exemple de la home page de DKS:
Exemple de la home page de DKS:


  &lt;style type="text/css" media="all"&gt;@import "/tecfa-people/dks-normal.css";&lt;/style&gt;
  &lt;style type="text/css" media="all"&gt;@import "/tecfa-people/dks-normal.css";&lt;/style&gt;
 
  &lt;link ''rel="alternate stylesheet"''
  &lt;link ''rel="alternate stylesheet"''
   type="text/css" ''media="screen"''
   type="text/css" ''media="screen"''
   ''title="Friendly fonts''
   ''title="Friendly fonts''
  " href="/tecfa-people/dks-friendly.css" /&gt;
  " href="/tecfa-people/dks-friendly.css" /&gt;
 
   &lt;link rel="alternate stylesheet" type="text/css" media="screen" title="bigtype" href="/tecfa-people/dks-big.css" /&gt;
    
   &lt;link rel="alternate stylesheet" type="text/css" media="screen" title="Print with URLs" href="/tecfa-people/dks-print-url.css" /&gt;
 
&lt;link rel="alternate stylesheet" type="text/css" media="screen" title="bigtype" href="/tecfa-people/dks-big.css" /&gt;
 
    
 
&lt;link rel="alternate stylesheet" type="text/css" media="screen" title="Print with URLs" href="/tecfa-people/dks-print-url.css" /&gt;
 
 
 
  &lt;link rel="alternate stylesheet" type="text/css" media="screen" title="Print" href="/tecfa-people/dks-print.css" /&gt;
  &lt;link rel="alternate stylesheet" type="text/css" media="screen" title="Print" href="/tecfa-people/dks-print.css" /&gt;
 
  &lt;link rel="stylesheet" type="text/css" ''media="print"''
  &lt;link rel="stylesheet" type="text/css" ''media="print"''
   href="/tecfa-people/dks-print.css" /&gt;
   href="/tecfa-people/dks-print.css" /&gt;
</div><div>


=== 3.5 Importation ===
=== 3.5 Importation ===


* Il s�$-1òùagit dòùune alternative au "linking" ci-dessus
* Il s'agit d'une alternative au "linking" ci-dessus
* '' http://tecfa.unige.ch/guides/css/ex/simple-css4.html''
* '' http://tecfa.unige.ch/guides/css/ex/simple-css4.html''
     &lt;style&gt;
     &lt;style&gt;
       &lt;!--
       &lt;!--
       @import ("simple-css3.css") ;
       @import ("simple-css3.css") ;
       p.default {margin-right: 3em; margin-left: 3em}
       p.default {margin-right: 3em; margin-left: 3em}
       --&gt;
       --&gt;
     &lt;/style&gt;
     &lt;/style&gt;
 
==== Attention: ====
<div>
 
===== Attention: =====


* Marche mal avec certains Explorer 4
* Marche mal avec certains Explorer 4
* Ne marche pas avec Netscape (4.x) ! On peut utiliser cet fait pour filter ces navigateurs ....
* Ne marche pas avec Netscape (4.x) ! On peut utiliser cet fait pour filter ces navigateurs ....
</div></div><div>


=== 3.6 Feuilles de style client-side ===
=== 3.6 Feuilles de style client-side ===


* Marche uniquement dans Mozilla et c�$-1òùest très cool:
* Marche uniquement dans Mozilla et c'est très cool:
* On peut censurer tout ce qu�$-1òùon aime pas, adapter la page à la vue etc. :)
* On peut censurer tout ce qu'on aime pas, adapter la page à la vue etc. :)
 
</div></div><div>


== 4. La notion de sélecteurs ==
== 4. La notion de sélecteurs ==


* Un sélecteur est un "nom" qui indique à quels éléments d�$-1òùune page HTML on desire appliquer une règle.
* Un sélecteur est un "nom" qui indique à quels éléments d'une page HTML on desire appliquer une règle.
* Chaque règle CSS commence nécessairement par un sélecteur.
* Chaque règle CSS commence nécessairement par un sélecteur.


<div>
=== Rappel de la syntaxe pour une règle CSS: ===


==== Rappel de la syntaxe pour une règle CSS: ====
selecteur(s) { propriété: valeur ; propriété: valeur1, valeur2, valeur3 ; ...... }
 
selecteur(s) { propriété: valeur ; propriété: valeur1, valeur2, valeur3 ; ...... }


Il existe plusieurs méthodes pour identifier les éléments, par exemple:
Il existe plusieurs méthodes pour identifier les éléments, par exemple:


* on indique le nom d�$-1òùune balise (X)HTML
* on indique le nom d'une balise (X)HTML
* on indique la classe d�$-1òùune balise (X)HTML
* on indique la classe d'une balise (X)HTML
* on indique l�$-1òùidentificateur dòùune balise XHTML
* on indique l'identificateur d'une balise XHTML
* on indique le nom d�$-1òùune balise plus sa classe, etc.
* on indique le nom d'une balise plus sa classe, etc.
 
</div><div>


=== 4.1 Simple sélecteurs pour les balises ===
=== 4.1 Simple sélecteurs pour les balises ===


* On indique le nom d�$-1òùune balise, ou encore une liste séparés par des virgules.
* On indique le nom d'une balise, ou encore une liste séparés par des virgules.
 
  H1 {color: green}
  H1 {color: green}
  H2 {color: green}
  H2 {color: green}


Ligne 338 : Ligne 204 :
  H1, H2 {color: green}
  H1, H2 {color: green}


* Dans ce cas on utilise CSS pour changer l�$-1òùaffichage par défaut des différentes balises
* Dans ce cas on utilise CSS pour changer l'affichage par défaut des différentes balises
* Typiquement, on modifie la couleur de certains éléments, la taille des fontes, les marges, etc.
* Typiquement, on modifie la couleur de certains éléments, la taille des fontes, les marges, etc.
</div><div>


=== 4.2 Class et attributs ID ===
=== 4.2 Class et attributs ID ===
<div>


==== A. Les attributs et sélecteurs "class" ====
==== A. Les attributs et sélecteurs "class" ====
Ligne 351 : Ligne 213 :
* Mécanisme puissant pour:
* Mécanisme puissant pour:
** définir de classes de contenu (indépendamment des balises)
** définir de classes de contenu (indépendamment des balises)
** pour différencier plusieurs variantes d�$-1òùune même balise
** pour différencier plusieurs variantes d'une même balise
* Principe: On associe une valeur à l�$-1òùattribut "class"
* Principe: On associe une valeur à l'attribut "class"
* On peut aussi définir le style des enfants de la balise qui a l�$-1òùattribut "class" ; mais il faut indiquer le chemin complet de lòùarbre '' (dans lòùex., default ul li)'' .
* On peut aussi définir le style des enfants de la balise qui a l'attribut "class" ; mais il faut indiquer le chemin complet de l'arbre '' (dans l'ex., default ul li)'' .
* il est possible d�$-1òùavoir plusieurs classes par éléments '' (dans l�$-1òùex., le 2ème &lt;p&gt;)'' .
* il est possible d'avoir plusieurs classes par éléments '' (dans l'ex., le 2ème &lt;p&gt;)'' .
* Lorsque deux styles définissent la même propriété, c�$-1òùest celui qui est le plus L de lòùélément qui "gagne" '' (dans l�$-1òùex., font-size)''
* Lorsque deux styles définissent la même propriété, c'est celui qui est le plus L de l'élément qui "gagne" '' (dans l'ex., font-size)''
 
</div><div>


==== Exemple 4-1: Classes dans une simple feuille de style ====
==== Classes dans une simple feuille de style ====


* '' http://tecfa.unige.ch/guides/css/ex/simple-css2.html''
Source: '' http://tecfa.unige.ch/guides/css/ex/simple-css2.html''
 
 


  &lt;STYLE type="text/css"&gt;
  &lt;STYLE type="text/css"&gt;
     P.intro    {color: blue; margin-left: 4em; margin-right: 2em;}
     P.intro    {color: blue; margin-left: 4em; margin-right: 2em;}
     .default ul li {font-size: 0.8em;}
     .default ul li {font-size: 0.8em;}
     .default  {margin-left: 2em; font-size:1em;}
     .default  {margin-left: 2em; font-size:1em;}
     .bleu {color:red;}
     .bleu {color:red;}
   &lt;/STYLE&gt;
   &lt;/STYLE&gt;
 
  ......
......
 
  &lt;p class="intro"&gt;
  &lt;p class="intro"&gt;
       Après des années de bricolage infâme ....
       Après des années de bricolage infâme ....
     &lt;/p&gt;
     &lt;/p&gt;
  &lt;p class="default bleu"&gt;
  &lt;p class="default bleu"&gt;
     bla bla
     bla bla
  &lt;/p&gt;
  &lt;/p&gt;
  &lt;div class="default"&gt;
  &lt;div class="default"&gt;
  &lt;ul&gt;
  &lt;ul&gt;
   &lt;li&gt;item 1&lt;/li&gt;
   &lt;li&gt;item 1&lt;/li&gt;
   &lt;li&gt;item 2&lt;/li&gt;
   &lt;li&gt;item 2&lt;/li&gt;
  &lt;/ul&gt;
  &lt;/ul&gt;
  &lt;pre&gt;
  &lt;pre&gt;
     notre classe default marche partout, même pour un para préformaté
     notre classe default marche partout, même pour un para préformaté
  &lt;/pre&gt;
  &lt;/pre&gt;
  &lt;/div&gt;
  &lt;/div&gt;


 
Le style '' .default'' s'appliquera à tous les éléments dont la classe est "default" alors que le style '' .intro'' seulement aux balises '' &lt;p&gt;'' .
 
Le style '' .default'' s�$-1òùappliquera à tous les éléments dont la classe est "default" alors que le style '' .intro'' seulement aux balises '' &lt;p&gt;'' .
 
</div><div>


==== B. Attribut ID ====
==== B. Attribut ID ====


* Parfois plus économique d�$-1òùutiliser lòùattribut ID (p.ex. lorsquòùon a un script qui implique des id)
* Parfois plus économique d'utiliser l'attribut ID (p.ex. lorsqu'on a un script qui implique des id)
* on peut aussi combiner les deux (définir un style pour la classe et l�$-1òùid dòùune même balise)
* on peut aussi combiner les deux (définir un style pour la classe et l'id d'une même balise)
* Le selecteur s�$-1òùécrit avec un # devant
* Le selecteur s'écrit avec un # devant
* Si on veut définir les éléments enfants d�$-1òùun éléments avec l�$-1òùattribut id ayant une classe définie, on peut le faire sans passer par les éléments intérmédiaire
* Si on veut définir les éléments enfants d'un éléments avec l'attribut id ayant une classe définie, on peut le faire sans passer par les éléments intérmédiaire
** (pour l�$-1òùex. ci-dessus, sans ul)
** (pour l'ex. ci-dessus, sans ul)
 
</div><div>


==== C. "wildcard" ====
==== C. "wildcard" ====


* "Wildcard" * (s�$-1òùapplique à tous le éléments) :
* "Wildcard" * (s'applique à tous le éléments) :


  <nowiki>* {    font-size: 12pt; }</nowiki>
  <nowiki>* {    font-size: 12pt; }</nowiki>


* pratique pour définir une police par défaut pour tous les éléments sans la définir à chaque fois (y compris '' &lt;pre&gt;'' et '' &lt;button&gt;'' .
* pratique pour définir une police par défaut pour tous les éléments sans la définir à chaque fois (y compris '' &lt;pre&gt;'' et '' &lt;button&gt;'' .
</div></div><div>


=== 4.3 Les balises HTML &lt;div&gt; et &lt;span&gt; ===
=== 4.3 Les balises HTML &lt;div&gt; et &lt;span&gt; ===


* ont été créés spécialement pour un usage avec les feuilles de style
* ont été créés spécialement pour un usage avec les feuilles de style
<div>


==== A. &lt;div&gt; ====
==== A. &lt;div&gt; ====


* peut contenir toutes les autres balises HTML et donc servir à mettre en forme toute une section d�$-1òùune texte (mais attention aux priorités! '' &lt;div&gt;'' est un bloc alors que '' &lt;span&gt; '' est un élément in-line, cf [css-intro.html#60322 5.1 �$-1òüTypes dòùéléments et défauts HTML�$-1òý [22]] Il sera pas possible de définir une largeur de 100% -toute la page- pour un span)
* peut contenir toutes les autres balises HTML et donc servir à mettre en forme toute une section d'une texte (mais attention aux priorités! '' &lt;div&gt;'' est un bloc alors que '' &lt;span&gt; '' est un élément in-line, cf [css-intro.html#60322 5.1 �$-1òüTypes d'éléments et défauts HTML�$-1òý [22]] Il sera pas possible de définir une largeur de 100% -toute la page- pour un span)
* &lt;div&gt; avec l�$-1òùattribut class peut servir à faire des "custom tags" (voir plus loin)
* &lt;div&gt; avec l'attribut class peut servir à faire des "custom tags" (voir plus loin)
* &lt;span&gt; sert à changer une séquence de caractères à l�$-1òùintérieur d�$-1òùune balise
* &lt;span&gt; sert à changer une séquence de caractères à l'intérieur d'une balise


</div><div>
==== B. Définition "inline" d'un style ====


==== B. Définition "inline" d�$-1òùun style ====
Exemple: Changer la couleur d'un partie du texte ====


</div><div>
Source: '' http://tecfa.unige.ch/guides/css/ex/simple-div-span.html''
 
==== Exemple 4-2: Changer la couleur d�$-1òùun partie du texte ====
 
* '' http://tecfa.unige.ch/guides/css/ex/simple-div-span.html''


  &lt;div style="color: blue"&gt;
  &lt;div style="color: blue"&gt;
 
       &lt;h1&gt;L'influence d'un div tag qui aime le bleu&lt;/h1&gt;
       &lt;h1&gt;L�$-1òùinfluence dòùun div tag qui aime le bleu&lt;/h1&gt;
 
       &lt;P&gt;
       &lt;P&gt;
                 bla bla bla
                 bla bla bla
       &lt;/P&gt;
       &lt;/P&gt;
  &lt;/div&gt;
  &lt;/div&gt;


</div><div>
==== C. Définition externe d'un style ====


==== C. Définition externe d�$-1òùun style ====
Exemple: Faire des backgrounds avec une définition externe ====
 
</div><div>
 
==== Exemple 4-3: Faire des backgrounds avec une définition externe ====
 
* '' http://tecfa.unige.ch/guides/css/ex/simple-div2.html''


Source: '' http://tecfa.unige.ch/guides/css/ex/simple-div2.html''
   &lt;style&gt;
   &lt;style&gt;
       div.important {
       div.important {
         background: rgb(204,204,255);
         background: rgb(204,204,255);
         padding: 0.5em; border: none;
         padding: 0.5em; border: none;
       }
       }
   &lt;/style&gt;
   &lt;/style&gt;


Ligne 494 : Ligne 302 :


  &lt;body&gt;
  &lt;body&gt;
     &lt;div class="important"&gt;
     &lt;div class="important"&gt;
       &lt;h1&gt;Une section importante&lt;/h1&gt;
       &lt;h1&gt;Une section importante&lt;/h1&gt;
       &lt;h2&gt;Un sous-titre&lt;/h2&gt;
       &lt;h2&gt;Un sous-titre&lt;/h2&gt;
 
       &lt;P&gt;
       &lt;P&gt;
               Tout le div a son joli background à lui.
               Tout le div a son joli background à lui.
               bla bla bla
               bla bla bla
       &lt;/P&gt;
       &lt;/P&gt;
     &lt;/div&gt;
     &lt;/div&gt;
</div></div><div>


=== 4.4 Sélecteurs contextuels ===
=== 4.4 Sélecteurs contextuels ===


<div>
Exemple: Simple utilisation d'un sélecteur contextuel ====


==== Exemple 4-4: Simple utilisation d�$-1òùun sélecteur contextuel ====
Source: '' http://tecfa.unige.ch/guides/css/ex/simple-css5.html''
 
* '' http://tecfa.unige.ch/guides/css/ex/simple-css5.html''


     &lt;STYLE type="text/css"&gt;
     &lt;STYLE type="text/css"&gt;
       &lt;!--
       &lt;!--
       P strong    {color: red;}
       P strong    {color: red;}
       --&gt;
       --&gt;
     &lt;/STYLE&gt;
     &lt;/STYLE&gt;
  ......
  ......
     ''&lt;P&gt;''
     ''&lt;P&gt;''


       Ceci est un paragraph avec un ''&lt;strong&gt;''
       Ceci est un paragraph avec un ''&lt;strong&gt;''
   strong modifié ''&lt;/strong&gt;''
   strong modifié ''&lt;/strong&gt;''.
.
 
En d�$-1òùautres terme cela permet de redéfinir de façon simple le rendering


En d'autres terme cela permet de redéfinir de façon simple le rendering
  de certaines balises "logiques" comme &amp;lt;em&amp;gt; ou &amp;lt;strong&amp;gt;.
  de certaines balises "logiques" comme &amp;lt;em&amp;gt; ou &amp;lt;strong&amp;gt;.


     '' &lt;/P&gt;''
     '' &lt;/P&gt;''
</div></div><div>


=== 4.5 Pseudo sélecteurs (élément et classes) ===
=== 4.5 Pseudo sélecteurs (élément et classes) ===
Ligne 556 : Ligne 338 :
* CSS2 en définit pleins, ci-dessous les éléments de CSS1.
* CSS2 en définit pleins, ci-dessous les éléments de CSS1.
* Attention: certains navigateurs implémentent mal ces fonctionalités CSS1.
* Attention: certains navigateurs implémentent mal ces fonctionalités CSS1.
<div>


==== A. Pseudo-éléments ====
==== A. Pseudo-éléments ====


* permettent d�$-1òùidentifier des éléments non-balisés (comme la première lettre ou la première ligne)
* permettent d'identifier des éléments non-balisés (comme la première lettre ou la première ligne)
* Marche avec les navigateurs IE 5.5 (à confirmer) et Mozilla
* Marche avec les navigateurs IE 5.5 (à confirmer) et Mozilla


</div><div>
Exemple: Pseudo-sélecteurs


==== Exemple 4-5: Pseudo-sélecteurs ====
Ssource: '' http://tecfa.unige.ch/guides/css/ex/pseudo-selectors.html''
 
* '' http://tecfa.unige.ch/guides/css/ex/pseudo-selectors.html''


     &lt;style&gt;
     &lt;style&gt;
 
       P:''first-letter'' { font-size: 500%; color: green }
       P:''first-letter''
       P:''first-line'' { color: green }
  { font-size: 500%; color: green }
 
       P:''first-line''
  { color: green }
 
     &lt;/style&gt;
     &lt;/style&gt;
</div><div>


==== B. Pseudo-classes ====
==== B. Pseudo-classes ====
Ligne 586 : Ligne 357 :
* Pour rendre plus difficile la lecture des liens :)
* Pour rendre plus difficile la lecture des liens :)


  ''A:link''
  ''A:link'' { color : white }
  { color : white }
  ''A:visited'' { color : yellow }
 
  ''A:active'' {color : red }
  ''A:visited''
'' ''
{ color : yellow }
 
  ''A:active''
  {color : red }
 
</div></div></div><div>


== 5. Les déclarations CSS ==
== 5. Les déclarations CSS ==
<div>


==== Rappel de la syntaxe pour une règle CSS: ====
==== Rappel de la syntaxe pour une règle CSS: ====


selecteur(s) { propriété: valeur ; propriété: valeur1, valeur2, valeur3 ; ...... }
selecteur(s) { propriété: valeur ; propriété: valeur1, valeur2, valeur3 ; ...... }


<div>[[Image:css-intro-2.png]]</div><div>
[[Image:css-intro-2.png]]


===== Attention: =====
==== Attention: ====


** Les valeurs des propriétés sont séparées par des ","
** Les valeurs des propriétés sont séparées par des ","
** Les pairs "propriétés: valeurs" sont séparées par des ";"
** Les pairs "propriétés: valeurs" sont séparées par des ";"
[ reste = à développer, voir d�$-1òùautres documentations en attendant]


* Types
* Types
Ligne 619 : Ligne 378 :
* Positionnement......
* Positionnement......


</div></div><div>
=== 5.1 Types d'éléments et défauts HTML ===
 
=== 5.1 Types d�$-1òùéléments et défauts HTML ===


Avant d�$-1òùutiliser un style, voir quel est lòùélément html qui s�$-1òùen rapproche le plus. Par exemple, pour faire des titres, se baser sur '' &lt;h1&gt;'' , '' &lt;h2&gt;'' , '' &lt;h3&gt;'' ... plutôt que sur '' &lt;p&gt;'' ou '' &lt;div&gt;'' .
Avant d'utiliser un style, voir quel est l'élément html qui s'en rapproche le plus. Par exemple, pour faire des titres, se baser sur '' &lt;h1&gt;'' , '' &lt;h2&gt;'' , '' &lt;h3&gt;'' ... plutôt que sur '' &lt;p&gt;'' ou '' &lt;div&gt;'' .


En typographie on distingue entre 2-3 types d�$-1òùéléments de base:
En typographie on distingue entre 2-3 types d'éléments de base:


# les blocs (blocks), c.a.d. des éléments qui commencent un nouveau paragraphe. Exemples HTML: &lt;p&gt;, &lt;h2&gt;, &lt;div&gt;
# les blocs (blocks), c.a.d. des éléments qui commencent un nouveau paragraphe. Exemples HTML: &lt;p&gt;, &lt;h2&gt;, &lt;div&gt;
# Les listes et leurs éléments sont des blocs spéciaux: &lt;li&gt;
# Les listes et leurs éléments sont des blocs spéciaux: &lt;li&gt;
# les "in-line", c.a.d. s�$-1òùinsérant dans un paragraphe. Exemples HTML: &lt;b&gt;, &lt;strong&gt;, &lt;span&gt;
# les "in-line", c.a.d. s'insérant dans un paragraphe. Exemples HTML: &lt;b&gt;, &lt;strong&gt;, &lt;span&gt;


  display: block;
  display: block;
  display: inline;
  display: inline;
  display: list-item;
  display: list-item;


* Pour chaque élément "bloc" il existe un jeu de règles pour définir les marges, la position, les couleurs du texte et de l�$-1òùarrière-plan. On peut même définir leurs positions absolues sur la page. Donc un bloc est une boite qu�$-1òùon remplit avec un contenu selon les règles que l�$-1òùon choisit.
* Pour chaque élément "bloc" il existe un jeu de règles pour définir les marges, la position, les couleurs du texte et de l'arrière-plan. On peut même définir leurs positions absolues sur la page. Donc un bloc est une boite qu'on remplit avec un contenu selon les règles que l'on choisit.
* Evidémment, il est possible de changer de type, par exemple afficher une liste à puce comme une suite de phrases.
* Evidémment, il est possible de changer de type, par exemple afficher une liste à puce comme une suite de phrases.
<div>


==== Exemple 5-1: CSS positioning - &lt;li&gt; inline ====
==== Exemple 5-1: CSS positioning - &lt;li&gt; inline ====


* '' http://tecfa.unige.ch/guides/css/ex/simple-inline.html''
Source: ''http://tecfa.unige.ch/guides/css/ex/simple-inline.html''
 
Voir aussi [css-intro.html#74092 7. �$-1òüLes boites CSS et leur positionnementòý [25]]
 
</div></div></div><div>


== 6. Attributs du texte ==
== 6. Attributs du texte ==


Les attributs les plus utilisés sont les suivants (pleins d�$-1òùautres !) (voir les pointeurs tecfa)
Les attributs les plus utilisés sont les suivants (pleins d'autres !) (voir les pointeurs tecfa)


<div>
=== 6.1 Attributs pour la gestion des propriétés d'écriture ===
 
=== 6.1 Attributs pour la gestion des propriétés d�$-1òùécriture ===


{| border="1"
{| border="1"
Ligne 671 : Ligne 418 :
font-family
font-family
| rowspan="1" colspan="1" |
| rowspan="1" colspan="1" |
nom de l�$-1òùécriture
nom de l'écriture
| rowspan="1" colspan="1" |
| rowspan="1" colspan="1" |
police
police
Ligne 700 : Ligne 447 :


| rowspan="1" colspan="1" |
| rowspan="1" colspan="1" |
forme d�$-1òùécriture
forme d'écriture
| rowspan="1" colspan="1" |
| rowspan="1" colspan="1" |
'' ''
'' ''
Ligne 741 : Ligne 488 :
|}
|}


</div><div>
 


=== 6.2 Alignement du texte ===
=== 6.2 Alignement du texte ===
Ligne 823 : Ligne 570 :
valeur relative
valeur relative
| rowspan="1" colspan="1" |
| rowspan="1" colspan="1" |
écart entre les lignes par rapport à la taille de l�$-1òùécriture
écart entre les lignes par rapport à la taille de l'écriture
| rowspan="1" colspan="1" |
| rowspan="1" colspan="1" |
'' line-height: 1.2;''
'' line-height: 1.2;''
|}
|}


</div></div><div>
 


== 7. Les boites CSS et leur positionnement ==
== 7. Les boites CSS et leur positionnement ==


<div>


=== 7.1 Anatomie des boites ===
=== 7.1 Anatomie des boites ===


Une boite (chaque élément "bloc" '' sauf les tables et autres exeptions qui ont des priorités à part'' ) possède l�$-1òùanatomie suivante:
Une boite (chaque élément "bloc" '' sauf les tables et autres exeptions qui ont des priorités à part'' ) possède l'anatomie suivante:


<div>[[Image:css-intro-3.png]]</div>
[[Image:css-intro-3.png]]


Chaque élément correspond à un selecteur CSS qui permet de définir la largeur générale (des 4 cotés) ou encore la largeur de chaque côté. On peut aussi définir dessin et couleur du cadre.
Chaque élément correspond à un selecteur CSS qui permet de définir la largeur générale (des 4 cotés) ou encore la largeur de chaque côté. On peut aussi définir dessin et couleur du cadre.
</div><div>


=== 7.2 Les bords, les cadres et le couleur ===
=== 7.2 Les bords, les cadres et le couleur ===
Ligne 969 : Ligne 713 :
valeur hexa /nom
valeur hexa /nom
| rowspan="1" colspan="1" |
| rowspan="1" colspan="1" |
couleur d�$-1òùun élément
couleur d'un élément
| rowspan="1" colspan="1" |
| rowspan="1" colspan="1" |
<nowiki>#menu {color:#000000;}</nowiki>body {color:blue;}
<nowiki>#menu {color:#000000;}</nowiki>body {color:blue;}
Ligne 978 : Ligne 722 :
aussi
aussi
| rowspan="1" colspan="1" |
| rowspan="1" colspan="1" |
couleur de l�$-1òùarrière-plan
couleur de l'arrière-plan
| rowspan="1" colspan="1" |
| rowspan="1" colspan="1" |
h1, h2 {background:silver;}
h1, h2 {background:silver;}
|}
|}


* Ceci n�$-1òùest quòùun apperçu !
* Ceci n'est qu'un apperçu !
* Il existe notamment des "shortcuts" qu�$-1òùon montre sur la page suivante.
* Il existe notamment des "shortcuts" qu'on montre sur la page suivante.
 
<div>


==== Les bords, les cadres et la couleur (shortcuts) ====
==== Les bords, les cadres et la couleur (shortcuts) ====
Ligne 993 : Ligne 735 :


  <nowiki>#content {    </nowiki>
  <nowiki>#content {    </nowiki>
  border-right:    2px dotted black;
  border-right:    2px dotted black;
  border-bottom:    2px dotted black;
  border-bottom:    2px dotted black;
  color: #000;
  color: #000;
  background-color:    #ffffcc;
  background-color:    #ffffcc;
  padding: 5px 5px 5px 5px;            /* haut, droite, bas, gauche */
  padding: 5px 5px 5px 5px;            /* haut, droite, bas, gauche */
  margin:    5px 15px 5px 5px;
  margin:    5px 15px 5px 5px;
  }
  }
 


  H1 {
  H1 {
   /* 1 cm en haut et en bas, 2cm sur les côtés */
   /* 1 cm en haut et en bas, 2cm sur les côtés */
   margin: 1cm 2cm;
   margin: 1cm 2cm;
   /* 3em en haut, 20% sur les côtés, et 2em en bas */
   /* 3em en haut, 20% sur les côtés, et 2em en bas */
   padding: 3em 20% 2em;
   padding: 3em 20% 2em;
  }
  }
 
</div><div>


==== Exemple 7-1: Plusieurs exemples simples avec des boites ====
==== Exemple 7-1: Plusieurs exemples simples avec des boites ====
Ligne 1 034 : Ligne 758 :


  &lt;body style="border-style:dotted"&gt;
  &lt;body style="border-style:dotted"&gt;
  &lt;h1&gt;Boites&lt;/h1&gt;
  &lt;h1&gt;Boites&lt;/h1&gt;
  &lt;p&gt;The dashed box is for the "body", the big thick box is for a "p" tag, and the thin box is used within a "span" tag. (View the source).&lt;/p&gt;
  &lt;p&gt;The dashed box is for the "body", the big thick box is for a "p" tag, and the thin box is used within a "span" tag. (View the source).&lt;/p&gt;
  &lt;p ''style="background-color:#d0d0d0;border-style:solid;border-width:4px;''
  &lt;p ''style="background-color:#d0d0d0;border-style:solid;border-width:4px;''
 
  ''        padding:1em;margin:0.1cm;'' "&gt;
  ''        padding:1em;margin:0.1cm;''
"&gt;
 
     Tout est une boite - DKS nov 2003
     Tout est une boite - DKS nov 2003
 
   ''  &lt;span'' ''style="background-color:#d0d0d0;border-style:solid;border-width:1px;''
   ''  &lt;span''
  ''style="background-color:#d0d0d0;border-style:solid;border-width:1px;''
 
  ''              padding:1pt;margin:1pt;width:50%;position:relative''
  ''              padding:1pt;margin:1pt;width:50%;position:relative''
  "&gt;
  "&gt;
     &lt;a href="http://validator.w3.org/check/referer"&gt;XHTML validation&lt;/a&gt; -
     &lt;a href="http://validator.w3.org/check/referer"&gt;XHTML validation&lt;/a&gt; -
     &lt;a href="http://jigsaw.w3.org/css-validator/check/referer"&gt;CSS validation&lt;a&gt;
     &lt;a href="http://jigsaw.w3.org/css-validator/check/referer"&gt;CSS validation&lt;a&gt;
     ''&lt;/span&gt;''
     ''&lt;/span&gt;''
   &lt;/p&gt;
   &lt;/p&gt;
  &lt;p&gt;Voir &lt;a href="boxing1.html"&gt;boxing1.html&lt;/a&gt;  pour plus ... &lt;/p&gt;
  &lt;p&gt;Voir &lt;a href="boxing1.html"&gt;boxing1.html&lt;/a&gt;  pour plus ... &lt;/p&gt;
  &lt;/body&gt;
  &lt;/body&gt;
</div></div><div>


=== 7.3 Le positionnement ===
=== 7.3 Le positionnement ===


* Par défaut les éléments d�$-1òùune page HTML sont affichés séquentiellement un après l�$-1òùautre
* Par défaut les éléments d'une page HTML sont affichés séquentiellement un après l'autre
* Mais on peut les positionner selon des coordonnées absolues ou relatives n�$-1òùimporte où sur une page (voir les exemples qui suivent)
* Mais on peut les positionner selon des coordonnées absolues ou relatives n'importe où sur une page (voir les exemples qui suivent)
 
<nowiki>#content    {    /*  les coordonnees selon l�$-1òùhorloge: 12, 3, 6, 9 */</nowiki>


<nowiki>#content    {    /*  les coordonnees selon l'horloge: 12, 3, 6, 9 */</nowiki>
     float:    left;
     float:    left;
     width:    80%;
     width:    80%;
     color: #000;
     color: #000;
     background-color:    #ffffcc;
     background-color:    #ffffcc;
     padding: 5px 5px 5px 5px;
     padding: 5px 5px 5px 5px;
     margin:    5px 5px 5px 5px;
     margin:    5px 5px 5px 5px;
     }
     }


  <nowiki>#menu    { /* qui sera mis à droite */</nowiki>
  <nowiki>#menu    { /* qui sera mis à droite */</nowiki>
     position: absolute;
     position: absolute;
     right: 0;
     right: 0;
     width: 17%;
     width: 17%;
     font:    10px/14px verdana, sans-serif;
     font:    10px/14px verdana, sans-serif;
     color:    black;
     color:    black;
     margin:    5px 5px 5px 5px;
     margin:    5px 5px 5px 5px;
     background-color: #ffffff;
     background-color: #ffffff;
     }
     }
 
* Voir le prochain slide pour une série d�$-1òùexemples
<div>


==== Exemple 7-2: Positionnement relatif de boites flottantes ====
==== Exemple 7-2: Positionnement relatif de boites flottantes ====


* '' http://tecfa.unige.ch/guides/css/ex/boxing1.html''
* '' http://tecfa.unige.ch/guides/css/ex/boxing1.html''
</div><div>


==== Exemple 7-3: Positionnement relatif horizontal + vertical ====
==== Exemple 7-3: Positionnement relatif horizontal + vertical ====


* '' [http://tecfa.unige.ch/guides/css/ex/boxing2.html http://tecfa.unige.ch/guides/css/ex/boxing2.html ]''
* '' [http://tecfa.unige.ch/guides/css/ex/boxing2.html http://tecfa.unige.ch/guides/css/ex/boxing2.html ]''
</div><div>


==== Exemple 7-4: Un menu: "ul/li" comme boutons ====
==== Exemple 7-4: Un menu: "ul/li" comme boutons ====


* '' [http://tecfa.unige.ch/guides/css/ex/boxing3.html http://tecfa.unige.ch/guides/css/ex/boxing3.html ]''
* '' [http://tecfa.unige.ch/guides/css/ex/boxing3.html http://tecfa.unige.ch/guides/css/ex/boxing3.html ]''
</div><div>


==== Exemple 7-5: Positions absolues ====
==== Exemple 7-5: Positions absolues ====


* '' [http://tecfa.unige.ch/guides/css/ex/boxing4.html http://tecfa.unige.ch/guides/css/ex/boxing4.html ]''
* '' [http://tecfa.unige.ch/guides/css/ex/boxing4.html http://tecfa.unige.ch/guides/css/ex/boxing4.html ]''
</div><div>


==== Exemple 7-6: Layout 3-colonnes ====
==== Exemple 7-6: Layout 3-colonnes ====
Ligne 1 139 : Ligne 817 :
* '' http://tecfa.unige.ch/guides/css/ex/boxing5.html''
* '' http://tecfa.unige.ch/guides/css/ex/boxing5.html''


</div></div></div><div>


== 8. XML avec CSS ==
== 8. XML avec CSS ==


<div>
=== 8.1 Association d'une feuille de style ===
 
=== 8.1 Association d�$-1òùune feuille de style ===


* Il est conseillé d�$-1òùutiliser une feuille externe et ensuite lòùimporter:
* Il est conseillé d'utiliser une feuille externe et ensuite l'importer:


  &lt;?xml-stylesheet type="text/css" href="feuille.css"?&gt;
  &lt;?xml-stylesheet type="text/css" href="feuille.css"?&gt;
Ligne 1 153 : Ligne 828 :
* note: pas de feuilles de styles internes comme pour HTML !
* note: pas de feuilles de styles internes comme pour HTML !


Voici le début d�$-1òùun fichier:
Voici le début d'un fichier:


  &lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
  &lt;?xml version="1.0" encoding="ISO-8859-1"?&gt;
  &lt;?xml-stylesheet href="stepbystep.css" type="text/css"?&gt;
  &lt;?xml-stylesheet href="stepbystep.css" type="text/css"?&gt;
 
  &lt;!DOCTYPE Stepbystep SYSTEM "stepbystep-ex.dtd"&gt;
  &lt;!DOCTYPE Stepbystep SYSTEM "stepbystep-ex.dtd"&gt;
 
  &lt;Stepbystep xmlns:xlink="http://www.w3.org/1999/xlink"&gt;
  &lt;Stepbystep xmlns:xlink="http://www.w3.org/1999/xlink"&gt;
 
   &lt;Doctitle&gt;ATTENTION: Il ne s'agit ici que d'une démo XML + CSS. L'original de ce fichier se trouve
 
 
   &lt;Doctitle&gt;ATTENTION: Il ne s�$-1òùagit ici que dòùune démo XML + CSS. L�$-1òùoriginal de ce fichier se trouve


  ailleurs et a été modifié sans doute depuis ....
  ailleurs et a été modifié sans doute depuis ....
   &lt;/Doctitle&gt;
   &lt;/Doctitle&gt;
   &lt;Info&gt;
   &lt;Info&gt;
   &lt;Author Email="Stephane.morand@tecfa.unige.ch"&gt;
   &lt;Author Email="Stephane.morand@tecfa.unige.ch"&gt;
   &lt;/Author&gt;
   &lt;/Author&gt;
   &lt;Version&gt;Version 0.2&lt;/Version&gt;
   &lt;Version&gt;Version 0.2&lt;/Version&gt;
   &lt;Para&gt;installation brute de postnuke sur le serveur tecfaseed
   &lt;Para&gt;installation brute de postnuke sur le serveur tecfaseed
   &lt;/Para&gt;
   &lt;/Para&gt;
   &lt;/Info&gt;
   &lt;/Info&gt;
</div><div>


=== 8.2 Selecteurs CSS2 pour XML et HTML ===
=== 8.2 Selecteurs CSS2 pour XML et HTML ===
Ligne 1 196 : Ligne 851 :
* A part la notation '' Balise.classe'' les sélecteur XML et HTML sont les mêmes !
* A part la notation '' Balise.classe'' les sélecteur XML et HTML sont les mêmes !


<div>
==== sélection d'un élément ====
 
==== sélection d�$-1òùun élément ====


nom_de_l�$-1òùélément
nom_de_l'élément


Exemple:
Exemple:
 
Step {
Step {
display: list-item;
 
list-style-type: decimal;
display: list-item;
 
list-style-type: decimal;
 
}
}


</div><div>
==== sélection d'un élément qui est l''' enfant direct'' d'un élément ====
 
==== sélection d�$-1òùun élément qui est l�$-1òù'' enfant direct'' dòùun élément ====


élément_mère &gt; élément
élément_mère &gt; élément
Ligne 1 220 : Ligne 867 :
Exemple:
Exemple:


Step &gt; Title { .... }
Step &gt; Title { .... }
 
</div><div>


==== sélection d�$-1òùun élément qui est le '' descendant'' d�$-1òùun élément ====
==== sélection d'un élément qui est le '' descendant'' d'un élément ====


élément_mère élément
élément_mère élément
Ligne 1 230 : Ligne 875 :
Exemple:
Exemple:


Step Title { .... }
Step Title { .... }
 
Dans l�$-1òùexemple suivant P est un descendant de LI, LI doit être un enfant direct de OL. OL est dans DIV.


DIV OL&gt;LI P
Dans l'exemple suivant P est un descendant de LI, LI doit être un enfant direct de OL. OL est dans DIV.


</div><div>
DIV OL&gt;LI P


==== sélection d�$-1òùun élément qui est le '' frère'' d�$-1òùun élément ====
==== sélection d'un élément qui est le '' frère'' d'un élément ====


élément_frère + élément
élément_frère + élément


Exemple:
Exemple:
 
H1 + H2 { margin-top: -5mm }
H1 + H2 { margin-top: -5mm }
 
(on réduit la distance)
(on réduit la distance)


</div><div>
==== sélection d'un élément qui possède un attribut ====
 
==== sélection d�$-1òùun élément qui possède un attribut ====


élément[attribut]
élément[attribut]
Ligne 1 256 : Ligne 895 :
Exemple:
Exemple:


Title[status] { color: blue; }
Title[status] { color: blue; }


(tous les titres qui un attribut "status" sont paints en bleu )
(tous les titres qui un attribut "status" sont paints en bleu )


</div><div>
==== sélection d'un élément qui possède un attribut avec une valeur ====
 
==== sélection d�$-1òùun élément qui possède un attribut avec une valeur ====


élément[attribut="valeur"]
élément[attribut="valeur"]
Ligne 1 268 : Ligne 905 :
Exemple:
Exemple:


Title[status="brouillon"] { color: red; }
Title[status="brouillon"] { color: red; }


(tous les titres qui un attribut "status" avec valeur "brouillon" sont peints en rouge )
(tous les titres qui un attribut "status" avec valeur "brouillon" sont peints en rouge )


Note: au lieu de "=", on a aussi ~= et ¦= (voir la documentation)
Note: au lieu de "=", on a aussi ~= et ¦= (voir la documentation)
</div></div><div>


=== 8.3 Premières opérations à faire ===
=== 8.3 Premières opérations à faire ===


* Il faut d�$-1òùabord indiquer pour chaque élément s�$-1òùil est un "block" ou "inline"
* Il faut d'abord indiquer pour chaque élément s'il est un "block" ou "inline"
* Faire sortir les titres
* Faire sortir les titres
* Gérer les listes
* Gérer les listes


<div>


===== Exemples =====
==== Exemples ====


  /* title et para sont des éléments "block", ils ont une petite marge
  /* title et para sont des éléments "block", ils ont une petite marge
  title, para {display: block; margin: 0.5em;}
  title, para {display: block; margin: 0.5em;}
  /* les title sont un peu plus grands */
  /* les title sont un peu plus grands */
  title {font-size: 1.5em;}
  title {font-size: 1.5em;}
  /* les item sont des list-item de type bullet */
  /* les item sont des list-item de type bullet */
  item {display: list-item;list-style-type: bullet;}
  item {display: list-item;list-style-type: bullet;}
  /* strong est un élément inline, rendering on italic et bleu  */
  /* strong est un élément inline, rendering on italic et bleu  */
  strong {display: inline; font-style: italic; color: rgb(000,000,128);}
  strong {display: inline; font-style: italic; color: rgb(000,000,128);}
</div><div>


==== Exemple 8-1: Exemple "Stepbystep" ====
==== Exemple 8-1: Exemple "Stepbystep" ====
Ligne 1 311 : Ligne 936 :


* Le DTD Stebbystep permet de formatter des instructions de type "pas par pas", par exemple comment installer un logiciel.
* Le DTD Stebbystep permet de formatter des instructions de type "pas par pas", par exemple comment installer un logiciel.
</div><div>


==== Exemple 8-2: Récit ====
==== Exemple 8-2: Récit ====


* '' http://tecfa.unige.ch/guides/xml/examples/recit/''
* '' http://tecfa.unige.ch/guides/xml/examples/recit/''
( répetoire avec une solution CSS et une solution XSLT )
* La DTD "RECIT" permet d'écrire des simples récits avec une grammaire génératrice.


( répetoire avec une solution CSS et une solution XSLT )
== Liens ==


* La DTD "RECIT" permet d�$-1òùécrire des simples récits avec une grammaire génératrice.


</div></div></div></div>
=== Ressources CSS ===
----


== Liens ==
Voir [[:en:CSS|CSS]] (Edutechwiki - Anglais)


=== Slides ===
* '' [http://tecfa.unige.ch/guides/tie/html/css-intro/css-intro.html http://tecfa.unige.ch/guides/tie/html/css-into/css-intro.html]'' (Transparents HTML)
* '' [http://tecfa.unige.ch/guides/tie/html/css-intro/css-intro.html http://tecfa.unige.ch/guides/tie/html/css-into/css-intro.html]'' (Transparents HTML)
* '' http://tecfa.unige.ch/guides/tie/pdf/files/css-intro.pdf'' (Transparents PDF)
* '' http://tecfa.unige.ch/guides/tie/pdf/files/css-intro.pdf'' (Transparents PDF)

Version du 26 août 2008 à 11:00

<pageby nominor="false" comments="false"/>

Tutoriel CSS

Petite introduction à CSS

Objectifs

  • Savoir faire de simples style sheets HTML avec CSS
  • Faire des pages emboîtées sans tables
  • XML avec CSS
  • (Pas de DHTML pour le moment, ce se fera dans un autre module je pense)

2. Introduction aux "Cascading Style Sheets"

2.1 Motivation

Avantages

  • Mises en page HTML et XML sophistiquées
  • DHTML (changement de positionnement d'éléments sur x,y et z par exemple)
  • Séparation de contenu et de style:
    • permet de servir une page à plusieurs "sauces" (HTML riche, HTML pauvre mais efficace, HTML vocal, ....), donc variantes pour imprimer, le PDA, etc.
    • permet de gérér centralement le "look" de pleines de pages, donc diminue le coût de maintenance
    • rend une page plus "lisible" et plus rapide à télécharger

Désavantages

  • Dans CSS1 / CSS2: peu de capacités pour transformer un texte (voir XSLT)
  • Implémentations CSS1: bonnes dans Mozilla/Firefox et potables dans IE 6
  • Implémentations CSS2: toujours lacunaires.
  • Il existe des tables de compatibilités, voir CSS (en Anglais)

2.2 Principe de base

  • Feuille de style = jeux de règles qui précise l'affichage d'un élément HTML ou XML
  • Chaque règle est composée:
    • d'un sélecteur (qui indique à quel type d'élément la règle s'applique)
    • une déclaration (qui comprend une ou plusieurs instructions de mise en page

Exemples (de sensibilisation)

    H1 { color: red }
    P  { font-face: Verdana, sans-serif ; font-size: 12pt}
    H1, H2, H3 { color : blue }
       H1.ChapterTOC, H2.PeriodeTOC, H2.ExerciceTOC, H2.SectionTOC  {
        display: block;text-indent: 30pt;
        text-align: left; font-size: 14.000000pt;
        font-weight: Bold;     font-family: "Times";
     }

Css-intro-1.png


2.4 Conseils HTML

  • Mettez des balises fermantes (<p> .....</p>, <li> .... </li>, etc)
  • Testez avec Mozilla/Firefox, ajustez ensuite pour IE Explorer (et autres navigateurs déficients).

Pour être compatible:

  • Pour gérer les anciens browsers (NS 4 et IE 5) comprénant mal CSS il faut écrire des scripts de filtrage (disponibles sur le "web master's sites").
  • Pour gérer les Netscape 3 etc. pas de problème, ils ignorent les CSS

3. Association d'une feuille de style à une page HTML

Il existe plusieurs méthodes

3.1 Styles "inline"

  • On peut définir un attribut style pour chaque élément HTML
<p style="color: red; font: 12pt times; margin-left: 2em">
 On peut définir un style pour chaque balise. 
 Ce paragraphe contient son propre style, mais ce n'est pas très efficace ...

Source:  http://tecfa.unige.ch/guides/css/ex/simple-css2.html
  • Il s'agit ici d'une technique qu'il faut mieux éviter, car elle ne respecte pas très bien le principe de la séparation de contenu et de présentation
  • Voir aussi <span> qui permet de définir un style à l'intérieur d'un paragraphe.

On peut définir une phrase toute rouge . Et revenir à la normale plus tard ...


3.2 Feuille de style imbriquée dans une page

  • Déclaration d'une feuille de style avec la balise <style>

Exemple 3-1: Simples feuilles CSS imbriquées

Utilisation:

  • La déclaration doit se faire dans le <head> (sinon il peut y avoir des problèmes, par ex. la couleur background du body qui ne s'affiche pas)
  • Pour rester compatible avec les anciens navigateurs, il faut commenter les règles CSS comme dans l'exemple ci-dessous !
 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.2//EN">
 <html> <head>
    <title>Simple CSS démo</title>
    <STYLE type="text/css">
       <!--
       body     {background: white; font-family: Helvetica, Arial, sans-serif;}
       H2, H3    {font-family: Helvetica, Arial, sans-serif;}
       P.intro     {color: blue; margin-left: 4em; margin-right: 2em;}
       .default  {margin-left: 2em;}
       -->
     </STYLE>
   </head>

3.3 Feuille de style externe associé à des pages HTML

  • Solution efficace pour gérér le look des plusieurs (ou pleins!) de pages
  • La balise <link> doit se trouver dans le <head>
  • Si vous utilisez des caractères non standards dans le texte ("é","ö", etc.) il faudrait déclarer l'attribut CHARSET dans le HTML (à vérifier)
  • Pensez à créer un répertoire central pour vos styles ! (A tecfa: /web/styles)
  • Vous pouvez regarder le source d'une page HTML et ensuite manuellement entrer l'URL pour le CSS et le regarder (s'il en existe un)

Exemple 3-2: Simple feuille CSS externe

<html>
  <head>
    <link rel="stylesheet" href="simple-css3.css" charset="ISO-8859-1" type="text/css"/>
    <title>Simple CSS démo III</title>
  </head>
  <body>


ATTENTION : Dans le fichier - feuille de style vous mettez juste les déclarations CSS, rien d'autre: pas d'entêtes, rien d'autre !!

3.4 Multiples feuilles de style

Exemple de la home page de DKS:

<style type="text/css" media="all">@import "/tecfa-people/dks-normal.css";</style>
<link rel="alternate stylesheet"
 type="text/css" media="screen"
 title="Friendly fonts
" href="/tecfa-people/dks-friendly.css" />
 <link rel="alternate stylesheet" type="text/css" media="screen" title="bigtype" href="/tecfa-people/dks-big.css" />
 <link rel="alternate stylesheet" type="text/css" media="screen" title="Print with URLs" href="/tecfa-people/dks-print-url.css" />
<link rel="alternate stylesheet" type="text/css" media="screen" title="Print" href="/tecfa-people/dks-print.css" />
<link rel="stylesheet" type="text/css" media="print"
 href="/tecfa-people/dks-print.css" />

3.5 Importation

    <style>
      <!--
      @import ("simple-css3.css") ;
      p.default {margin-right: 3em; margin-left: 3em}
      -->
    </style>

Attention:

  • Marche mal avec certains Explorer 4
  • Ne marche pas avec Netscape (4.x) ! On peut utiliser cet fait pour filter ces navigateurs ....

3.6 Feuilles de style client-side

  • Marche uniquement dans Mozilla et c'est très cool:
  • On peut censurer tout ce qu'on aime pas, adapter la page à la vue etc. :)

4. La notion de sélecteurs

  • Un sélecteur est un "nom" qui indique à quels éléments d'une page HTML on desire appliquer une règle.
  • Chaque règle CSS commence nécessairement par un sélecteur.

Rappel de la syntaxe pour une règle CSS:

selecteur(s) { propriété: valeur ; propriété: valeur1, valeur2, valeur3 ; ...... }

Il existe plusieurs méthodes pour identifier les éléments, par exemple:

  • on indique le nom d'une balise (X)HTML
  • on indique la classe d'une balise (X)HTML
  • on indique l'identificateur d'une balise XHTML
  • on indique le nom d'une balise plus sa classe, etc.

4.1 Simple sélecteurs pour les balises

  • On indique le nom d'une balise, ou encore une liste séparés par des virgules.
H1 {color: green}
H2 {color: green}

est équivalent à:

H1, H2 {color: green}
  • Dans ce cas on utilise CSS pour changer l'affichage par défaut des différentes balises
  • Typiquement, on modifie la couleur de certains éléments, la taille des fontes, les marges, etc.

4.2 Class et attributs ID

A. Les attributs et sélecteurs "class"

  • Mécanisme puissant pour:
    • définir de classes de contenu (indépendamment des balises)
    • pour différencier plusieurs variantes d'une même balise
  • Principe: On associe une valeur à l'attribut "class"
  • On peut aussi définir le style des enfants de la balise qui a l'attribut "class" ; mais il faut indiquer le chemin complet de l'arbre (dans l'ex., default ul li) .
  • il est possible d'avoir plusieurs classes par éléments (dans l'ex., le 2ème <p>) .
  • Lorsque deux styles définissent la même propriété, c'est celui qui est le plus L de l'élément qui "gagne" (dans l'ex., font-size)

Classes dans une simple feuille de style

Source: http://tecfa.unige.ch/guides/css/ex/simple-css2.html

<STYLE type="text/css">
   P.intro     {color: blue; margin-left: 4em; margin-right: 2em;}
   .default ul li {font-size: 0.8em;}
   .default  {margin-left: 2em; font-size:1em;}
   .bleu {color:red;}
  </STYLE>
 ......
<p class="intro">
      Après des années de bricolage infâme ....
    </p>
<p class="default bleu">
   bla bla
</p>
<div class="default">
<ul>
  <li>item 1</li>
  <li>item 2</li>
</ul>
<pre>
   notre classe default marche partout, même pour un para préformaté
</pre>
</div>

Le style .default s'appliquera à tous les éléments dont la classe est "default" alors que le style .intro seulement aux balises <p> .

B. Attribut ID

  • Parfois plus économique d'utiliser l'attribut ID (p.ex. lorsqu'on a un script qui implique des id)
  • on peut aussi combiner les deux (définir un style pour la classe et l'id d'une même balise)
  • Le selecteur s'écrit avec un # devant
  • Si on veut définir les éléments enfants d'un éléments avec l'attribut id ayant une classe définie, on peut le faire sans passer par les éléments intérmédiaire
    • (pour l'ex. ci-dessus, sans ul)

C. "wildcard"

  • "Wildcard" * (s'applique à tous le éléments) :
* {    font-size: 12pt; }
  • pratique pour définir une police par défaut pour tous les éléments sans la définir à chaque fois (y compris <pre> et <button> .

4.3 Les balises HTML <div> et <span>

  • ont été créés spécialement pour un usage avec les feuilles de style

A. <div>

  • peut contenir toutes les autres balises HTML et donc servir à mettre en forme toute une section d'une texte (mais attention aux priorités! <div> est un bloc alors que <span> est un élément in-line, cf [css-intro.html#60322 5.1 �$-1òüTypes d'éléments et défauts HTML�$-1òý [22]] Il sera pas possible de définir une largeur de 100% -toute la page- pour un span)
  • <div> avec l'attribut class peut servir à faire des "custom tags" (voir plus loin)
  • <span> sert à changer une séquence de caractères à l'intérieur d'une balise

B. Définition "inline" d'un style

Exemple: Changer la couleur d'un partie du texte ====

Source: http://tecfa.unige.ch/guides/css/ex/simple-div-span.html

<div style="color: blue">
      <h1>L'influence d'un div tag qui aime le bleu</h1>
      <P>
               bla bla bla
      </P>
</div>

C. Définition externe d'un style

Exemple: Faire des backgrounds avec une définition externe ====

Source: http://tecfa.unige.ch/guides/css/ex/simple-div2.html

  <style>
     div.important {
       background: rgb(204,204,255);
       padding: 0.5em; border: none;
     }
  </style>
.....
<body>
    <div class="important">
      <h1>Une section importante</h1>
      <h2>Un sous-titre</h2>
      <P>
             Tout le div a son joli background à lui.
             bla bla bla
      </P>
    </div>

4.4 Sélecteurs contextuels

Exemple: Simple utilisation d'un sélecteur contextuel ====

Source: http://tecfa.unige.ch/guides/css/ex/simple-css5.html

   <STYLE type="text/css">
      <!--
      P strong     {color: red;}
      -->
    </STYLE>
......
   <P>
      Ceci est un paragraph avec un <strong>
 strong modifié </strong>.
En d'autres terme cela permet de redéfinir de façon simple le rendering
de certaines balises "logiques" comme &lt;em&gt; ou &lt;strong&gt;.
    </P>

4.5 Pseudo sélecteurs (élément et classes)

  • Un pseudo sélecteur identifie un élément par des critères autres que balise et classe
  • CSS2 en définit pleins, ci-dessous les éléments de CSS1.
  • Attention: certains navigateurs implémentent mal ces fonctionalités CSS1.

A. Pseudo-éléments

  • permettent d'identifier des éléments non-balisés (comme la première lettre ou la première ligne)
  • Marche avec les navigateurs IE 5.5 (à confirmer) et Mozilla

Exemple: Pseudo-sélecteurs

Ssource: http://tecfa.unige.ch/guides/css/ex/pseudo-selectors.html

    <style>
      P:first-letter { font-size: 500%; color: green }
      P:first-line { color: green }
    </style>

B. Pseudo-classes

  • Pour rendre plus difficile la lecture des liens :)
A:link { color : white }
A:visited { color : yellow }
A:active {color : red }

5. Les déclarations CSS

Rappel de la syntaxe pour une règle CSS:

selecteur(s) { propriété: valeur ; propriété: valeur1, valeur2, valeur3 ; ...... }

Css-intro-2.png

Attention:

    • Les valeurs des propriétés sont séparées par des ","
    • Les pairs "propriétés: valeurs" sont séparées par des ";"
  • Types
  • Boites
  • Positionnement......

5.1 Types d'éléments et défauts HTML

Avant d'utiliser un style, voir quel est l'élément html qui s'en rapproche le plus. Par exemple, pour faire des titres, se baser sur <h1> , <h2> , <h3> ... plutôt que sur <p> ou <div> .

En typographie on distingue entre 2-3 types d'éléments de base:

  1. les blocs (blocks), c.a.d. des éléments qui commencent un nouveau paragraphe. Exemples HTML: <p>, <h2>, <div>
  2. Les listes et leurs éléments sont des blocs spéciaux: <li>
  3. les "in-line", c.a.d. s'insérant dans un paragraphe. Exemples HTML: <b>, <strong>, <span>
display: block;
display: inline;
display: list-item;
  • Pour chaque élément "bloc" il existe un jeu de règles pour définir les marges, la position, les couleurs du texte et de l'arrière-plan. On peut même définir leurs positions absolues sur la page. Donc un bloc est une boite qu'on remplit avec un contenu selon les règles que l'on choisit.
  • Evidémment, il est possible de changer de type, par exemple afficher une liste à puce comme une suite de phrases.

Exemple 5-1: CSS positioning - <li> inline

Source: http://tecfa.unige.ch/guides/css/ex/simple-inline.html

6. Attributs du texte

Les attributs les plus utilisés sont les suivants (pleins d'autres !) (voir les pointeurs tecfa)

6.1 Attributs pour la gestion des propriétés d'écriture

Attributs

Valeurs

se charge de

exemple

font-family

nom de l'écriture

police

font-family: Helvetica;

serif

famille de police, écriture de type serif

font-family: Times,serif;

font-size

pt, cm

taille de police

font-size: 14pt;

font-style

forme d'écriture

italic

italique

font-style: italique;

font-weight

de 100 à 900

épaisseur

font-weight: 500;

normal

correspond à la valeur 400

font-weight: normal;

bold

correspond à la valeur 700

font-weight: bold;


6.2 Alignement du texte

Attributs

Valeurs

se charge de

exemple

text-align

alignement des paragraphes

left

aligné à gauche, valeur par défaut

text-align: left;

center

centré

text-align: center;

right

aligné à droite

text-align: right;

justify

justifié en forme de bloc

text-align: jutify;

text-indent

pt, cm

retrait de la première ligne

text-indent: 1cm;

line-height

pt, cm

hauteur des lignes

line-height: 14pt;

valeur relative

écart entre les lignes par rapport à la taille de l'écriture

line-height: 1.2;


7. Les boites CSS et leur positionnement

7.1 Anatomie des boites

Une boite (chaque élément "bloc" sauf les tables et autres exeptions qui ont des priorités à part ) possède l'anatomie suivante:

Css-intro-3.png

Chaque élément correspond à un selecteur CSS qui permet de définir la largeur générale (des 4 cotés) ou encore la largeur de chaque côté. On peut aussi définir dessin et couleur du cadre.

7.2 Les bords, les cadres et le couleur

Attributs

Valeurs

se charge de

exemple

margin

pt, px, cm, %

4 marges

body {margin:1cm;}

margin-top

marge en haut

p {margin-top:10px;}

margin-bottom

marge en bas

h3 {margin-bottom:3pt;}

margin-left

marge à gauche

img {margin-left:50px;}

margin-right

marge à droite

p.citation {margin-right:10pt;}

border

pt,px, cm, %

largeur du cadre

p {border:5px;}

border-top

h1 {border-top:0.2cm;}

etc ...

border-style

style de cadre

solid

ligne simple

p {border-style:solid;}

double

ligne double

h1 {border-style:double;}

padding

pt,px,cm,%,etc

marge intérieures

p {padding: 5px;}

color

valeur hexa /nom

couleur d'un élément

#menu {color:#000000;}body {color:blue;}

background

aussi

couleur de l'arrière-plan

h1, h2 {background:silver;}

  • Ceci n'est qu'un apperçu !
  • Il existe notamment des "shortcuts" qu'on montre sur la page suivante.

Les bords, les cadres et la couleur (shortcuts)

Exemple:

#content {    
border-right:    2px dotted black;
border-bottom:    2px dotted black;
color: #000;
background-color:    #ffffcc;
padding: 5px 5px 5px 5px;            /* haut, droite, bas, gauche */
margin:    5px 15px 5px 5px;
}
H1 {
  /* 1 cm en haut et en bas, 2cm sur les côtés */
  margin: 1cm 2cm;
  /* 3em en haut, 20% sur les côtés, et 2em en bas */
  padding: 3em 20% 2em;
}

Exemple 7-1: Plusieurs exemples simples avec des boites

  • http://tecfa.unige.ch/guides/css/ex/boxing0.html
  • la boite pour le "body" a des lignes pointillés
  • la boite pour un <p> a une petite marge, un bord solide, et une couleur en arrière-plan
  • une partie de ce meme paragraphe est mis dans une boite avec un "span"
<body style="border-style:dotted">
<h1>Boites</h1>
<p>The dashed box is for the "body", the big thick box is for a "p" tag, and the thin box is used within a "span" tag. (View the source).</p>
<p style="background-color:#d0d0d0;border-style:solid;border-width:4px;
         padding:1em;margin:0.1cm; ">
   Tout est une boite - DKS nov 2003
   <span style="background-color:#d0d0d0;border-style:solid;border-width:1px;
               padding:1pt;margin:1pt;width:50%;position:relative
">
    <a href="http://validator.w3.org/check/referer">XHTML validation</a> -
   <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS validation<a>
   </span>
  </p>
<p>Voir <a href="boxing1.html">boxing1.html</a>  pour plus ... </p>
</body>

7.3 Le positionnement

  • Par défaut les éléments d'une page HTML sont affichés séquentiellement un après l'autre
  • Mais on peut les positionner selon des coordonnées absolues ou relatives n'importe où sur une page (voir les exemples qui suivent)
#content    {    /*  les coordonnees selon l'horloge: 12, 3, 6, 9 */
    float:    left;
    width:    80%;
    color: #000;
    background-color:    #ffffcc;
    padding: 5px 5px 5px 5px;
    margin:    5px 5px 5px 5px;
    }
#menu    { /* qui sera mis à droite */
    position: absolute;
    right: 0;
    width: 17%;
    font:    10px/14px verdana, sans-serif;
    color:    black;
    margin:    5px 5px 5px 5px;
    background-color: #ffffff;
    }

Exemple 7-2: Positionnement relatif de boites flottantes

Exemple 7-3: Positionnement relatif horizontal + vertical

Exemple 7-4: Un menu: "ul/li" comme boutons

Exemple 7-5: Positions absolues

Exemple 7-6: Layout 3-colonnes


8. XML avec CSS

8.1 Association d'une feuille de style

  • Il est conseillé d'utiliser une feuille externe et ensuite l'importer:
<?xml-stylesheet type="text/css" href="feuille.css"?>
  • note: pas de feuilles de styles internes comme pour HTML !

Voici le début d'un fichier:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet href="stepbystep.css" type="text/css"?>
<!DOCTYPE Stepbystep SYSTEM "stepbystep-ex.dtd">
<Stepbystep xmlns:xlink="http://www.w3.org/1999/xlink">
 <Doctitle>ATTENTION: Il ne s'agit ici que d'une démo XML + CSS. L'original de ce fichier se trouve
ailleurs et a été modifié sans doute depuis ....
 </Doctitle>
 <Info>
  <Author Email="Stephane.morand@tecfa.unige.ch">
  </Author>
  <Version>Version 0.2</Version>
  <Para>installation brute de postnuke sur le serveur tecfaseed
  </Para>
 </Info>

8.2 Selecteurs CSS2 pour XML et HTML

  • XML nécessite un navigateur qui supporte CSS2 (au moins en partie)
  • A part la notation Balise.classe les sélecteur XML et HTML sont les mêmes !

sélection d'un élément

nom_de_l'élément

Exemple:

Step {
display: list-item;
list-style-type: decimal;

}

sélection d'un élément qui est l' enfant direct d'un élément

élément_mère > élément

Exemple:

Step > Title { .... }

sélection d'un élément qui est le descendant d'un élément

élément_mère élément

Exemple:

Step Title { .... }

Dans l'exemple suivant P est un descendant de LI, LI doit être un enfant direct de OL. OL est dans DIV.

DIV OL>LI P

sélection d'un élément qui est le frère d'un élément

élément_frère + élément

Exemple:

H1 + H2 { margin-top: -5mm }

(on réduit la distance)

sélection d'un élément qui possède un attribut

élément[attribut]

Exemple:

Title[status] { color: blue; }

(tous les titres qui un attribut "status" sont paints en bleu )

sélection d'un élément qui possède un attribut avec une valeur

élément[attribut="valeur"]

Exemple:

Title[status="brouillon"] { color: red; }

(tous les titres qui un attribut "status" avec valeur "brouillon" sont peints en rouge )

Note: au lieu de "=", on a aussi ~= et ¦= (voir la documentation)

8.3 Premières opérations à faire

  • Il faut d'abord indiquer pour chaque élément s'il est un "block" ou "inline"
  • Faire sortir les titres
  • Gérer les listes


Exemples

/* title et para sont des éléments "block", ils ont une petite marge
title, para {display: block; margin: 0.5em;}
/* les title sont un peu plus grands */
title {font-size: 1.5em;}
/* les item sont des list-item de type bullet */
item {display: list-item;list-style-type: bullet;}
/* strong est un élément inline, rendering on italic et bleu   */
strong {display: inline; font-style: italic; color: rgb(000,000,128);}

Exemple 8-1: Exemple "Stepbystep"

(répertoire avec tous les fichiers)

  • Le DTD Stebbystep permet de formatter des instructions de type "pas par pas", par exemple comment installer un logiciel.

Exemple 8-2: Récit

( répetoire avec une solution CSS et une solution XSLT )

  • La DTD "RECIT" permet d'écrire des simples récits avec une grammaire génératrice.

Liens

Ressources CSS

Voir CSS (Edutechwiki - Anglais)

Slides