Les formations du Net | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Formations last revised : |
Introduction aux Cascading Style SheetsUn Webmaster qui a pris l'habitude de puiser dans les "profondeurs" du HTML ou, pire, qui a fait connaissance avec les premiers éléments des feuilles de style a besoin de beaucoup d'imagination pour se souvenir des premières idées des "pionniers" du Web. Mais il est vrai que, dans les jours de "l'invention" du Net, les internautes se seraient bien amusés si on leur avait dit que, un jour, un créateur de site aurait à s'occuper d'un problème tel qu'une mise en page plus ou moins "parfaite". Ainsi, les premières pages sur Internet ne ciblaient que des objectifs scientifiques, et la seule question qui intéressait leurs créateurs était la quantité de texte qu'ils pouvaient y insérer. Le prochain pas concernait les images. Les scientifiques étaient évidemment contents lorsqu'un moyen a été trouvé pour en ajouter au moins quelques-unes à leurs pages. Toutefois, l'esprit n'avait pas changé : on appréciait le support de transmission d'information, mais plus "sobre" la forme dans laquelle cette information était présentée, plus "pure" sa valeur informative... La suite est devenue histoire. Les "piliers" de l'univers de l'Internet ont créé le World Wide Web Consortium - le W3C - avec l'idée de se mettre d'accord sur chaque marqueur, chaque attribut et chaque valeur dont ils comptaient élargir le système préféré des Webmasters de la première heure, le HTML. L'idée, évidemment, était excellente. Son exécution, par contre, s'avérait déjà plus difficile. C'est que les "grands" - Microsoft et Netscape - n'avaient pas trop envie d'adopter les trouvailles de l'autre, et chacun s'est mis à créer son propre "standard". C'est-à-dire que, tant qu'il y avait question des balises de base, le problème n'était pas énorme. Mais dès que les marqueurs plus "avancés" sont entrés en jeu, il est arrivé à l'un de refuser les idées de l'autre... Ainsi, <BGSOUND> ou <MARQUEE> sont des inventions de Microsoft jamais acceptées par les navigateurs de Netscape, tandis que <EMBED> ou <SPACER> n'ont pas été reconnus par les Internet Explorers. Finalement, cette alternative a été trouvée - en forme des Cascading Style Sheets, des feuilles de style en cascade. Une fois acceptées par le W3C et associées au HTML, la plupart de leurs éléments ont été admis par les nouvelles générations des navigateurs courants et inclus dans leurs "répertoires". Déjà dans le chapitre sur les bases des CSS lié au cours HTML, nous avons appris à quoi elles servent : elles nous donnent la possibilité de faire toute sorte de mise en page, c'est-à-dire de créer enfin tous ces fameux sites cool. Elles gèrent les couleurs des polices, des liens, des arrière-plans ou même celles de certaines parties d'un arrière-plan, elles insèrent des espaces, savent manipuler les polices, les alignements, les tailles, la manière comment les liens sont présentés (soulignés, non soulignés, sur un fond coloré...) - bref, tout ce qui peut rendre plus "sympathique" l'aspect d'une page. Mais ce n'est pas tout. Non seulement qu'elles augmentent considérablement nos possibilités, elles nous épargnent aussi pas mal de travail. Il est vrai que, tant qu'il n'est question que de fixer le style d'une seule ligne ou d'un paragraphe, leur emploi ne sauve pas beaucoup de temps. Mais celui qui, en utilisant le HTML "classique", a jamais essayé de changer toutes les tailles de police sur une page ou, même, sur un site entier, est bien conscient du travail qu'une telle modification peut impliquer. Ce qui nous mène à un des avantages les plus essentiels des style sheets : la possibilité de gérer la mise en page en dehors du code, sur une propre feuille. Une telle feuille peut occuper une sorte de "poste de contrôle" surveillant la mise en page du site entier. Mais nous sommes aussi libres de nous servir de plusieurs de ces style sheets externes en même temps, leur nombre est théoriquement illimité, et il suffit d'en appeler une à partir de la page qu'elle est censée gérer pour que ses instructions soient transmises au code.
Rappelons que les inline style sheets ont l'avantage de pouvoir être insérées partout dans notre code. Si, alors, nous n'avons que quelques mots ou quelques lignes à modifier, elles peuvent s'avérer bien pratiques.
Face à cette "avalanche" (plutôt que cascade) de commandes différentes, il est évidemment la première tâche d'un navigateur d'y mettre une espèce d'ordre. C'est qu'il est inévitable que les divers attributs se "contredisent" et parfois, ce genre de contradiction peut même s'avérer utile : lorsque, par exemple, une feuille de style externe définit la link color d'un site entier, mais nous souhaitons qu'un seul lien apparaisse dans une autre couleur, il ne serait pas raisonnable de nous priver de l'emploi de la style sheet pour si peu. Dans un tel cas, il suffit de définir l'exception "sur place", au moyen d'une feuille de style locale. Seul problème : le navigateur doit savoir, à qui donner la priorité. Heureusement, cette question a été réglée "d'office", par les "inventeurs" des feuilles de style. Dans la cascade d'attributs - ou de "propriétés" comme on dit en langage CSS -, ce sont toujours les expressions "classiques" du HTML qui gardent le dessus. Immédiatement après elles, les style sheets du type local sont prises en compte. Ensuite, les navigateurs s'occupent des commandes lancées par les embedded style sheets pour ne pas "obéir" aux feuilles de style externes qu'à la fin, lorsque aucune autre instruction ne s'y oppose. Au cours de la formation des feuilles de style, nous remarquerons que ces règles ne "fonctionnent" pas dans toutes les situations. Mais ce sont les "bogues" et "astuces" d'une technique dont le pro prend rapidement l'habitude. Les étudiants de la formation apprennent rapidement à ne plus s'inquiéter pour ces problèmes - ils les maîtriseront dès qu'ils en auront pris connaissances. Pour le moment, par contre, nous nous contentons d'appliquer les règles qui ont le mérite de nous guider à travers l'apprentissage d'une technique riche et complexe. Toutefois, si nous parlons des relations entre les embedded et les external style sheets, nous nous rendons compte que ces règles ne sont pas si évidentes qu'ils ont l'air à première vue.
Note : Nous avons déjà remarqué qu'il est rare qu'on emploie le terme "attribut" lorsqu'on utilise le vocabulaire des CSS. Pour mieux distinguer entre HTML et CSS, on préfère parler de propriétés.
Les préférencesNous savons bien que, malgré toute la peine que nous nous donnons avec notre site, l'internaute a finalement toujours le dernier mot. S'il insiste à configurer son navigateur pour qu'il affiche le contenu de sa fenêtre d'une certaine manière - par exemple dans une taille de texte différente, en mode plein écran etc. - nous n'avons aucune chance de nous y opposer. Lors de la création d'une page, nous sommes donc obligés de prendre en compte les préférences de l'internaute qui dominent toujours les éléments de notre code - peu importe si nous nous servons du HTML "classique" ou des feuilles de style. Pour cette raison, la technique avancée des feuilles de style a été enrichie d'un user interface permettant à l'internaute de choisir entre deux options : accepter les préférences du programmeur ou introduire son propre style à la page qu'il visite. Un autre facteur plus "fort" que notre code consiste dans le navigateur lui-même. Au cours de notre travail, nous ne devrions jamais oublier que ses priorités sont elles aussi plus fortes que les valeurs que nous attachons à nos balises et attributs. - Et quand nous pensons au nombre de navigateurs différents que les visiteurs de nos sites sont susceptibles d'employer, le problème nous apparaît dans sa vraie dimension. - Seule la configuration qu'un internaute impose à son navigateur garde la priorité sur les valeurs prédéfinies par les créateurs des browsers. Héritages et prioritésUn aspect intéressant des CSS consiste aussi dans la capacité des sélecteurs - comme on appelle les balises dans la technique des feuilles de style - d'hériter des valeurs de leurs "ancêtres". Cette fonction suit un schème relativement simple : dès qu'une valeur a été déclarée, elle est automatiquement transférée à un sélecteur "fils" appelé plus tard. Cette technique peut s'avérer très pratique lorsque, par exemple, une valeur "contradictoire" est définie qui "relève" la première, mais ne s'applique qu'à une partie limitée de la page. C'est-à-dire qu'au moment où cette nouvelle valeur reperd ses "droits", nous n'avons pas besoin de redéfinir la précédente pour qu'elle soit rappliquée : le prochain sélecteur en "hérite" automatiquement.
Attention : Vu la nature de la fonction de l'héritage, il va de soi que les valeurs héritées ne tiennent pas une position très élevée sur l'échelle des priorités. En général, nous pouvons partir du principe que toutes les valeurs définies dominent celles qui ont été héritées. Au cours de la formation CSS, nous serons encore très souvent confrontés aux règles de l'héritage entre "ancêtres" et "enfants". Nous traiterons ces règles au fur et à mesure, toujours en relation avec la matière que nous étudions. Face à tous ces combats pour gagner le dessus, nous nous posons évidemment la question, s'il n'y a aucun moyen capable de "tromper" les éléments plus forts que les autres. Ce qu'il nous faudrait, c'est une méthode pour, par exemple, offrir aux valeurs d'une embedded style sheet la possibilité de dominer celles d'une feuille de style du type inline. Comme attendu, les créateurs de la technique des CSS ne nous déçoivent pas : un tel élément existe. Son utilisation est même très facile - il suffit d'ajouter l'élément ! important
Nous sommes conscients qu'avec le mot clé ! important, nous créons automatiquement une nouvelle échelle de priorités : plusieurs propriétés qui portent toutes la mention ! important suivent entre elles les mêmes règles de "privilèges" que celles qui en sont dépourvues. Mais attention : Lorsque nous travaillons avec la version CSS 1 et ajoutons ! important aux préférences du programmeur et, en même temps, à celles de l'internaute, celles du programmeur prennent le dessus. Si, par contre, nous employons les CSS 2, le contraire arrive : les préférences de l'internaute deviennent les plus fortes. Il va de soi que la diversité de la "cascade" ne s'arrête pas à la différence entre une feuille de style locale et interne. C'est que les "inventeurs" des CSS ont prévu un tas de règles qui définissent chaque détail de l'échelle des priorités. Ainsi, nous y trouvons l'information que les sélecteurs simples sont moins "forts" que les sélecteurs descendants ou les classes qui, de leur part, prennent le dessous lorsqu'elles sont confrontées aux sélecteurs id... Mais il peut aussi arriver que nous soyons confrontés avec deux valeurs qui, selon les normes, ont la même priorité. Dans un tel cas, les CSS suivent une règle très simple : le style que nous avons déclaré le dernier reste le plus fort. Les diverses positions sur l'échelle des priorités seront expliquées au fur et à mesure au cours des différents chapitres de la formation. Les scripts dans les CSSNous ne devrions évidemment pas oublier les instructions qui atteignent le navigateur en forme d'un script. - Lorsque, jusqu'à maintenant, nous avons étudié une balise ou un attribut, nous avons eu affaire à des commandes "pures". Ce genre de commandes ont l'avantage que leur traitement ne laisse pas de choix aux navigateurs, et si le code définit une link color ou un type de police, la forme de son exécution ne laisse aucun doute. Au moment où les styles sheets s'en mêlent, le travail du navigateur devient déjà moins réglementé - mais, heureusement, sa tâche reste claire grâce aux normes plus ou moins précises fixées par le W3C. Les versions des CSSActuellement, nous pouvons partir du principe que tous les navigateurs de la nouvelle génération ont accepté la version 1 des feuilles de style. La dernière version, par contre, CSS 2, n'est toujours pas entièrement reconnue par tous les navigateurs. En ce qui concerne les deux "grands", la version 5.5 de l'Internet Explorer et Netscape 6.0 étaient les premiers à interpréter plus ou moins correctement les éléments des CSS 2. La syntaxe des feuilles de styleAvant de nous lancer dans l'explication des nombreuses facultés de la technique des CSS dont non seulement la quantité mais surtout la qualité a tout pour "révolutionner" notre conception initiale d'un document HTML, rappelons les règles de la syntaxe d'une feuille de style. Comme nous l'avons déjà appris dans le chapitre consacré à la base des cascading style sheets, la déclaration d'un style s'appuie d'abord sur un sélecteur ou identifiant librement choisi qui, en général, consiste en un marqueur du "répertoire" du HTML. A ce sélecteur, nous lions les propriétés et valeurs qui définissent la mise en page du site - ou de la partie du site - géré par la feuille de style.
Attention : N'oublions pas qu'un sélecteur, au contraire d'un marqueur HTML, n'est jamais entouré par des parenthèses du genre < et >.
Les bases des CSS
Bien que la norme n'exige pas expressément le point-virgule (;) après la dernière valeur d'une déclaration, ce caractére apporte un plus de clarté et augmente la probabilité que le code soit correctement interprété par tous les navigateurs et sous tous les systèmes d'exploitation. Il est donc très fortement conseillé de l'utiliser. Dans le cas où nous appelons une valeur qui consiste en plusieurs mots, nous la plaçons entre guillemets : P {font-family: "times new roman", times, serif;} Lorsque nous ne sommes pas certains, si le navigateur du visiteur de notre site est capable d'afficher correctement une valeur prédéfinie, nous lui soumettons un choix de plusieurs valeurs. Dans le code P {font-family: verdana, "arial rounded", arial, helvetica, sans-serif;} le navigateur de l'internaute place la priorité sur "verdana". Toutefois, si l'ordinateur ne dispose pas de cette police, il saisit "arial rounded", "arial" ou "helvetica". Finalement, dans le cas où l'ordinateur de l'internaute ne possède aucune de ces polices, il se sert de la première police appartenant à la police générique - c'est-à-dire au groupe de polices - nommée "sans-serif". Nous avons également la possibilité d'attacher un ou plusieurs propriétés à plusieurs sélecteurs en même temps : P, H1, H2 {font-size: 24px;} Attention : Ici, les différentes indications sont séparées non par des points-virgules, mais par des virgules. L'emploi de l'attribut id nous est également déjà familier. Nous définissons une embedded style sheet, comme toujours placée dans le head de notre document, à laquelle nous donnons un nom de notre choix - dans notre exemple, nous utilisons le mot clé "texte1". N'oublions pas que ce nom est toujours précédé par un dièse (#) : #texte1 {... définition de la feuille de style interne ...} Ensuite, arrivés au body de notre page, nous reprenons le même mot clé ("texte1") pour l'attacher au marqueur <DIV> complété par son attribut id. Dans cette partie du code, nous renonçons à l'emploi du dièse : <DIV id="texte1"> ...texte ... </DIV> Le texte entouré par <DIV> et son partenaire final </DIV> adopte donc le style lié au mot clé appelé, c'est-à-dire, dans le cas de notre exemple, à "texte1". <HTML> <HEAD> <TITLE>Titre soigneusement choisi</TITLE> <STYLE type="text/css"> #texte1 { font-family: arial, helvetica, sans-serif; color: #ff0000; font-size: 14px; font-style: normal; font-weight: 900; text align: left; text-decoration: underline; } </STYLE> </HEAD> <BODY> <DIV id="texte1">Webmaster</DIV> ... </BODY> </HTML> Il va de soi que nous aurions pu choisir tout autre mot clé ou un bon nombre d'autres balises pour y attacher la feuille de style. Mais cela, nous n'avons plus besoin de le souligner : les règles de la création d'un mot clé te sont devenues familières il y a déjà un bon nombre de leçons, et au cours de ta formation HTML, tu as appris, à quels marqueurs tu peux attacher un style géré par l'attribut id Ainsi, l'auteur de l'exemple aurait aussi bien pu choisir le sélecteur <ACRONYM> : <BODY> <P>Les membres du <ACRONYM id="texte1" title="World Wide Web Consortium">W3C</ACRONYM> ont décidé...</P> ... </BODY> Les "finesses" des styles appelés par id ainsi que d'autres détails sur la syntaxe des sélecteurs et propriétés des CSS prochain chapitre, la technique des feuilles de style externe. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright: TechnoLangue, 1997-2007 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() ![]() | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||