28172 sujets

CSS et mise en forme, CSS3

slt à tous,
je vous contact car j'ai un
petit blem de background dans Firefox

le CSS gerant cette partie :

div#contenu{
	padding: 0 20px 0 15px ;
	background: url(../img/bgt.png);
	background-repeat: repeat-y;
	min-height:100px; 
}



Sous IE pas de probleme cela repete bien le background sur 100px et plus quand la page est plus longue.

Par contre sous Firefox il s'arrête a 100px ce qui est assez genant.

etant donnée que les pages sont dynamiques et donc jamais de mla même longueur je ne peux pas definir un height type.

Quelle est la solution pour que cela fontion sous FF
Merci d'avance de votre aide.
Modifié par spawns (26 Jan 2009 - 12:02)
Salut,

il faudrait voir le reste de ton code car en l'état il n'y a pas de raison que l'image ne se répète pas en fonction du contenu de ta DIV.

A noter que tu aurais pu faire :
div#contenu{
	padding: 0 20px 0 15px ;
	background: url(../img/bgt.png) top left repeat-y;
	min-height:100px; 
}
ok alors, le css :


body{
	margin: 5px 0 ;
	padding: 0 ;
	text-align: center ;
	font: 0.8em arial, helvetica, sans-serif ;
	background: url(../img/bg.png) repeat-x;
	background-color: #c4c4c4;
}
div#conteneur{
	width: 980px ;
	margin: 0 auto ;
	text-align: left ;
	/*background: url(../img/bgt.png) repeat-y;*/
	/*border:solid 1px black;*/
}
h1#header{
	height: 250px ;
	margin: 0 ;
	background: url(../img/header.png) no-repeat left top;
	/*border:solid 1px red;*/
}
h1#header a{
	width: 277px ;
	height: 174px ;
	display: block ;
	background: url(../img/logo.jpg) no-repeat ;
	position: relative ;
	left: 10px ;
	top: 9px ;
	text-indent: -5000px ;
}
div#contenu{
	padding: 0 20px 0 15px ;
	background: url(../img/bgt.png);
	background-repeat: repeat-y;
	min-height:100px; 
}

/*-------------------------------- page de garde -----------------------------------*/

div#gauche{
	width : 165px;
	height : 100%;
	min-height:400px; 
	float: left;
	overflow:hidden;
		/*border:solid 1px green;*/
}
div#espace{
	width : 17px;
	height : 100%;
	min-height:400px; 	
	float: left;
	overflow:hidden;
		/*border:solid 1px green;	*/
}
div#principal{
	width : 757px;
	height : 100%;
	min-height:400px; 	
	float: left;
	overflow:hidden;
		/*border:solid 1px green;	*/
}
...


Le php qui est en faite 3 pages haut.php defaut.php, bas.php


haut.php
echo'
	<div id="conteneur">		
		<h1 id="header"><a href="'.$urlSite.'" title="'.$siteName.'"><span>'.$siteName.'</span></a></h1>		
<div id="contenu">
<div id="gauche">';
$table="cat";
if( table_ok($cfgBase, $table)){
visu_cat_souscat();
}
echo'</div>
<div id="espace">&nbsp;</div>
<div id="principal">';

defaut.php
</div>
<h4>123 456</h4>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam ornare tincidunt neque. Phasellus faucibus, augue ac molestie ornare, felis ante aliquam nisi, vel fermentum velit erat eget eros. Donec et metus. In est. Nullam consequat lacus at lacus. Sed laoreet, arcu in gravida sagittis, nunc odio elementum enim, in tincidunt nisl mi ac odio. Nunc pretium, nunc sed feugiat dapibus, libero mi ultricies felis, a dignissim felis pede sit amet urna. Aenean euismod lobortis lacus. Phasellus in ligula sit amet lacus feugiat venenatis. Integer eu erat aliquam nunc semper tristique. Etiam vel magna nec arcu vehicula semper. Cras vitae diam. 
<br /><br />
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam ornare tincidunt neque. Phasellus faucibus, augue ac molestie ornare, felis ante aliquam nisi, vel fermentum velit erat eget eros. Donec et metus. In est. Nullam consequat lacus at lacus. Sed laoreet, arcu in gravida sagittis, nunc odio elementum enim, in tincidunt nisl mi ac odio. Nunc pretium, nunc sed feugiat dapibus, libero mi ultricies felis, a dignissim felis pede sit amet urna. Aenean euismod lobortis lacus. Phasellus in ligula sit amet lacus feugiat venenatis. Integer eu erat aliquam nunc semper tristique. Etiam vel magna nec arcu vehicula semper. Cras vitae diam. 
<br /><br />
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aliquam ornare tincidunt neque. Phasellus faucibus, augue ac molestie ornare, felis ante aliquam nisi, vel fermentum velit erat eget eros. Donec et metus. In est. Nullam consequat lacus at lacus. Sed laoreet, arcu in gravida sagittis, nunc odio elementum enim, in tincidunt nisl mi ac odio. Nunc pretium, nunc sed feugiat dapibus, libero mi ultricies felis, a dignissim felis pede sit amet urna. Aenean euismod lobortis lacus. Phasellus in ligula sit amet lacus feugiat venenatis. Integer eu erat aliquam nunc semper tristique. Etiam vel magna nec arcu vehicula semper. Cras vitae diam. 
<br /><br /></p>

bas.php
</div></div>
<p id="footer"><a class="triclic" href="?rub=index">Administration</a> - Copyright © 2008. Tous droits réservés. Graphique de Créations </p>
</div>

Modifié par spawns (20 Nov 2008 - 10:19)
Bonjour,

La propriété background-repeat et ses différentes valeurs marche correctement dans tous les navigateurs actuels, dont Mozilla Firefox.

Si ton image ne s'affiche que sur les 100px de hauteur forcés par le min-height, c'est que ton bloc fait 100px de hauteur et pas un pixel de plus. Tu peux le vérifier en appliquant une bordure (propriété border) à ton bloc. Tu devrais observer ce comportement avec tout navigateur implémentant correctement (la majorité de) CSS 2.1, soit Firefox, Safari, Opera, Chrome, ou encore IE8. Le comportement dans IE 5-7, par contre, est bugué.

Je te laisse mener l'enquête sur le pourquoi du comment de ce comportement. Smiley cligne
Oui d'accord mais les divs contenus dans mon div contenu eux changent de taille/longueur, donc agrandissent le div contenu.

si je supprime mon
min-height:100px;

je n'ai plus rien sous aucun navigateur ?

comment faire ?
Salut spawns,

bon j'imagine que depuis le temps tu as dû trouver une solution, mais comme je suis tombé sur le même Os, je post.

Alors à priori c'est plutôt min-height qui est mal géré, certain navigateur ne voit pas que le Div est en fait plus haut que le minimum.

Voici ma solution : dans le Div contenant l'image de background j'ai rajouté un Div en fin :

<div class="clear"></div>


avec cette CSS :

.clear {clear:both;margin-bottom:-1px;padding-bottom:1px}

Et là magie on force la hauteur et le background se duplique correctement.

Il y a certainement une autre solution mais c'est celle que j'ai trouvé Smiley langue

a +
geolocaliseip a écrit :
Alors à priori c'est plutôt min-height qui est mal géré, certain navigateur ne voit pas que le Div est en fait plus haut que le minimum.

C'est qu'il n'est PAS plus haut que le minimum, comme dans l'exemple de spawns.

Faut arrêter de dire que les navigateurs se trompent. La plupart du temps ce sont les concepteurs de pages web qui se plantent, pas le logiciel. (Bon après il y a le cas particulier IE6-7, qui est très prompt à se planter ou interpréter à moitié de travers.)

geolocaliseip a écrit :
Et là magie

Ça s'appelle le dépassement des flottants. C'est normal, c'est standard, et le correctif que tu as trouvé est une astuce classique pour contourner ce comportement (normal et standard, mais gênant dans certains cas tandis qu'utile dans d'autres).

Aucune magie là-dedans, donc. Mais j'admets que quand on débute ça peut surprendre. Smiley cligne

Un peu de lecture:
http://www.covertprestige.info/test/03-elements-flottants-et-element-parent-1.html

Bonne continuation. Smiley smile
geolocaliseip a écrit :
Salut spawns,

bon j'imagine que depuis le temps tu as dû trouver une solution, mais comme je suis tombé sur le même Os, je post.

Alors à priori c'est plutôt min-height qui est mal géré, certain navigateur ne voit pas que le Div est en fait plus haut que le minimum.

Voici ma solution : dans le Div contenant l'image de background j'ai rajouté un Div en fin :

<div class="clear"></div>


avec cette CSS :

.clear {clear:both;margin-bottom:-1px;padding-bottom:1px}

Et là magie on force la hauteur et le background se duplique correctement.

Il y a certainement une autre solution mais c'est celle que j'ai trouvé Smiley langue

a +


Slt,
j'avais effectivement adopté cette solution au final

Merci
hello,

Pour info et je ne sais pas si cela a un réel rapport ayant tendance a lire un peu trop en diagonale Smiley smile mais lorsque j'ai à gérer une hauteur minimum de manière cross browser j'utilise cette syntaxe, dans cet ordre :

div {
height: auto !important;
height: xxx px;
min-height: xxx px;

}

and it works partout.
zincou a écrit :
and it works partout.

Ça marche plutôt bien, mais c'est utiliser un hack (qui exploite ce bug d'Internet Explorer 5-6), et les hacks saimal, tandis que les commentaires conditionnels c'est bien.

L'usage des commentaires conditionnels est une bonne pratique déjà valable depuis des années, et mise fortement en avant (notamment par les développeurs d'Internet Explorer) depuis un peu avant la sortie d'IE7. Il serait temps de s'y mettre. Smiley cligne

Et oui, tu as effectivement lu un peu en diagonale car dans ce sujet le min-height est un emplâtre sur une jambe de bois, pas une solution correcte. Smiley smile
Modifié par Florent V. (26 Jan 2009 - 16:51)
je sais que tu as raison dans l'absolu florent et j'ai conscience des différences de méthode . Je ne voulais pas imposer cette méthode a quiconque mais malheureusement, parfois, les plannings ont leurs raisons que la raison ......

:)