Atelier 15 Novembre 2010
Fil Conducteur
Les positionnements relative, absolute et fixed

Préambule

Au cours de l'atelier précédent, nous avons vu comment l'utilisation de la propriété css float permettait de s'affranchir de certaines contraintes du positionnement dans le flux, comportement par défaut du html et comment la propriété clear permettait de rétablir celui-ci.

Il nous reste à expérimenter la propriété css position qui permet également de s'affranchir du positionnement dans le flux. On peut attribuer à la propriété position, cinq valeurs :

  1. position : relative
  2. position : absolute
  3. position : fixed
  4. position : static
  5. position : inherit

Un élément en position relative, absolute ou fixed, peut être décalé par rapport à sa position initiale, par les propriétés top, bottom, left ou right dont les valeurs peuvent être exprimées dans toutes les unités dimensionnelles.

À partir d'ici et jusqu'au bas du cadre PRÉAMBULE, j'ai fait de nombreux emprunts à Alsacreation

position : relative

La position relative permet de décaler un élément par rapport à une position de référence: celle qu'il avait dans le flux. Les éléments qui le suivent et le précèdent ne sont pas influencés par ce décalage puisqu'ils considèrent que l'élément est toujours dans le flux à sa position initiale.
Cette position est rarement recherchée, elle est cependant utile dans les deux cas suivants :

  1. Servir de référent à un élément enfant positionné en absolute (rappelons qu'un élément positionné en absolute grâce aux propriétés top, left, … le fera par rapport à la fenêtre du navigateur à défaut d'avoir un parent lui-même positionné).
  2. Bénéficier de la possibilité d'utiliser la propriété z-index pour gérer des superpositions d'éléments (propriété inopérante pour des éléments du flux).

position : absolute

Contrairement aux flottants que nous avons vus dans l'atelier précédent, la position absolute permet de ne pas dépendre de l'ordre dans lequel les éléments HTML sont déclarés dans le code.

La position absolue s'affranchit définitivement du cordon liant contenu et présentation. L'élément est totalement extrait du flux, il ne dépend plus du tout des éléments qui le côtoient. Le positionnement absolu est une méthode radicale (et puissante) qui retire tout à fait un élément du flux.

Un élément positionné en absolute se réfère non pas à son parent direct, mais au premier ancêtre positionné qu'il rencontre.

Un des comportements d'un élément positionné en absolute qui peut sembler confus est la perte de ce caractère propre aux éléments de type block du flux qui affecte à l'élément le recouvrement de toute la largeur de son parent, réaction par ailleurs tout à fait concevable et logique dès lors que l'on garde en mémoire que l'élément positionné n'est plus dans le flux.

position : fixed

Le positionnement fixed est une variante du positionnement absolute , à l'exception des points suivants:

position : static

La position static correspond simplement à la valeur par défaut d'un élément du flux. La position static sert simplement à rétablir dans le flux un élément positionnée hors du flux.

position : inherit

Pour mémoire , la position inherit déclare que l'élément concerné hérite de la propriété position de son parent. Par exemple, si la position du parent est de type absolute, l'élément concerné aura également ce positionnement.

Le Positionnement dans le flux courant

Ouvrons la feuille de style externe et modifions les sélecteurs .Gauche et .Droite :

Ajoutons également quelques propriétés au sélecteur de type p :

Dans le code html, créons un élément <div class="Boites2> dans lequel nous placerons :

Cet ensemble nous servira d'élément de référence pour les autres expériences.

Le Positionnement Relatif

Ouvrons la feuille de style externe et créons-y les sélecteurs ci-dessous :

Dans le code html, créons un élément <div class="Boites2> dans lequel nous placerons :

CONSTATS :

Le Positionnement Absolu

1er Exercice : Dans le code html, créons sous le précédent, un nouvel élément <div class="Boites2> dans lequel nous placerons :

Dans le style en ligne de l'élément <p class="Absolu"> ajoutons les propriétés top:400px; left:200px;

CONSTATS :

2ème Exercice : Dans le code html, créons sous le précédent, un nouvel élément <class="Boites2" style="position:relative;"> dans lequel nous placerons :

CONSTATS :

Le Positionnement Fixé

Dans le code html, créons sous le précédent, un nouvel élément <div class="Boites2> dans lequel nous placerons :

CONSTATS :

Le Positionnement Static

Dans l'élément <p class="Fixe"> du dernier élément <div class="Boites2>, ajoutons dans le style en ligne la propriété position : static.

CONSTATS : L'élément <p class="Fixe"> se comporte comme un élément placé normalement dans le flux. Le positionnement static, a annulé la propriété position : fixed attribuée à l'élément par la feuille de style.

Mais au fait, à quoi tout cela peut-il servir?

Les positionnements relative, absolute et fixed ne sont pas seulement des curiosités théoriques et des prétextes à des exercices qui peuvent paraître futiles, ils sont mis en pratique dans différentes applications fort utiles pour la composition des pages html.

Le Centrage Absolu

Dans la feuille de style interne de la page html, modifions d'abord les propriétés de la class .Absolu :

Dans le code html, créons sous le précédent, un nouvel élément <div class="Boites2 style="position : relative; height : 400px"> dans lequel nous placerons :

CONSTAT : L'angle haut-gauche de l'élément <p class="Absolu"> est positionné au centre de l'élément <div class="Boites2"> .

Dans le style en ligne de l'élément <p class="Absolu">, ajoutons maintenant les propriétés margin-left : -250px; margin-top : -100px. Ces valeurs négatives sont égales à la demi-largeur et à la demi-hauteur de l'élément <p class="Absolu">.

CONSTAT : L'élément <p class="Absolu"> est maintenant centré dans l'élément <div class="Boites2"> .

Si l'on fait varier la largeur ou la hauteur de l'élément <div class="Boites2">, l'élément <p class="Absolu"> reste néanmoins centré.

deux autres applications

LES MENUS DÉROULANTS : Le positionnement absolu par rapport à un élément en position relative est utilisé pour réaliser des menus déroulants à deux ou plusieurs niveaux.
Les items du premier niveau du menu placés en position relative servent de référence aux items du niveau suivant qui sont placés en position absolute et peuvent se dérouler sur la page sans déplacer les éléments que celle-ci contient.

LES CADRES FIXES : Le positionnement fixed permet de réaliser dans les pages html, des en-têtes ou des colonnes de menu qui ne suivent pas le défilement de la page et qui offrent un comportement identique à celui des anciennes mises en page en cadres (ou frame).
Seul inconvénient, la propriété position : fixed n'est pas interprétée par les versions d'Internet Explorer antérieures à IE6.

Nous verrons dans les exemples de mise en page que nous réaliserons en 2011, comment mettre en oeuvre ces applications.