Calques et positionnement relatif


Voici quelques exemples des possibilités graphiques réalisées avec les CSS

Attention : seul Internet Explorer 5 et supérieurs affichent correctement les 3 premiers blocs !


Exemple de blocs imbriqués simples

Bloc de tête
Bloc 1 gauche

Bloc 1 droit


Bloc 2 gauche

Bloc 2 droit

Bloc 3 gauche

Bloc 3 droit
Règles de style et commentaires :
  • #ensemble {width:760px; height:232px; border:1px solid state;}
  • #cadre {float:left; width:330px; height:230px;margin-left:auto; margin-right:auto;
    text-align:center; background-color:silver;font-family:Arial,Helvetica; font-size:12px}
  • #conteneur {width:300px; height:200px; margin:15px;}
  • #tete {width:300px; height:25px; background-color:black;color:yellow}
  • #b1g {width:100px; height:25px; background-color:lime;float:left; color:red}
  • #b2g {width:100px; height:100px; float:left;background-color:white; color:black}
  • #b1d {width:200px; height:50px; float:right;background-color:red; color:white}
  • #b2d {width:200px; height:75px; float:right;background-color:yellow; color:blue}
  • #b3g {width:150px; height:50px; float:left;background-color:#ffffcc; color:black}
  • #b3d {width:150px; height:50px; float:right;background-color:#ccccff; color:red}
  • #texte {width:420px; height:230px; background-color:#ffffcc;float:right}

Selon les recommandations du W3C, dans cet exemple, il faut ajouter à chacun des sélecteurs la propriété/valeur

 position : relative  .

Exemple de blocs imbriqués comportant une bordure


Bloc de tête
Bloc 1 gauche

Bloc 1 droit


Bloc 2 gauche


Bloc 2 droit

Bloc 3 gauche

Bloc 3 droit

Règles de style et commentaires :


Pour obtenir l'encadrement de l'ensemble de blocs situé à gauche, il a été ajouté à chacun des sélecteurs imbriqués dans le cadre gris la règle suivante :

  border : 2px solid fuchsia  

et pour le bloc de texte dans lequel se trouve ce commentaire :

  border : 10px solid #cccfff  


Exemple de blocs imbriqués contenant des objets


gif
gif

gif   Etonnant, non ?   gif


gif


gif

gif
gif

Commentaires :


Ce groupe de blocs imbriqués contient un certain nombre d'objets destinés à démontrer une possibilité de présentation graphique sortant de l'ordinaire. A condition de positionner correctement les objets grâce à la propriété

    padding    

qui peut être

  top, left, right ou bottom  

vous obtiendrez un ensemble correct ne redimensionnant pas les calques.

Amusant, non ? Pour obtenir un affichage correct dans Mozilla (le futur Netscape ?) et permettre ainsi d'être compatible avec un pourcentage important d'internautes, il aura fallu se passer de la bordure externe et des bordures de chacun des blocs. Par ailleurs, pour compenser ces absences, les blocs ont été redimensionnés de quelques pixels et une petite astuce a été utilisée pour cacher une marge impossible à régler pour satisfaire les 2 protagonistes ... Voyez ci-dessous :

Enfin : Mozilla et Internet Explorer sont d'accord !



Bloc de tête
Bloc 1 gauche

Bloc 1 droit


Bloc 2 gauche


Bloc 2 droit

Bloc 3 gauche

Bloc 3 droit
Règles de style et commentaires :
  • #mensemble {width:760px; height:230px; background-color:#ffffcc; border:3px red inset; text-align:center}
  • #mconteneur {float:left; width:330px; height:230px}
  • #mtete {width:330px; height:40px; background-color:navy; color:yellow}
  • #mb1g {width:110px; height:35px; float:left; background-color:lime; color:red}
  • #mb2g {width:110px; height:100px; float:left; background-color:white; color:black}
  • #mb1d {width:220px; height:60px; float:right; background-color:red; color:white}
  • #mb2d {width:220px; height:75px; float:right; background-color:yellow; color:blue}
  • #mb3g {width:170px; height:55px; float:left; background-color:#ffffcc; color:black}
  • #mb3d {width:160px; height:55px; float:right; background-color:#ccccff; color:red}
  • Il aura également fallu sortir du calque la dernière ligne reprise ci-dessous :
#mtexte {width : 420px; height : 230px; float : right; background-color : #ffffcc; font-size : 10px; font-family : Arial,Verdana ; text-align : left}

... faute de quoi, le cadre comportant le texte aurait été automatiquement redimensionné en hauteur par le navigateur.

Essayez à votre tour avec d'autres dimensions : ce sera un excellent exercice pour vous permettre de vérifier si vous avez bien suivi les exposés précédents.
Le problème est que, malgré tous vos efforts et dans l'état actuel des navigateurs, vous n'obtiendrez pas un résultat aussi parfait que les 3 premiers : il y aura inévitablement des différences d'alignement ... Alors, à vous de choisir : être "compatible" avec 95 % des butineurs ou vous contenter d'être parfait pour près de 80 % d'entre eux.

Mais ... à quoi peut bien servir ce genre de fantaisie, diront certains.
La réponse tient en deux mot : pages dynamiques. Comment : en installant (par exemple) un ensemble de calques imbriqués (pourquoi pas aux dimensions d'un écran (ou fenêtre) complet !?) comportant une série de liens dont le survol peut produire un "rollover" déporté affichant un texte en surimpression, ou le remplacement d'un calque par un autre, etc... Un petit script pour réaliser ces évènements et le tour est joué. En fait, il y a parfois loin de la théorie à la pratique ...

Voyez dans le premier exposé traitant des pages dynamiques : il y est question de superposition de calques.
Faites aussi une incursion dans la rubrique "Html et JavaScript" : j'y présente là une autre alternative aux pages dynamiques dans l'exposé relatif aux fenêtres à dimensions variables ... vous vous souvenez ... : les fameuses (ou fumeuses ?!?) "pop-up" ! Vous y trouverez un mélange des 3 langages de base dans "Rollover déporté, pop-up et interactivité : (d)étonnant !".

retour