28173 sujets

CSS et mise en forme, CSS3

Bonjour,
Je galère sur un positionnements de blocs :
j'ai utilisé le gabarit proposé sur Alsacreations, à savoir : http://css.alsacreations.com/modeles/modele1.htm et dans la partie "centre", il me faut des petits blocs (2 dans la largeur, 2 en-dessous, et ainsi de suite...) j'ai donc essayé de définir un bloc flottant à gauche afin de le réutiliser à chaque fois. Dans ce bloc, il me faut un titre (h1), puis le paragraphe.
Le problème, c'est que les blocs sortent du centre, ils dépassent en-dessous.
Autre problème, le pied de page ne se colle pas au centre, il y a un écart de quelques pixels entre les 2. (mais pas à cause des blocs, j'ai essayé sans aussi et c'est pareil)
Pfiou... Smiley ohwell
Je donne mon code au cas où :

body {
font-family:Verdana, Arial, Helvetica, sans-serif;
background-color:#f2f2f2;
font-size: 10px;
margin: 0;
padding: 0;
}
#conteneur {
width: 755px;
margin: 0 auto; 
}
#header {
height: 267px;
}
#barre {
height: 26px;
}
#centre {
background-image:url(images/fond.gif);
padding:5px 20px 5px 20px;
height:inherit;
}
#pied {
background-image:url(images/fond.gif);
font-size:9px;
font-family:Arial, Helvetica, sans-serif;
color:#8a3109;
text-align:center;
}
#pied a {
color:#8a3109;
}
#pied a:hover {
color:#8a3109;
}


.bloc{
width:300px;
float:left;
margin:10px 20px 10px 20px;
color:#666666;
}

h1 {font-size:14px;
padding:0;
font-weight:lighter;
color:#8a3109;
}


<body>
	<div id="conteneur">
		<div id="header"></div>
		<div id="barre"><img src="images/barre-accueil.gif" /></div>
		<div id="centre">
			<div class="bloc"><h1>Edito</h1><p>bla bla bla<p/></div>
			<h1>Edito</h1><div class="bloc"><p>bla bla bla</p>
			</div>
		</div>
		<div id="pied">
		<p>bla bla bla</p></div>
	</div>
</body>

Alors si quelqu'un pouvait m'aider, je le remercie d'avance Smiley smile
Modifié par pixie (18 May 2007 - 14:26)
Merci beaucoup, le problème des blocs est résolu, mais je ne comprends pas bien le rapport entre la fusion des marges et l'écart que j'ai entre le centre et le pied-de-page...
En fait moi c'est le contraire : j'ai un écart de 5mm entre les 2, et il n'en faudrait pas. j'ai essayé d'enlever les padding du centre t du pied, ça ne change rien... je ne comprends vraiment rien, c'est pas la première fois que ça m'arrive et je ne vois pas de solution puisque j'ai beau réduire les propriétés des div au + simple, ça ne change rien.
pixie a écrit :
Merci beaucoup, le problème des blocs est résolu, mais je ne comprends pas bien le rapport entre la fusion des marges et l'écart que j'ai entre le centre et le pied-de-page...

Ça n'est pas forcément un problème de fusion des marges, mais comme c'est un problème courant pour ce genre d'espaces indésirables, j'ai pensé à ça. Pour être catégorique, il faudrait que je voie la page en ligne et fasse des tests à la volée dessus (vive les extensions Webdevelopper et Firebug pour Firefox !).

pixie a écrit :
En fait moi c'est le contraire : j'ai un écart de 5mm entre les 2, et il n'en faudrait pas.

Ça ressemble bien à de la fusion des marges : les marges supérieures et inférieures du paragraphe enfant de div#pied sont transmises à div#pied.

Que donne le code CSS suivant :
div#pied {padding: 1px 0;}

?


Par ailleurs, je vois que tu utilises des tailles de texte en pixel, avec de plus des valeurs très réduites (9 et 10px). Sur un écran en 1280px de large ou plus, ça risque d'être difficile à lire. Surtout pour les plus de quarante ans, les myopes, etc.

Pour ma part, j'oblige mon navigateur à afficher du texte avec une taille minimale de 12px (et tant pis pour les mises en page qui sautent...).

Quelques pistes pour bien gérer la taille du texte et laisser l'utilisateur l'adapter à ses besoins :
Accessibilité : Agrandissement de la taille des polices
Typographie web : gérer la taille du texte avec les « em »
Hé bien ça fonctionne avec le paddin:1px 0;
Mais je ne comprends pas la logique là... (vous êtes vraiment forts sur alsacreationS Smiley ravi ) j'avais essayé avec padding:0; que change le 1px?

Oui pour ce qui est du texte c'est petit c'est vrai mais on m'a imposé un design assez étroit en largeur et il y a beaucoup de texte! ça fait déjà des pages interminables...
pixie a écrit :
Mais je ne comprends pas la logique là... (vous êtes vraiment forts sur alsacreationS Smiley ravi ) j'avais essayé avec padding:0; que change le 1px?

J'ai donné plus haut un lien vers une page expliquant le phénomène de la fusion des marges et proposant des moyens pour l'éviter, dont l'utilisation de padding.

Je me trompe ou bien tu n'as pas lu cette page ?
pixie a écrit :
Oui pour ce qui est du texte c'est petit c'est vrai mais on m'a imposé un design assez étroit en largeur et il y a beaucoup de texte! ça fait déjà des pages interminables...

Pour une même quantité de texte, vaut-il mieux une page courte avec du texte illisible, ou une page plus longue avec du texte parfaitement lisible ?

...
en fait j'ai parlé un peu vite, ça règle le pb avec Firefox mais pas avec IE.
Toujours un décalage d'1px entre les blocs (sauf le pied du coup) et j'ai beau jouer sur les padding et margin rien n'y fait... ça fait 1h que je suis dessus, comprends pas...

Si j'ai lu l'article, j'avais essayé mais pas au bon endroit.
Salut,
dis-donc Florent, tu sais ce qu'ils te disent les quinquas myopes de surcroit Smiley lol allez, je rigole, en plus je m'en tape, de près j'ai une vue digne d'un compte-fils, l'avantage d'être myope Smiley smile

Sinon pixie, petite hypothèse comme ça pour ton histoire de décalage d'un pixel.

1 - as-tu des images dans tes blocs ou juste blabla pour le moment ?
2 - et même si tu n'as que blabla, c'est de la typo sans jambages et du coup, tu tombes peut-être sous cette fameuse ieterie qui réserve son petit pixel sous les éléments en ligne pour les jambes de typo.

Il y a quelques trucs pour s'en sortir
- bête et brutal : mettre les bloc concernés à la queue leu leu (et sans espaces entre les >< ) dans le code (notamment quand il y a des images)
- utiliser display: block; pour les images mais pas d'une façon générale sinon on est obligé de contredire cette règle partout ailleurs parce que, du coup, les images passent à la ligne en bons blocks...
- quand il n'y a que des images attribuer un font-size 1px au bloc qui les contient, avec 1px, les jambages deviennent négligeables Smiley smile
- quand il y a du texte, jouer avec line-height

voilou, quelques tests en perspectives pour toi Smiley smile

have swing
Modifié par virtualgadjo (20 May 2007 - 10:49)
pixie a écrit :
Toujours un décalage d'1px entre les blocs

<humour> Ah ? Bizarre, je le vois pas. Oh, je sais, c'est parce que je n'ai pas accès à la page. Smiley lol </humour>

Plus sérieusement, si tu veux de l'aide sur ce genre de détail, un seul moyen vraiment efficace : montrer la page, ou une page de test en ligne reproduisant le problème.
Modifié par Florent V. (20 May 2007 - 11:17)
Voilà pour les pages test :
1 avec des blocs flottants dans la partie centrale :
page blocs
1 avec seulement texte et image:
page sans blocs

Hier soir en constatant la cata sous IE (le background du centre passait carrément en-dessous du contenu, j'ai rajouté un width au centre et joué avec les paddings des blocs pour arriver à ajuster ce width correctement.
(en réalité le design fait 755px de large, et j'ai calculé cette largeur en enlevant les paddings des blocs... Peut-être qu'il y a des solutions plus propres et moins contraigantes?
Tout était parfait avec Mozilla, bien centré et tout, et rien n'allait avec IE!
Je vais faire le test sous Safari cet après-midi.

Merci pour votre aide en tout cas Smiley smile
Modifié par pixie (20 May 2007 - 14:33)
je constate au passage qu'en ayant enlevé une ligne de texte dans le pied avant de mettre en ligne la page test, il n'y a plus ce foutu pixel dans la page sans blocs et il n'y en a plus qu'1 dans la page avec blocs (avant il y en avait un sous la barre grise et un au-dessus dans les 2 pages)