28172 sujets

CSS et mise en forme, CSS3

Bonjour à tous et merci d'avance pour vos rèponses.

Voila mon problème je suis entrain de coder un petit site et je rencontre un problème que je n'avais encore jamais rencontré auparavant avec IE. J'ai lu beaucoup d'article sur les bug IE sur votre forum et sur d'autre mais je n'ai trouvé aucun sujet en rapport direct avec mon affaire qui m'échappe un peu je dois l'avouer. en gros tout mon container principal se décal sous IE selon la résolution alors que je n'est aucun prob sous les autres navigateurs. Le problème viens surement du faite que j'utilise un absolute sur mon bloc principal mais je n'es pas trop le choix vu que j'ai fait quelques bidouilles pour gerer l'agrandissement de mes colonnes comme je le souhaitais. voici mon code css et xhtml. J'espere que vous pourrez m'aider.

Si vous voulez voir un rendu direct direction : www.pixx.fr/escortv2

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>girls</title>
<link href="css/escortv2.css" rel="stylesheet" type="text/css" media="all" />
</head>
<body>
<div id="blockmajeur">
        
  <div id="blockleft">
    <img src="images/leftcont.jpg" border="0" />
  </div>
		
        	<div id="blockhead">
            	<div id="blockmenu">
                <div id="home"><a href="index.php"></a></div>
                <div id="girls"><a href="girls.php"></a></div>
                <div id="event"><a href="event.php"></a></div>
                <div id="contact"><a href="contact.php"></a></div>
                <div id="legal"><a href="legal.php"></a></div>
                </div>
       	      <img src="images/logohead.jpg" border="0" />
              <div id="blockcontent">
        	</div> 
             <div id="copyright">
            </div>  
            </div>
             
      
  <div id="blockright">
       <img src="images/rightcont.jpg" border="0" />
  </div>
                          
</div>
  </body>
</html>


et le css :

@charset "utf-8";
/* CSS Document */
html, body {
	width:642px;
	margin: auto;
	height:100%;
	background-repeat:repeat-x;
	background-position: top center;
	background-image: url("../images/degrade.jpg");
	background-color: #141927;
	text-align: center;
	
}

* html #blockmajeur 
{
        height: 100%;
		 /* Fix IE 5.5, 6 and 7 */
}
 
html:first-child body 
{
        height: 100%; /* fix opera 9.22 and 7.10 */
}


#blockmajeur
{
	position:absolute;
	min-height:100%;
	margin:auto;
	width:642px;
	background-repeat: repeat-y;
	background-position: top center;
	background-image:url("../images/bas.jpg");
}
	
#blockleft
{
	margin:auto;
	width:8px;
	float:left;
}

#blockright
{
	margin:auto;
	float:left;
	width:8px;
}
#blockhead
{
	float:left;
	margin:auto;
	width:626px;
	height:95%;
	background-repeat: repeat-y;
	background-position: top center;
	background-image: url("../images/degrecont.jpg");
	text-align: center;
}

#blockcontent
{
	margin:auto;
	width:616px;
	padding-left:3px;
	padding-right:5px;
	text-align: center;
	padding-bottom:25px;
}

#copyright
{
	margin:auto;
	margin-left:3px;
	width:620px;
	height:26px;
	clear:both;
	position:absolute;
	background-repeat: no-repeat;
	background-position: top center;
	background-image: url("../images/copyright.jpg");
	bottom:0px;
	*left:8px;
	text-align: center;
}

#blockmenu
{
	margin:auto;
	height:43px;
	width:620px;
}

#home a 
{
	display:block;
	width:120px;
	float:left;
	height:43px;
	background-image:url("../images/home.jpg");
}
#home a:hover
{
	display:block;
	width:120px;
	height:43px; 
	background-image:url("../images/homeclick.jpg");
}


#girls a 
{
	display:block;
	width:104px;
	float:left;
	height:43px;
	background-image:url("../images/girls.jpg");
}
#girls a:hover
{
	display:block;
	width:104px;
	height:43px; 
	background-image:url("../images/girlsclick.jpg");
}


#event a 
{
	display:block;
	width:133px;
	float:left;
	height:43px;
	background-image:url("../images/event.jpg");
}
#event a:hover
{
	display:block;
	width:133px;
	height:43px; 
	background-image:url("../images/eventclick.jpg");
}


#contact a 
{
	display:block;
	width:139px;
	float:left;
	height:43px;
	background-image:url("../images/contact.jpg");
}
#contact a:hover
{
	display:block;
	width:139px;
	height:43px; 
	background-image:url("../images/contactclick.jpg");
}


#legal a 
{
	display:block;
	width:124px;
	float:left;
	height:43px;
	background-image:url("../images/legal.jpg");
}
#legal a:hover
{
	display:block;
	width:124px;
	height:43px; 
	background-image:url("../images/legalclick.jpg");
}


Voila merci d'avance.
Tu peux rajouter sur ton conteneur :

left : 50%;
margin-left : -321px;


Mais je pense qu'il y a tout de même moyen d'y arriver sans position absolue.
Merci beaucoup Agylus en effet ta solution marche bien ! Par contre j'aimerais bien savoir comment ta eu l'idée de faire ça ? Histoire que je bloc plus sur ce genre de petit prob.

Et pour la question du absolute en faite je simule le faite qu'il y est 3 colonne sachant que celle de droite et de gauche sont juste des colonne de design qui sont ensuite complétées par un background de mon conteneur principal.Donc pas trop le choix j'ai testé pas mal de chose mais rien ne me permettait de gérer les 100% de taille de navigateur sur plusieurs colonnes sans utiliser de position.

En tous cas encore merci pour te réponse rapide ca m'évitera de m'arracher les cheveux Smiley smile
je tiens a rajouter, que si je demande une explication c'est pas parceque j'ai pas compris ta réponse je vois très bien l'histoire du 50% - width/2 le truc que je comprends pas c'est que à prioris IE comprends bien les margin et autres text-align alors pourquoi ne prend t'il pas en compte ses valeurs pour être centré ?
Ton problème vient principalement du fait que tu aies donné une largeur au body. C'est fortement déconseillé, surtout dans le cas d'utilisation d'éléments positionnés. A savoir, que normalement la seule manière de centrer un élément positionné en absolu est de faire cette technique de left:50% et margin:-width/2.

Donc mon avis :

- Supprimer la largeur du body ;
- Supprimer le position:absolute et du coup le left sur le blockmajeur ;
- Mettre un margin:auto sur le blockmajeur ;
- Faire une image de fond pour le blockmajeur, de la largeur de celui-ci d'un pixel de hauteur et répété vers le bas, comprenant juste tes deux petites colonnes de design ;
- Mettre un padding sur le blockmajeur de la largeur des petites colonnes ;

Et normalement ça devrait être bon.
Modifié par Agylus (13 Mar 2009 - 14:41)