5568 sujets

Sémantique web et HTML

Ave à tous,

Je me permets de soumettre cette solution à un sujet qui apparemment a déjà posé problème à plusieurs alsanautes et qui m'a fait pas mal chercher.

Dans les renvois que donne Raphaël et sur d'autres sites, on retrouve toujours la colonne de gauche et de droite de largeur fixe et la colonne centrale, de largeur variable. Mais quid lorsque l'on veut la colonne centrale fixe et que l'on veuille également des backgrounds différents sur la 1ère et 3ème colonnes ? (Il faut donc remplir les <div> gauche et droite au maximum) ?

Il y a 2 solutions :

Soit le centrage absolu de la colonne centrale proposé par Raphaël :

/* Soit la colonne centrale = 780 px */
div#conteneur {
	position:relative;
	height:100%;
	[b]overflow:hidden;[/b]
	}

Centrage absolu de la colonne centrale (les 2 fonctionnent)

div#blocmilieu {
	position: absolute;
    	left: 50%; 
    	width: 780px;
   	margin-left: -390px; 
	height:100%;
	}	
	
Centrage relatif de la colonne centrale (les 2 fonctionnent)

div#blocmilieu {
	position:relative;
             width: 780px;
   	margin-left: -390px; 
	margin-left:auto;
	margin-right:auto;
	}

div#blocgauche {
	float: left;
	width: 50%;
	margin-left: -390px;
	background-image: url(fond_gauche);
	height:100%;
	}

div#blocdroit{
	float: right;
	width: 50%;
	margin-right: -390px;
	background-image: url(fond_droit.jpg);
	height:100%;
	}
	
div#piedpage1 {
	height: 80px;
	clear: both;
	}	
	
div#piedpage2 {
	position: absolute;
	bottom: 0; left: 0;
	width: 100%;
	}

<!--[if lte IE 6]>
	<style type="text/css">
	div#page {
		height: 100%;
	}
	div#piedpage2 {
		bottom: -1px;
		/* Corrige un décalage d'1px par rapport au bord inférieur (source du bug IE ?) */
	}
	</style>
<![endif]-->


Et pour le code XHTML

<div id="conteneur">
 	<div id="blocmilieu"><h1>Colonne centrale</h1></div>
     	<div id="blocgauche"><h1>Colonne de gauche</h1></div>
    	<div id="blocdroit""><h1>Colonne de droite</h1></div>

	<div id="piedpage1">
		<div id="piedpage2">Ceci est un pied de page</div>
	</div>

</div>

Soit un centrage relatif : voir code ci-dessus

L'astuce vient du fait que, outre les marges négatives, ce n'est pas chaque colonne qu'il faut définir, comme j'ai en vain, essayer de faire, avec un "overflow: hidden" mais le tout. Merci à Noisequick [http://forum.alsacreations.com/topic.php?id=4&tid=19825&s=3+colonnes
Modifié par Polhux (26 Feb 2007 - 14:53)
Hum... rien compris. Smiley lol

Quel type de design essaye-ton de réaliser, au juste ? (Schémas, captures d'écran, description de l'adaptation aux différentes résolutions et quantités de contenu seront les bienvenus).
Salut,

C'est dans le cas où l'on veut avoir, sur sa page (et sans table), 3 colonnes dont la colonne centrale est fixe. Mais il faut également que les <div> extérieures remplissent toute la place restante, quelle que soit la résolution, car la première et la 3ème colonne n'ont pas la même image de background. (Dans mon cas, à cause du layout de l'entête).

Par 2 x, j'ai lu qu'en réponse à un problème pour 3 colonnes, Raphaël faisait un renvoi vers un site avec 3 colonnes, et j'ai trouvé d'autres sites qui décrivent également le CSS pour 3 colonnes, mais chaque fois, ce sont les colonnes extérieures qui ont une largeur fixe et la colonne centrale qui a une largeur variable. Or, si l'on veut une colonne centrale fixe, on "ne joue" plus du tout au même jeu.

De plus, je n'ai toujours pas compris pourquoi ce sont les balises des 3 colonnes qu'il faut entourées d'une balise avec "overflow: hidden", mais il n'y a que comme cela que cela marche parfaitement.
Polhux a écrit :
C'est dans le cas où l'on veut avoir, sur sa page (et sans table), 3 colonnes dont la colonne centrale est fixe. Mais il faut également que les <div> extérieures remplissent toute la place restante, quelle que soit la résolution, car la première et la 3ème colonne n'ont pas la même image de background. (Dans mon cas, à cause du layout de l'entête).

Ça me semble étrange comme mise en page. On pourrait avoir un aperçu de ce que c'est censé donner ? (Une chance sur deux pour qu'on te dise au final « mais en fait tu te prends la tête pour rien, il suffirait de faire ainsi... »)

Polhux a écrit :
De plus, je n'ai toujours pas compris pourquoi ce sont les balises des 3 colonnes qu'il faut entourées d'une balise avec "overflow: hidden", mais il n'y a que comme cela que cela marche parfaitement.

Une balise, c'est par exemple <p> ou </p> (respectivement balises ouvrante et fermante pour l'élément p). Tu voulais sans doute parler d'éléments ou de blocs ?
En tout cas, on donne souvent la valeur "auto" ou "hidden" pour la propriété overflow d'un élément dont les enfants sont flottants, pour éviter un dépassement des flottants en question :
http://web.covertprestige.info/test/03-elements-flottants-et-element-parent-1.html
Bonjour,

Ok, lu pour les overflows.
Voici le layout général que je voudrais réaliser.
[D:\layout.jpg]
à la seule différence qu'il n'y a pas de padding ou spacing entre les "cellules".

Ce qui est explicité ci-dessus concerne uniquement les 3 grandes colonnes.

Jusqu'à présent, c'est la seule façon que j'ai trouvée pour que les différents navigateurs me présentent le layout recherché. Mais je reste preneur pour une autre solution car j'ai un autre site, du même style de présentation, que je voudrais réécrire, sans table.
Désolé de répondre tard.

Ton image n'est pas claire. À quoi correspondent les différentes zones ? Doivent-elles toutes accueillir un contenu, ou bien juste une image de décoration, voire rien du tout ?
Là, c'est très maigre pour se prononcer...
Modifié par Florent V. (18 Feb 2007 - 12:12)
Bonjour,

A mon tour d'être désolé de répondre tard, des condensateurs de ma carte mère m'ayant lâché.

Les 2 colonnes extérieures ne doivent rien accueillir. Elles sont là uniquement pour remplir un espace variable entre les différentes résolutions. Toutefois, à la suite du design de l'entête, elles doivent avoir un background différent. C'est d'ailleurs là le problème sans quoi il suffisait que je positionne uniquement un bloc central avec un background unique défini au niveau du <body>.

Mais dans mon cas, il faut donc que les <div> des colonnes externes remplissent bien tout l'espace restant.

Merci pour l'aide !
Suivant le type de background, on pourra très bien utiliser une image de fond unique appliquée à body.

En fait toute cette histoire ne sert pas à grand chose, et je ne vois pas l'intérêt de proposer ce genre de bidouille (blocs positionnés en absolu pour caler des images de fond sur la page) comme modèle. On y aura peut-être recours, ou alors pas, suivant les besoins d'une mise en page précise. C'est la spécificité du design voulu qui amènera peut-être à mettre ce genre de chose en place, et en l'absence de tel design à intégrer on gagnera du temps et on évitera de se triturer les méninges. Smiley rolleyes
Bonjour Florent,

C'est cela que je veux réécrire mais sans tableau, et en modifiant l'image de mon entête (mais non le layout).
http://www.guirsch.be/finaca.
C'est ce layout qui explique pourquoi j'ai besoin de 2 backgrounds "extensibles" différents dans les colonnes extérieures.

Il est à noter que je ne veux rien faire en position absolue pour le plaisir. Je m'étais fié à une proposition de Raphaël, dans un de ses tutoriels, pour centrer mon bloc "contenu" principal.
Bonjour,

Pourquoi ne pas faire une image de background centrée de 2000px de large et de 10px de haut (ce n'est pas trop gourmand en poids) en deux parties 50% une couleur et 50% l'autre ? Ou je suis à coté de la plaque ?
Bonjour,

J'utilise bien 2 images de background mais de 10px X 1500 px. Mais la soltuton proposée ci-dessus ne convient pas car les images de fond contiennent un layout spécifique pour les dessus de page. Les 10 px de haut sont donc tout à fait insuffisant.
Bonsoir.

Utiliser une image unique en fond de body, en PNG optimisé.

Un petit exemple : image de 240px de haut pour 2000px de large, PNG-24, 4,3 Ko.
upload/2043-test-fond-1.png

La même en PNG-8 (couleurs indexées, 128 couleurs), 2,4 Ko :
upload/2043-test-fond-2.png
Pour information, la même image en GIF fera 22 Ko, soit 9 fois plus. En JPEG, on peut descendre vers 15 Ko, mais la perte de qualité risque d'être flagrante.
Et pour enfoncer le clou : si on a quelque chose de vraiment compliqué à faire au niveau graphique, et qu'on a vraiment besoins de deux éléments séparés pour y appliquer deux images de fond (répétables ou non) séparées, on utilisera un tableau à trois cellules, comme c'est le cas actuellement.

Pas la peine de bricoler le positionnement de blocs en CSS pour ce genre de chose, on y perdrait du temps sans bénéfice particulier pour le visiteur ou la qualité globale du site.
Bonjour,

Moi ces réponses ne me conviennent pas. Car je suis actuellement à la recherche d'une solution pour obtenir une colonne centrale avec une taille fixe et une colonne de chaque coté qui puisse acceuillir un background image différent par exemple ou une animation flash.

J'avais opté pour la solution du tableau au début, mais plus d'un gentil monsieur m'ont dit que ce que j'avais fait ne respectait pas les standards d'accesibilités, et qu'il fallait qu je le réalise en CSS. Done j'écume le forum pour trouver une solution, et la milleure approche que j'ai trouvé est encore celle de polhux, mais le problème est ensuite pour le cadrage de mes animation flash, car celle de droite à un peu tendance à être hors de la colonne a cause de la marge de - 390.

Donc, Florent, je sais qu'aller au plus simple est la meilleure solution dans bien des cas, mais utiliser les tableaux ne me plait guère.

Je vais donc essayer de mettre en forme mes recherches sur le sujet, mais j'en suis pas plus loin que toi polhux


cordialement,
insamax a écrit :
J'avais opté pour la solution du tableau au début, mais plus d'un gentil monsieur m'ont dit que ce que j'avais fait ne respectait pas les standards d'accesibilités, et qu'il fallait qu je le réalise en CSS.

Les tableaux de mise en forme ne sont pas inaccessibles par nature. Un simple tableau à trois cellules (un tr, trois td) fera très bien l'affaire, et sera globalement accessible.
Ne pas trop écouter les petits malins, mais faire ses choix en fonction de critères concrets.

insamax a écrit :
mais utiliser les tableaux ne me plait guère.

Où est le problème, concrètement, avec l'utilisation d'un tableau à trois cellules dans ce cas précis ? « Les tableaux c'est mal » n'est pas une réponse acceptable. Smiley lol

Pour ma part, j'en vois un principal : on met un peu de mise en forme dans le contenu HTML du document. Ce qui signifie que l'on ne pourra pas modifier l'apparence du tout au tout rien qu'en changeant les feuilles de style. Ce qui est problématique pour un site statique, mais beaucoup moins pour un site dynamique (géré par un CMS, par exemple) disposant d'un système de template permettant de modifier la structure HTML de toutes les pages du site d'un seul coup.

Si la nécessité d'intégrer fidèlement une charte graphique donnée est plus forte que la légère perte de flexibilité due au tableau de mise en forme, alors le choix est simple.