28220 sujets

CSS et mise en forme, CSS3

Bonjour à tous,
En relisant la Rec CSS 2.1 du W3C, je pose des questions à propos du modèle de mise en forme des boites.
Si j'ai bien compris : toute boite possède une boite conteneur, sauf la racine qui, et c'est la que je ne suis pas sur de ma compréhension, serait la fenêtre du navigateur et qui serait qualifié de bloc conteneur initial ? Ou bien c'est à nous de créer un bloc qui contiendra tous les autres et qui de ce fait serait la racine des autres blocs ? Ainsi nous pourrions déterminer les dimensions de ce conteneur initial.
Ai-je bien compris, moyennement compris et suis-je carrément à côté de la plaque ?
Merci pour vos réponses !
Modifié par krakkos (08 Dec 2005 - 22:32)
Bonsoir,

Le bloc conteneur initial est établi par le moteur de rendu du navigateur, en fonction de l'élément body (ou xhtml) et de la zone d'affichage du navigateur.

Il n'y a pas à le créer.
Modifié par Laurent Denis (05 Dec 2005 - 23:02)
Bonjour,
Quand tu dis que le bloc conteneur initial est créé en fontion du <body>, cela veut-il dire que ce bloc conteneur est le <body> ? ou qu'il est créé dans ou par le <body> ? Quel est le rapport hiérarchique, s'il y en a un, entre le <body> et le conteneur initial ?
Merci d'avance
Excellente question, souvent posée... à laquelle CSS2 apporte une réponse assez ésotérique Smiley cligne

En effet :

CSS2 a écrit :
The containing block (called the initial containing block) in which the root element lives is chosen by the user agent.

( http://www.w3.org/TR/REC-CSS2/visudet.html#containing-block-details )

CSS2.1 a écrit :
The containing block in which the root element lives is a rectangle with the dimensions of the viewport, anchored at the canvas origin for continuous media, and the page area for paged media. This containing block is called the initial containing block


( http://www.w3.org/TR/CSS21/visudet.html#containing-block-details )

CSS2.1 est, sur ce passage en particulier, une reformulation de CSS2 dictée par les implémentations existantes dans les différents navigateurs.

Le conteneur initial n'est pas l'élément racine. Il n'est pas non plus créé par ou dans celui-ci : C'est un rectangle arbitrairement créé par le moteur de rendu, aux dimensions de la zone d'affichage, dans laquelle va s'établir la boîte correspondant à cet élément racine. Il n'y a pas de véritable rapport hiérarchique entre eux, ou du moins, il n'est pas exprimé de manière précise et unique par la spécification.

Ces nuances qui peuvent paraître subtiles expliquent certaines différences de comportement valides entre les navigateurs. Mais il faut aller chercher des cas de figures très spécifiques pour les constater (voir en particulier les tests effectués par Anne Van Kesteren et Yan Hixon)

Dans la pratique, et tout particulièrement pour du HTML ou pour du XHTML traité comme du HTML, on pourra identifier conteneur initial et zone d'affichage du navigateur.
Modifié par Laurent Denis (06 Dec 2005 - 09:51)
En synthèse pourrait-on dire que :
- Le conteneur initial est la zone d'affichage de la fenêtre du navigateur.
- il n'a pas de lien direct avec le conteneur racine.
- le conteneur racine est ou doit être créé par le concepteur de la page ?
- le conteneur racine est inclu dans le, est enfant, du <body> ?
- le conteneur racine incluera tous les éléments, toutes les boites à venir ?

Mais :
- est-ce que le conteneur racine est obligatoire ? faut-il le créer comme une boite classique avec son style ?
- si on ne créé pas de conteneur racine, est-ce le <body> ou <html> qui jour le rôle de conteneur racine ? et dans ce cas il nous faut leur appliquer un style ?

Merci d'avance