CoursCSS Id1466
CoursCSS Id1466
COURS THEORIQUE
Antoine Lucsko
Octobre 2011
Généralités
Le HTML signifie HyperText Markup Langage. C'est un langage de balisage, qui permet de
créer de l'hypertexte et de structurer sémantiquement le contenu d'une page web.
Le web trouve son origine dans les années 1989, lorsque Tim Berners-Lee rédige un document
hypertexte au CERN. L'année suivante on pouvait compter dans le monde entier 130 sites web...
À partir de 1990, Tim Berners-Lee développe les trois principales technologies du web : les
adresses web, le Hypertext Transfer Protocol (HTTP) et le Hypertext Markup Language (HTML) .
Puis dans la période de 1991 à 1994 un nombre considérable de sites Internet sont créés.
Le W3C ( World Wide Web consortium ), naît sous l'impulsion de Tim Berners-Lee en 1994. Il a
pour objectif de donner de la cohérence au projet de standardisation des langages pour le web
comme le HTML, XML,CSS, PNG, SVG (graphique vectoriel adaptable ),...
Les standards du web ont mis du temps à s'imposer et, on a pu assister durant toutes ces années
à ce que l'on appelle « la guerre des navigateurs ». Aujourd'hui on peut dire que les standards
définis par le W3C sont mieux intégrés par les navigateurs.
En France le collectif Openweb, où l'on peut trouver Tristan Nitot, actuellement président de
Mozilla-Europe, se charge de promouvoir les normes du W3C.
( Tristan Nitot sur le sujet du eG8 : http://vimeo.com/24178794 )
Les navigateurs
Les navigateurs web ont évolué depuis le début du web.
Microsoft s'implique dans les recommandations du W3C depuis 3 ans. Il sort en 2006 IE7 , puis
IE8 en 2009, et aujourd'hui : IE9. Il faut se rappeler que IE6 s'est imposé pendant plus de 6 ans,
sans réelle évolution...
Depuis 2005, on observe cependant une baisse de l'utilisation d'IE au profit des navigateurs dits
alternatifs comme Mozilla Firefox. Fin 2008 Google sort son propre navigateur : Chrome, basé sur
le même moteur de rendu que Safari . Ces derniers navigateurs sont très respectueux des normes
du W3C.
On peut tester le bon respect des recommandations du W3C de son navigateur préféré à l'aide du
test Acid3 (ce test est élaboré par le WaSP, groupe de concepteurs de site Internet professionnels
qui respectent et promeuvent les normes du W3C).
Remarques :
Aujourd'hui IE6 n'est utilisé que par 5% des internautes. C'est un navigateur comportant un grand
nombre de bugs, que l'on ne considérera pas dans ce cours.
Organisation
Pour l'écriture du code on utilisera Notepad++
Les documents seront en UTF-8 normal, il faut paramétrer Notepad++ pour que tous les nouveaux
documents ouverts soient en UTF-8. Rappelons que l'UTF-8 est un format de codage des
caractères.
Pour configurer Notepad++, il faut aller dans paramétrages > préférences :
Il faut ensuite créer un dossier html sur le bureau, dans lequel on créera les sous-dossiers
correspondant aux différents chapitres du cours.
Pour qu'une page web et un fichier css soient reconnus par les navigateurs, il faut mettre les
bonnes extensions aux fichiers HTML et CSS. Attention au nommage des fichiers, le nom des
fichiers est en alphanumérique, sans espace, sans accent et ne commence pas par un chiffre.
Pour créer un fichier HTML, il faut indiquer l'extension .html
Pour les fichiers CSS on indiquera l'extension .css
→ exemple
index.html pour un fichier HTML et global.css pour un fichier CSS
Introduction
Le cours porte sur le (X)HTML 1.0 strict. Ce langage de balise sert à structurer les pages web en
parties ou blocs, ayant un sens précis : paragraphe, listes, tableaux, etc.
Les CSS (Cascading Style Sheet ou feuille de style en cascade) décrivent la présentation, la forme
et l'habillage du document HTML.
Ces deux langages s'utilisent ensemble pour constituer des pages web graphiques.
Initiation au HTML
– Chaque élément HTML comporte une balise ouvrante et fermante. Toute balise ouvrante
doit obligatoirement être fermée. De même, les balises toute seule se ferme : <img />,
<br />, <hr />,...
– Les balises et les attributs de balises s’écrivent en lettres minuscules.
<a href= ''page.html '' title=''aller à la page nom '' >Un nom de la page</a>
– Les valeurs d’attributs de balise sont dans des côtes simples ou doubles
<span class=''orange'' id='banane'>je suis une orange ou une banane</span>
– Chaque attribut à une valeur
<input type= ''radio '' checked='' checked'' />
– Les éléments doivent être correctement imbriqués.
<p>Je suis un paragraphe <em>un peu long</em></p>
Remarques
Pour le XHTML1.0 strict les attributs et éléments de présentation ne sont plus autorisés. Ils doivent
être remplacés par des styles CSS ; l’attribut target des liens et les iframe ne sont pas autorisés (ni
frameset et frame).
Entités HTML
Les entités HTML servent à afficher des caractères spéciaux, ou des caractères du langage HTML
lui-même.
< : < ( lt : less than )
> : > ( gt : gretter than )
… : …
On trouvera une liste des entités HTML ici
→ voir exemple 2
→ voir exemple 3
Contenus autorisés selon les types des éléments HTML
Un élément de type bloc peut contenir un ou plusieurs éléments de type bloc et/ou des éléments
de type en ligne, à l'exception des éléments suivants :
<p>,<h1>,<h2>,...En effet, ces derniers n'acceptent que des éléments de type en ligne.
Un élément de type en ligne ne peut contenir que des éléments de type en ligne.
Il existe deux sortes d'éléments de type en ligne : remplacés et non remplacés.
Les éléments de type remplacés acceptent des attributs de dimensions ( height et width ). Il s'agit
des éléments : <img />, <input />, <textarea>, <select> et <object>
Les autres éléments n'ont pas de dimension à proprement parler, ils n'occupent que l'espace
nécessaire à leur contenu. C'est le cas de <strong>, <em>, <a>.
On peut passer d'une structure de type en ligne en type bloc à l'aide de la propriété CSS display,
que l'on verra plus loin.
type en ligne
<a> : lien hypertexte, elle s’accompagne de la balise href qui renferme la cible du lien et title qui
renseigne la destination du lien.
Exemple : <a href=''page.html'' title=''voir le contenu de page'' >Ouvrir la page</a>
<img /> inclut une image dans le document html. Elle s'accompagne des attributs alt (pour un
texte alternatif) et src( pour indiquer le chemin vers l'image).
Exemple :<img src=''images/poisson.jpg '' alt=''un poisson rouge'' width=''120'' height=''50'' />
<span> : conteneur en ligne dépourvu d'un sens précis. Il permet de regrouper d'autres éléments
au fil du texte.
Exemple : <span class=''orange'' >Un texte </span>
type bloc
Exemple :<blockquote><p> Bien que tout vice verse dans le coeur humain le poison de
l'adversaire, c'est l'envie qui permet au serpent de cracher son venin le plus secret et de vomir la
peste de sa méchanceté pour la faire partager.</p>
<p>Grégoire Le Grand</p>
</blockquote>
<div> : conteneur générique de type bloc. Elle est utilisée pour structurer le document HTML
Exemple :<div id=''banner''></div>
<dl> : liste de définition. Permet de distinguer les titres des définitions <dt> des éléments de
définition <dd>
Exemple :
<dl>
<dt> Une définition précise</dt>
<dd>Une description de la définition</dd>
</dl>
<form> : balise délimitant un formulaire. Elle s'accompagne de l'attribut action qui donne le
chemin vers le fichier qui traitera le formulaire, de l'attribut name qui permet de donner un nom au
formulaire et de l'attribut method qui permet de spécifier la manière dont on échange les données
avec le serveur.
<ol>, <ul> : désignent respectivement les listes ordonnées et les listes à puce. Elles comportent
les éléments de liste <li>
Exemple :
<ul>
<li> item 1</li>
<li> item 2</li>
</ul>
<table> : tableau contenant des données ou résultats. Elle comporte les éléments <tr> pour les
lignes du tableau et <td> pour les cellules du tableau.
Exemple :
<table >
<tr>
<td> Cellule </td><td> Cellule </td>
</tr>
<tr>
<td> Cellule </td><td> Cellule </td>
</tr>
</table>
Le modèle de boîte des éléments HTML
Définitions ancêtre
Un élément ancêtre est un élément qui contient un élément ou une hiérarchie d'éléments.
Définitions parent
Un élément qui contient directement un autre élément, ou le premier ancêtre dans la hiérarchie.
Définitions enfant
Un élément contenu directement dans un autre élément
Définitions frère
Un élément contenu avec d'autres éléments dans un même conteneur, possède des frères.
Ci-dessous, on a <body> est un ancêtre de <div>, <h1> et <p>. <body> est parent de <div> .<h1>
et <p> sont frères. <h1> et <p> sont enfants de <div>.
Initiation au CSS
Les CSS s'écrivent dans une syntaxe particulière. Elle commence par un sélecteur, suivi d'un bloc
de déclaration qui comporte les propriétés, l'ensemble constituant une règle.
Les commentaires dans le code CSS s'écrivent entre les symboles suivants :
/* je suis un commentaire */
Définition propriété
C'est une syntaxe définie explicitement par la spécification CSS. Elle définit la mise en forme de
l'élément auquel elle s'applique. Syntaxe : « clef : valeur ».
Définition sélecteur
Il indique l'élément sur lequel vont s'appliquer les déclarations des propriétés CSS. On distingue
plusieurs types de sélecteurs :
– le sélecteur d'élément comme p, h1, div, etc
– le sélecteur de classe : .orange (il commence nécessairement par un point)
– le sélecteur d'identifiant : #container (il commence nécessairement par un #)
– le sélecteurs d'attribut : a[title]
Résumé
L'inconvénient de cette méthode est sa portée limitée au document html dans lequel on l'écrit.
Dans ce cas, il faut créer un fichier avec l'extension .css. L'intérêt de la méthode est que l'on
factorise les CSS pour l'ensemble d'un projet en utilisant la même feuille de style pour autant de
fichiers html que l'on veut.
L'attribut media désigne le type de média souhaité : screen pour l'écran du PC, print pour imprimer
la page web, etc.
Classes et identifiants
Définition classe
Une classe est un nom que l'on choisit librement (caractères alphanumériques, sans accent ni
espace et commençant par une lettre). C'est un sélecteur qui s'applique sur les éléments HTML
possédant cette classe. Convention : dans le code une classe commence par un point
Exemple :
.orange{
color:#FF6141 ;
}
<span class=''orange''>Je suis un texte</span>
Définition identifiant
C'est un sélecteur unique qui ne s'applique qu'à un seul élément HTML
Exemple :
#banner{
background-color:#CCC ;
}
<div id=''banner''> Je suis la bannière du site </div>
Positionnement absolu
C'est une propriété CSS très bien interprétée par l'ensemble des navigateurs. Pour positionner un
élément en absolu, il faut mettre la propriété postion:absolute ;
#col-left{
postion:absolute ;
}
Définition position absolu
Lorsqu'un élément est positionné en absolu il sort du flux courant et se positionne par rapport à
son premier ancêtre positionné.
Pour positionner un élément il faut également lui fixer des valeurs sur ses axes des x et des y. On
utilise les valeurs top, left, right ou bottom pour positionner l'élément.
Exemple :
Remarque :Un élément positionné en absolu, quel que soit son rendu, possède alors des
caractéristiques particulières : boîtes dimensionnables ( width, height,...), boîte qui occupe
exactement l'espace de son contenu, pas de fusion des marges.
Définition z-index
Les éléments positionnés se placent en fonction d'un repère (x,y,z) où z est la profondeur. La
propriété z-index a pour valeur un nombre entier qui représente l'ordre d'empilement. Plus cet
entier est grand plus la couche (profondeur) sera haute.
Plus l'index est grand, pour un élément positionné en absolu, plus l'élément HTML sera au dessus
( voir : exemple 4 )
Inclure des images dans un document HTML
Attention au chemin : il peut être relatif ou absolu. Dans l'exemple ci-dessus, il est relatif. Un
chemin absolu donnerait : http//www.monsite/images/poisson.jpg, par exemple.
L'attribut alt est nécessaire dans les cas suivants :
– si l'image est cassée (non accessible), alors le texte alternatif s'affiche ;
– dans le cas de l'accessibilité : les malvoyants ne voient pas les sites avec des navigateurs
classiques, ils ont des navigateurs qui affichent le contenu du site en mode texte, seul son
texte alternatif apparaît. Il est donc important pour l'accessibilité de bien renseigner une
image.
Notons également que l'attribut alt est un renseignement important dans le référencement des
contenus par les moteurs de recherche, une image en elle-même n'étant pas référencée.
Pour les images, on utilisera, la propriété CSS vertical-align qui agit sur le positionnement vertical
du texte. Les valeurs possibles de la propriété sont : top, left, right, bottom ou une valeur en px.
Par exemple, pour descendre une image tout en bas dans un conteneur on utilisera :
img{
vertical-align:bottom ;
}
Conseil : on mettra une image dans le code à partir du moment où elle apporte une information qui
complète un texte ou l'illustre.
Polices
La propriété ci-dessous indique quelle police on doit utiliser. Il faut mettre plusieurs choix, dans le
cas où la première police ne serait pas disponible dans le système d'exploitation de l'internaute, on
prendrait le choix 2 etc. :
font-family: "Choix 1", choix2, "Choix 3", générique;
Ci-dessous, la liste des polices que l'on pourra utiliser. Attention : les polices composées sont entre
des côtes simples ou doubles :
Pour aller plus loin on pourra voir cet article sur alsacréation.
Unités
On utilisera les unités relatives suivantes px ou em « cadratin » (1 em = taille M dans la police de
référence). Attention : la propriété font-size qui donne une taille pour le texte s'hérite. Sa valeur est
donc transmise à tous les éléments descendants de l'élément considéré.
La particularité des em est d'être une taille de référence. Ainsi si un élément possède une taille de
texte de 2em, et qu'un descendant possède une taille de texte de 3em, alors par rapport à son
ancêtre il aura une taille 2*3 = 6 em.
Idem pour les %. Ce mécanisme n'existe pas avec les pixels (px). On peut également utiliser les %
pour dimensionner les blocs. Par contre, on préférera définir en pixel ou em la taille du texte.
Les flottants
Initialement prévue pour les images ou les textes, on utilise cette propriété, pour positionner les
éléments HTML en général. Elle est assez délicate à mettre en place, et nécessite une bonne
compréhension de sa définition pour l'utiliser correctement.
Définition : flottant
Un élément flottant est ôté du flux et placé à l’extrême gauche ou droite ( float:left ; ou float:right)
de son conteneur, tout en demeurant sur sa hauteur de ligne initiale dans le flux.
Remarque :
Attention :un élément flottant ne sort que partiellement du flux. Les éléments précédant le bloc
flottant ne sont pas affectés par celui-ci. Les éléments qui suivent, quant à eux, sont affectés et se
réorganisent dans le flux en conséquence. En effet, ils n’interagissent plus avec lui, sauf leurs
contenus textuels ou images qui « coulent » autour de la boîte flottante.
Le premier paragraphe est positionné en flottant. Il se place dans le flux au même niveau
que les autres paragraphes, et les textes (contenu textuel) coulent autour du bloc flottant.
Contexte de formatage
On peut positionner deux blocs côté à côte en flottant, cependant, ils n'auront plus d'influence sur
les éléments qui suivent. De même, les conteneurs de ces flottants n'occuperont plus l'espace
dimensionné par les contenus des blocs flottants.
Si on a deux blocs dans le flux d'un élément, la premier bloc étant flottant et le deuxième sans
propriété de positionnement et sans contexte de formatage on a la situation suivante :
On introduira, entre le bloc jaune et vert, un saut de ligne avec la règle suivante :
hr.clear{
clear:both ;
visibility:hidden ;
}
La propriété clear impose aux éléments qui suivent de se placer à la suite des flottants dans le
flux. Remarquons, au passage que cette technique crée un contexte de formatage, car le bloc vert
n'a pas de propriété de positionnement et « étire » donc la boîte conteneur.
Propriété display
Un élément HTML a un type de rendu déterminé. Pour modifier son rendu, on dispose de la
propriété « display ». Par exemple, lorsque l'on on veut étendre la surface réactive d'un lien
hypertexte, qui est de type en ligne, on utilise la propriété « display:block ; » pour lui donner le type
bloc. Ainsi, ce dernier se comportera comme un bloc et occupera tout l'espace de son conteneur.
#menu{
width:250px;
border:1px solid black;
list-style-type:none;
}
a{
display:block;
text-decoration:none;
}
<ul id="menu">
<li><a href="#" title="aller sur la page de bienvenue">bienvenue en Ardèche</a></li>
<li><a href="#" title="voir le diaporama">voir le diaporama</a></li>
</ul>
Dans ce dernier exemple, les <li> occupent 250px de largeur et les liens hypertextes, apriori
n'occupent que l'espace du texte qu'ils enrichissent. Si ils sont en display:block ; , alors ils
occuperont tout l'espace de leur conteneur, comme tout bloc, et feront 250px de large.
Organisation
Pour les outils d'analyse du code on utilisera firebug
Pour la largeur d'un site Internet on conseille 960px de large. En effet, cette largeur est facilement
divisible, ce qui permet de faire de nombreux petits blocs dans la page.
Annexes
Propriétés de couleurs, pour les valeurs on peut écrire soit le nom de la couleur (black, blue,
green, white, red...), soit en indiquant le code hexadécimal, soit en RGB
color :navy;
Propriétés de font, il faut mettre au moins 3 polices. Si l'utilisateur n'a pas la police 1 alors on
utilisera la police 2, etc.
font-family : ''Arial Black'', Arial, Verdana, sans-serif ;
Indique la taille du texte
font-size : 12px ;
Graisse du moins fort au plus fort
font-weight:bold ;
Décoration du texte, valeurs possibles : underline : souligné, overline : ligne, au-blink : clignotant
text-decoration :underline ;
Texte en capital, uppercase : tout mettre en majuscules, lowercase : tout mettre en minuscules,
capitalize : début des mots en majuscules
text-transform : uppercase ;
Hauteur de ligne, indique la hauteur de ligne en px
line-height:15px ;
Propriétés de font raccourci on a respectivement graisse, taille du texte, hauteur de ligne et police.
font:bold 14px/18px Arial, Helvetica, sans-serif;
couleur de fond, la valeur peut s'exprimer en hexadécimal ou valeur prédéfini par les CSS
background-color :navy;
notation raccourci pour donner une couleur de fond une image, non répétée et en haut à
gauche ( top/bottom, right/left mais aussi 0% 100% pour positionner l'image )
background:#FFF url("images/logo.png") no-repeat top left;
marges externes et internes en notation raccourci, on commence par top right bottom et
left.
margin:10px 5px 0 3px ;
padding:10px 5px 3px 2px ;
bordure en notation raccourci
border:1px solid black ;
position absolu s'utilise avec les propriétés top, left, right ou bottom et z-index pour indiquer
un niveau d'empilement des éléments positionnés.
postion:absolute ;
top:10px ;
left:15px ;
z-index:2;
propriétés de listes, la valeur none retire la puce à appliquer sur les <li>
list-style-type:none ;
propriété qui permet de changer le rendu d'un élément, valeur : block, inline.
display:block ;
propriété qui permet d'aligner des éléments textuels dans une boite (utiliser, souvent, pour
les images), valeur : top, baseline,sub, super, text-top ou valeur en px, %
virtical-align:bottom ;