L'ensemble des propriétés typographiques attaché à un document, ou à une balise HTML représente un style. La possibilité de pouvoir séparer un document HTML des attributs typographiques permet de partager ces attributs entre plusieurs documents, et donc de donner une certaine homogénéïté à un ensemble de pages.
Un style permet de personnaliser le comportement d'une balise HTML. Avant d'écrire un document en langage HTML, on définit les modifications souhaitées, sous la forme d'une suite de règles; chaque règle comporte le nom d'une ou plusieurs balises et les propriétés que l'on veut changer.
Exemple de règle:
H1 {color:blue; font-size:18pt}
Chaque règle comprend un sélecteur, ici H1 et la
déclaration d'une ou plusieurs propriétés;
Deux syntaxes permettent de définir les styles; la syntaxe ci-dessus
répond à la norme CSS.
L'autre syntaxe est plus proche du langage JavaScript; on
présentera la règle ci-dessus par les instructions:
tags.H1.color = "green"
tags.H1.fontSize = "18pt"
Dans la suite on utilise essentiellement la syntaxe CSS.
Les définitions peuvent se placer dans un ou plusieurs fichiers externes, ou dans l'entête du document en utilisant la balise STYLE ou dans une balise en utilisant l'attribut style.
Cela permet d'avoir le même style dans plusieurs documents, et d'obtenir une présentation homogène de plusieurs pages. Quand un style doit être changé, la seule modification dans le fichier de style est automatiquement répercutée dans les documents utilisant cette feuille.
Exemple de fichier de style:( styledef.css) /* un exemple */
@import url("stylede1.css");
h2 { margin-left:-0.4cm; color:salmon }
P { margin-left:0.8cm }
BODY { margin-left:0.4cm; color:#880088; background-color:#FFFFF0}
<LINK rel="styleSheet" type="text/css" href="styledef.css">
Il existe deux syntaxes de définition des styles; l'une des valeurs 'text/css' ou 'text/javascript' de l'attribut type indique celle qui est utilisée.On peut mettre plusieurs balises LINK; et dans un fichier de style on peut inclure, par le mot @import d'autres fichiers de style, comme dans l'exemple ci-dessus.
Cela permet de particulariser le document; les styles sont définis dans l'entête, en utilisant la balise <STYLE> comme ci-dessous:
<STYLE type="text/css">
SAMP { margin-left:1.2cm;
font-weight:normal; font-style:normal; font-size:10pt; }
/* Paragraphe en retrait de 1.5 centimètres */
P { font-size:10pt; margin-left:0.5cm;}
</STYLE>
Cela est possible, mais doit être exceptionnel. On utilise l'attribut style, comme ci-dessous:
<H1 style="color:blue; font-style:italic">
P { font-size:10pt; margin-left:0.5cm;}
H3, H4
SAMP TT
BLOCKQUOTE.source
H3, H4 {color:green; font-weight:bold; margin-left:-0.5cm}
alors la déclaration de propriété affecte chaque balise.H3 EM { color:red; font-size:larger }
<P style="margin-left:2cm;">
1: texte avec <EM>la balise EM</EM> utilisée</P>
<H3 style="margin-left:2cm">
2: texte sans la balise EM</H3>
<H3 style="margin-left:2cm;">
3: texte avec la <EM>balise EM</EM> utilisée </H3>
1: texte avec la balise EM utilisée
BLOCKQUOTE { color:#8000F0; margin-left:0.5cm; font-size:10pt;}
BLOCKQUOTE.source { margin-left:2.0cm; font-family:courier }
un texte dans le bloc: <BLOCKQUOTE>
un texte dans le bloc: <BLOCKQUOTE class="source">Le bloc de classe "source" hérite de l'attribut couleur; par contre il a, en propre, sa marge et sa police de caractères.
Interligne, exprimé en millimètres, centimètres ou points |
Ce texte est affiché avec le style défini dans une balise par:
|
Alignement à gauche, centré ou à droite |
Ce texte est affiché avec le style défini dans une balise par:
|
Indentation de la première ligne |
Ce texte est affiché avec le style défini dans une balise par:
|
Graisse utilisée pour la police |
Pour ce texte, le style est:
|
Style de la police |
Pour ce texte, le style est:
|
Taille de caractère |
Pour ce texte, le style est:
|
Nom de la police |
Pour ce texte, le style précise la police de caractères:
|
ou avec Times New Roman |
Pour ce texte, le style précise la police de caractères:
|
ou avec Comic Sans MS |
Pour ce texte, le style précise la police de caractères:
|
Permet de fixer plusieurs attributs |
Pour ce texte, le style est:
Pour ce texte, le style est:
|
Décrivons les propriétés permettant de colorer un texte ou le fond d'un bloc.
Nom de la couleur du texte |
Pour ce texte, le style est défini par la balise:
|
Couleur du fond |
Pour ce texte, le style est défini par la balise:
|
Le fond d'un élément 'en-ligne' ou d'un bloc peut être précisé avec d'autres attributs que celui de couleur, vu ci-dessus
Couleur du fond |
Pour ce texte, le style est défini par la balise:
|
Image de fond background-image |
Pour ce paragraphe, le style est défini par la balise:
valeur acceptée pour le champ url |
Image latérale background-repeat : repeat-y |
Pour ce paragraphe, le style précise:
|
Image en haut : background-repeat : repeat-x |
Pour ce paragraphe, le style précise:
|
Couleur du fond |
Pour ce texte, le style est défini par la balise:
|
background-color background-image background-repeat background-attachment background-position
Un bloc est dessiné dans un cadre (pouvant être invisible), lui-même dans une une zone rectangulaire. Il existe une marge paramétrable entre l'extérieur de la zone et le cadre; le cadre a une épaisseur (border) réglable; enfin l'espacement (border) intérieur entre ce cadre et le bloc est aussi modifiable.
On peut soit utiliser la seule propriété margin pour donner la même taille aux quatre marges, soit définir des tailles pour chaque marge, individuellement.
Marge sous le cadre |
un paragraphe précisant margin-bottom:0.9cm et la ligne suivante |
Marge au-dessus du bloc et à gauche. |
La marge du bloc ci-dessous est de 1cm.
un paragraphe précisant "margin-left:1cm; margin-top:1cm" |
On peut soit utiliser la seule propriété padding pour donner la même taille aux quatre espaces, soit définir des tailles pour chaque espace, individuellement.
Remplissage entre le haut du cadre et le texte |
une texte précisant padding-top:1cm et border-color:blue |
Remplissage à gauche du texte. |
une texte précisant padding-left:2cm |
Nature de l'encadrement | border-style:groove; border-width:17px; border-color:purple |
Un coté du cadre |
une texte précisant border-left-style:double; border-left-width:7pt;
border-left-color:blue
|
Un attribut et plusieurs valeurs |
un texte précisant border: dotted 7pt #B3FFB3;
|
En cliquant, ci-dessous sur le "bouton"
▼ suite ... ▼
du texte
apparaît, et ce "bouton" laisse la place à un autre.
En fait on peut inclure aussi des images, une table ... (toute balise
Html) dans cette zone affichée ou masquée à la demande.
Code Css voir ...
/* voir cacher */ div.voirCacher { display:none; margin-left: 4px; padding-left:4px; padding-bottom: 3px; border-left: dashed 1px rgb(192,80,80); border-bottom: dashed 1px rgb(192,80,80); } a.voirCacherM, a.voirCacherC { /* liens pour voir-cacher */ font-weight:bold; font-size:0.71em; text-decoration:none; padding:5px; border:solid 1px rgb(192,80,80); } a.voirCacherC { /* lien pour cacher */ color:rgb(192,80,80); margin-left:-5px; }
Voir dans ce code
→
le style de la balise div contenant le texte caché ; initialement ce
bloc est caché (display:none;). Une bordure en pointillé, à gauche et en
bas, délimite cette zone.
→
et le style des balises a (boutons permettant de cacher ce texte sur un
click.
Code Html voir ...
<div> <div> <!-- texte_intro ============================== --> <p> N'importe quel code html bien <b>structuré</b> pouvant ête sur plusieurs blocs h1, ..., div, p, pre, ol, ul ... et à la fin le lien permettant sur un click de voir la partie cachée </p> <p> <b>Code Html </b> <!-- fin texte_intro ========================== --> <a class="voirCacherM" href="javascript:void(0)" onClick= "this.parentNode.parentNode.parentNode.children[1].style.display='block'" >voir ...</a> </p> </div> <div class="voirCacher"> <!-- texte_caché =========================== --> <pre class="txtCode"> bla bla bla </pre> <p style="padding-left:9px;"> bla bla bla </p> <div style="clear:both"></div> <!-- fin texte_caché ========================= --> <a class="voirCacherC" href="javascript:;" onclick="this.parentNode.style.display='none';" >↑ cacher</a></div> </div>
Voir ci-contre dans un bloc div ancêtre, deux sous blocs div
consécutifs. Le premier (fond rose) contient un texte toujours visible
et un lien (fond vert) permettant de voir le texte caché.
Le deuxième (fond bleu) contient le texte caché et un lien (fond vert)
permettant de cacher à
nouveau le texte.
→ Remarquer dans le premier lien, la façon d'obtenir le
bloc div bleu
+ this.parentNode désigne le bloc p
+ this.parentNode.parentNode désigne le bloc rose
+ this.parentNode.parentNode.parentNode désigne le bloc ancêtre
+ this.parentNode.parentNode.parentNode.children[0] désigne le bloc rose
+ this.parentNode.parentNode.parentNode.children[1] désigne le bloc bleu
et c'est sur ce dernier que l'attribut style.display prend la valeur 'block' et devient donc visible.
Structure div ← bloc ancètre div ← bloc rose bloc +++ /bloc ← un ou plusieurs bloc +++ a ...voir /a ← lien pour voir /bloc /div div ← bloc bleu bloc +++ /bloc ← un ou plusieurs a ↑ cacher /a ← lien pour cacher /div /div↑ cacher
<script>voirCacherFn('<b>Code Html</b> ','teleCh')</script> <!-- texte caché --> <p> bla bla bla </p> <ul> <li>Le projet et sa Pratique <span class="dateDoc">106,5ko-</span></li> <li>Statuts SNL Union <span class="dateDoc">78,0 ko - </span></li> <li>Charte SNL <span class="dateDoc">326,6 ko - </span></li> </ul> <!-- FIN texte caché --> <script>voirCacherFn('FIN')</script>
Voir ci-contre deux appels d'une fonction javascript pour une présentation
très simple.
→ les mots avant le texte caché sont indiqués sur le premier appel
→ Le texte caché est codé entre les deux appels ; il est
constitué de un ou plusieurs blocs de code html.
→ le deuxième appel, avec l'argument 'FIN' ne doit pas être oublié.
// Les arguments nomClasse et txtVoir sont optionnels function voirCacherFn( txtIntro, nomClasse, txtVoir) { var TXTVOIR='voir la suite ...'; var TXTCACHER='cacher ^^^'; var STYLE_DIV_MC='voirCacher'; // classe de style balise div var STYLE_A_M='voirCacherM'; // classe de style du lien a (pour montrer) var STYLE_A_C='voirCacherC'; // classe de style du lien a (pour cacher) var DB='<',FB='>'; /* var DB='<',FB='>'; */ if(arguments.length<3) txtVoir=TXTVOIR; if(txtIntro != 'FIN') { // introduction, texte d'info et bouton 'montrer' var attribClasse = (arguments.length==1) ? "" : " class='"+nomClasse+"'"; document.write("" +DB+"div "+attribClasse +FB +DB+"div style='margin-bottom:7px;' "+FB+txtIntro+" " +DB+"a onClick=\"this.parentNode.parentNode.children[1].style.display" +" ='block'\" " +" href='javascript:void(0)' class='"+STYLE_A_M+"'>"+txtVoir+DB+"/a"+FB +DB+"/div"+FB +DB+"div class='"+STYLE_DIV_MC+"'"+FB ); } else { document.write("" +DB+"a class='"+STYLE_A_C+"'" +" onclick=\"this.parentNode.style.display='none';\" " +" href='javascript:;' "+FB+TXTCACHER+DB+"/a"+FB +DB+"/div"+FB +DB+"/div"+FB ); } } // fin voirCacherFn(txtIntro, nomClasse, txtVoir)
On doit définir d'une part la
zone réactivequi est ici encadrée en pointillés pour indiquer au lecteur une
particularité sur ces mots (ici on utilise une balise a class="infoBulle")
mais également l'information qui apparaît de façon éphémère et le
« mécanisme » (ici le pseudo événement a.infoBulle:hover) qui permet son apparition/disparition
d'une part la <a href="javascript:void(0);" class="infoBulle"> zone réactive <span style="width:450px; left:-94px;top:-1.2em;"> qui est ici encadrée en pointillés pour indiquer au lecteur une particularité sur ces mots </span></a> mais également
Remarquer que la largeur de la bulle et sa position sont précisées dans la balise span. On peut ainsi les adpater.
On ne peut pas mettre un lien dans le texte de la bulle.
a.infoBulle { cursor: help; position:relative;z-index:24; text-decoration:none;margin-bottom:0px;padding: 0 3px 0 3px;color:#000; border:1px dotted #993300; } a.infoBulle:hover { z-index:25;background-color:#ECF4B4; !important; color:#000!important; font-weight:normal!important; text-decoration:none; } a.infoBulle span { display:none;} a.infoBulle:hover span { display:block; padding:4px; position:absolute; top:1.5em; left:-2em; border:3px solid #a2a2a2; background-color:#f2f2f2;color:#00f; font-size:12pt; text-align:center; }
Voyons l'exemple de cette zone sensible au passage de la souris qui est ici très visible par sa coloration. Nous voyons ci-après la déclaration de style et le code Html permettant ces effets.
Déclarations de style: voir ...
span.maBulle { position:relative; z-index:2; cursor: help; background-color:#ECF4B4; margin:0px 4px; padding:0 3px; color:#000; border-bottom:1px dotted #993300; } span.maBulle span { position:absolute; padding:4px; border:3px solid #a2a2a2; background-color:#f2f2f2;color:#00f; font-size:12pt; }
Nous avons deux éléments dont les styles sont précisés:
Code Html voir ...
Voyons l'exemple de cette zone
<span class='maBulle'
onMouseOver="javascript:document.getElementById('txtB1')
.style.display='inline'"
onMouseOut="javascript:document.getElementById('txtB1')
.style.display='none'"
>
sensible au passage de la souris
<span id="txtB1" style="display:none; top:-2.5em; left:0em;">
ici le texte de la bulle associée<br>
qui apparaît au survol de la souris<br>
<a href="javascript:alert('ici par exemple\nune boîte message')">
et un lien</a>
</span>
</span> qui est ici très visible ...
Observons que :
function uneBulleFn(texteIntro, nomClasse) { var DB='<',FB='>'; var CLASSBULLE='uneBulle'; if(texteIntro != 'FIN') { if(arguments.length==1) nomClasse=CLASSBULLE; document.write("" +DB+"span class='"+nomClasse+"' " + "onMouseOver=\"this.children[1].style.display='block'\" " + "onMouseOut =\"this.children[1].style.display='none'\" "+FB +DB+"var class='"+nomClasse+"'"+FB+texteIntro+DB+"/var"+FB ); } else {document.write(DB+"/span"+FB); } }
Le premier argument contient le texte qui est à survoler pour voir la bulle ;
ce texte, codé en html, peut contenir toute balise admissible comme élément enfant de la balise var (voir ces éléments)
Le deuxième argument a pour valeur par défaut : uneBulle utilisé pour les trois déclarations de style : 'span.uneBulle', 'span.uneBulle var.uneBulle' et enfin 'span.uneBulle span'.
span.uneBulle { position:relative; z-index:2; display:inline cursor: help; margin:0px 4px; padding:0 3px; border-bottom:1px dotted rgb(192,80,80); } span.uneBulle var.uneBulle { font-family:inherit;font-style:normal; } span.uneBulle span { display:none; position:absolute; left:0em; top:-1em; z-index:4; padding:4px; border:3px solid #a2a2a2; background-color:#f2f2f2;color:#00f; font:normal 0.8em 'comic sans ms'; }
Quelques
<script>uneBulleFn('déclarations')</script>
<span style="top:-2.1em; left:0em;width:24em;">
de style tout d'abord - nom: <b>uneBulle</b><br>
et d'une fonction javascript - nom: <b>uneBulleFn</b><br>
<a href="http://giminik.developpez.com/xhtml/span.html"
>voir la hiérarchie des balises html</a>
</span>
<script>uneBulleFn('FIN')</script>
doivent être faites au préalable.
Le code ci-contre correspond au texte ci-dessus, avec sa bulle sur le mot 'déclarations'.
Le premier appel, dans la balise script,
uneBulleFn('déclarations')
contient le mot à survoler
La partie en rose correspond au code html du texte dans la bulle ; il est
obligatoirement dans une balise span ; il peut contenir des éléments
de mise en forme et des liens.
Le deuxième appel, uneBulleFn('FIN'), dans l'autre balise script,
ne doit pas être oublié.
L'attribut media peut être présent dans les balises LINK et Style. La valeur par défaut est screen.
Exemples d'utilisation
L'attribut media de la balise <STYLE> permet d'indiquer le type de matériel concerné par le style. La valeur par défaut est screen.
Les colonnes ci-contre donnent des valeurs possibles pour cet attribut.screen écran d'ordinateur tty dispositif à espacements fixes tv écran TV (faible résolution) projection écran de projection à lampe handheld écran de poche imprimante braille table tactile aural synthétiseur de paroles all tout type de matériel
présentation de Gilles Maire | http://guide.ungi.net/chap32.htm#_0 |
manuel de style du W3C: | http://www.yoyodesign.org/doc/w3c/manual-of-style-20050908/ |
CSS1 du W3C: | http://www.yoyodesign.org/doc/w3c/css1/ |
CSS2 du W3C | http://www.yoyodesign.org/doc/w3c/css2/cover.html |
à propos de la spécification CSS2: | http://www.yoyodesign.org/doc/w3c/css2/about.html.html |
attributs infini: | http://www.infini-fr.com/Index.wp?RequestedPage=...Attributs |
première approche: | http://www.w3.org/TR/REC-CSS2/intro.html#q1 |
attributs infini: | http://www.infini-fr.com/Index.wp?RequestedPage=...Attributs | CSS2 specification: | http://www.w3.org/TR/REC-CSS2/ |
W3C Recommendations: | http://websitetips.com/css/w3c/c |
comparaison CSS-XSS: | http://www.w3.org/Style/CSS-vs-XSL |