CSS et Amaya

Irène Vatton

INRIA - 22 avril 2004

CSS - Cascading Style Sheets

Langage de feuilles de style
Un langage simple pour associer des propriétés de style à des éléments dans les documents structurés
Cascade : plusieurs feuilles de style peuvent être combinées (auteur, site, agent, utilisateur)
Exemple : sans CSS, avec CSS

Référence : http://www.w3.org/TR/REC-CSS2

Objectifs de CSS

Spécifier la présentation des documents de façon externe

Avantages

Principes

Une feuille de style est un ensemble de règles comprenant chacune

Exemple :

   h1 {color: yellow; font-weight: bold}
   ul ul li {font-size: small}

Sélecteurs CSS2

Quelques propriétés CSS2

124 propriétés

Couleurs

Il existe une liste de couleurs prédéfinies
aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow et orange.

Exemples :

   em {color: #f00}              /* #rgb */
   em {color: #ff0000}           /* #rrggbb */
   em {background-color: rgb(255,0,0)}      /* integer range 0 - 255 */
   em {background-color: rgb(100%, 0%, 0%)} /* float range 0.0% - 100.0% */

Unités

Les unités relatives :

Les unités absolues :

Fontes

Spécification de :

Exemples :

 p {font: 12pt/14pt sans-serif}
 p {font: 80% sans-serif}

Modèle de boîte

À chaque élément du document est associée une boîte qui possède

Des propriétés CSS contrôlent ces paramètres dans les quatre directions

Exemple :

 margin: 1em auto; /* top/bottom = 1em right/left = auto */
 padding: 1em 2em 3em; /* top = 1em right/left = 2em bottom = 3em */

Figure

Bordures

Épaisseur
border-top-width, border-right-width, border-bottom-width, border-left-width, border-width
Couleur
border-top-color, border-right-color, border-bottom-color, border-left-color, border-color
Style
border-top-style, border-right-style, border-bottom-style, border-left-style, border-style

valeurs : none / hidden / dotted / dashed / solid / double / groove / ridge / inset / outset

'dotted', 'dashed', 'double', 'groove', 'ridge', 'inset', et 'outset' peuvent être interprétés comme 'solid'

Raccourcis
border-top, border-bottom, border-right, border-left, border

Assemblage de boîtes

Les boîtes des éléments successifs de la structure se juxtaposent avec fusion des marges contiguës

Exemple :

<div>
  <p>First paragraph.</p>
  <p>The second...</p>
</div>

Figure

Propriété float

La propriété float pousse la boîte à gauche ou à droite de la ligne courante.

La boîte doit avoir une largeur explicite (propriété width) ou une dimension intrinsèque.

  img {float: left}

Image illustrating how floating boxes interact with margins.

Assemblage de boîtes et float

Quand une boîte mise en ligne se superpose avec un élément float, le contenu, le fond et la bordure de cette boîte sont poussés sur le bord de l'élément float.

Image showing a floating image that overlaps the borders of two paragraphs: the borders are interrupted by the image.

Propriété clear

La propriété clear permet d'annuler le comportement précédent.

p {clear: both}

Image showing a floating image and the effect of 'clear: left' on the two paragraphs.

Positionnement

Le positionnement est réalisé par la combinaison des règles suivantes

Media types

La présentation peut varier selon les média :

Sélection des règles CSS selon les média :

  @media print {
    body {font-size: 10pt}
  }
  @media screen {
    body {font-size: 12pt}
  }
  @media screen, print {
    body {line-height: 1.2}
  }

Règle @import

La règle @import permet d'inclure un fichier CSS dans un autre fichier CSS
Cette règle doit être placée en tête du fichier (avant toute autre règle).

Elle peut spécifier un media type.

Exemples :

   @import "mystyle.css";
   @import url("mystyle.css");
   @import url("fineprint.css") print;
   @import url("bluish.css") projection, tv;

Application des règles

Pour chaque élément de l'arbre d'un document, une valeur doit être calculée pour chaque propriété qui s'applique au média utilisé

On cherche, dans l'ordre

Feuilles de style multiples

Plusieurs feuilles de style peuvent s'appliquer au même document

Ces feuilles peuvent spécifier des valeurs différentes pour la même propriété du même élément : conflits

Cascade

La cascade permet de résoudre les conflits :

  1. Prise en compte du média
  2. Priorité de l'origine :

    La déclaration !important permet de supplanter les règles normales

    p {font-size: 18pt ! important}

    Règles normales : auteur > utilisateur > agent
    Règles importantes : utilisateur > auteur > agent

  3. Spécificité du sélecteur : le sélecteur le plus spécifique l'emporte
  4. Ordre d'apparition : la dernière règle rencontrée l'emporte

Spécificité du sélecteur

Exemples:

   *             {}  /* a=0 b=0 c=0 -> specificity =   0 */
   li            {}  /* a=0 b=0 c=1 -> specificity =   1 */
   ul li         {}  /* a=0 b=0 c=2 -> specificity =   2 */
   ul ol+li      {}  /* a=0 b=0 c=3 -> specificity =   3 */
   h1 + *[rl=up] {}  /* a=0 b=1 c=1 -> specificity =  11 */
   ul ol li.red  {}  /* a=0 b=1 c=3 -> specificity =  13 */
   li.red.level  {}  /* a=0 b=2 c=1 -> specificity =  21 */
   #x34y         {}  /* a=1 b=0 c=0 -> specificity = 100 */

Mise en oeuvre des CSS dans Amaya

Amaya ne supporte qu'un sous-ensemble des sélecteurs et des propriétés CSS2.
-> Liste des sélecteurs et des propriétés supportés.

Mais l'application fournit un ensemble d'aides pour :

Création d'un attribut

Le menu Style permet de créer des propriétés CSS2 qui vont être attachées à l'élément sélectionné (attribut style)

Créer une règle de style

Principe :
Utilise un attribut style comme modèle pour créer ou modifier une règle de style (élément style)

L'entrée Créer une règle depuis le menu Style.

Attache les propriétés :

L'entrée Appliquer une classe depuis le menu Style permet d'appliquer un classe à d'autres éléments.

Exemple all.htm

Gérer des feuilles de style

Le menu Style propose les commandes suivantes:

Il est possible de travailler sans CSS (voir Special/Preferences/Browsing/Apply CSS)

Exemples : désactivation et ajout d'une feuille CSS

Éditer une feuille de style

Une feuille de style peut être créée et éditée par Amaya

Visualiser le style appliqué

Amaya permet de

Exemple : avec plusieurs CSS

Float, marges, paddings

Attention : Amaya n'interprète pas les marges comme IE et Mozilla (travail en cours)

Rendu initial

Ajout des règles float + width :

   p {...; float: left; width: 25%}
   div {... margin: 0; padding: 5em}

Changement de la marge de la division :

   div {... margin: 0 0 0 25%; padding: 5em}

Changement du padding de la division :

   div {... padding: 0 0 0 30%}

Changement de la marge du paragraphe :

   p {... margin: 0 .4em 0 0}

Solution : ajout d'une division englobante