CSS hasn’t revolutionised web design. The reason lies not with the technology (which is revolutionary), but with the designers using it. Most designers have simply swapped the old technology (tables and font tags) for the new technology, without fully exploring what’s so completely new. Jeremy Keith
Chaque auteur de page web a une expérience du traitement de texte et éventuellement de dactylographe.
Ce qui a été l'occasion de prendre de mauvaises habitudes et de les perpétuer, même chez les pros (voir ci-dessus).
Le fond et la forme : on ne discutera pas de l'importance de l'une et de l'autre mais une chose est sûre, on ne doit pas concevoir une page en cherchant à faire joli d'emblée, quitte à remplir ensuite les espaces de texte laissés vides.
Autrement dit on procèdera dans cet ordre : on rédigera d'abord le contenu, on le balisera sémantiquement puis on écrira la feuille de style qui mettra les éléments en place.
Ceci est bien entendu un plaidoyer en faveur des CSS qui permettent de séparer le contenu de la présentation, qui doivent par conséquent faire renoncer à la mise en page par tableaux HTML et à l'interactivité Javascript (quand elle n'est pas indispensable).
Que signifie balisage sémantique ?
Eh bien au lieu de signaler un élément à distinguer par le style, par une balise relative à son aspect, on lui attribuera une balise en rapport à sa signification.
Ainsi au lieu de choisir <div class="titre_gras_rouge">
on préférera <div class="introduction">
La notion d'héritage simple en soi : les enfants adoptent les propriétés des parents, est plus ardue dans son application. En effet tout n'est pas héréditaire.
Ainsi une classe n'étant pas une propriété, elle ne se transmet pas. Mais certaines propriétés ne se transmettents pas comme le positionnement ainsi que clear
et float
. Margin
et padding
non plus.
Difficultés de mise en page : en HTML, les différentes parties d'un document sont affichées les unes à la suite des autres. C'est ce qu'on appelle le flot. La seule façon d'y échapper, c'est le tableau, la balise <table>
dont on a usé abondamment.
En CSS, on peut placer un bloc grâce au positionnement. Malheureusement le vocabulaire employé est source de confusion.
Ainsi l'attribut position
peut prendre la valeur fixed
qui veut dire absolue, la valeur absolute
qui veut dire relative, la valeur relative
qui veut dire décalée et la valeur static
qui n'a rien de statique. Je caricature à peine !
De plus les float
qui ne traduit pas vraiment le flottement.
- Static
signifie en fait pas de positionnement. Sert à annuler un positionnement hérité.
- Fixed
signifie fixe dans la fenêtre, c'est-à-dire qui ne se déplace pas lorsqu'on scrolle.
- Absolute
signifie bien absolu mais relativement à son conteneur (son parent). Par défaut (s'il n'y a pas de parent), c'est la page.
L'élément qualifié d'absolu échappe au flot HTML, autrement dit il est ignoré par les autres éléments qui peuvent donc le chevaucher.
- Relative :
l'élément stylé ainsi fait toujours partie du flot mais se trouve à un autre endroit où il peut donc chevaucher d'autres éléments. Ceci permet de décaler un élément de la place qu'il occupe normalement : comme la puce d'une liste par exemple.
- Float
permet à une image d'être habillée par le texte qui par conséquent coule autour. Cet attribut prend les valeurs left
, right
ou none
.
- Clear
s'applique à un élément block
pour interdire le flottement. Prend les valeurs left
, right, both
ou none
.