28173 sujets

CSS et mise en forme, CSS3

Bonjours à tous

Je suis en train de réaliser un menu des plus simples en css et je n'arrive pas à center correctement le bloc ul dans ma div de menu. Firefox ne respecte pas la taille fixe que je lui donne et ie7 me l aligne n'importe comment...

Voici le script de mon css :

/* CSS Document */
html {
	background: transparent url(html_background.png) repeat-x;
}

body { 
    
    background-color: transparent; 
	color : #333333;
    font-family: Arial, Verdana, Geneva, sans-serif;
    font-size: smaller;
    line-height: 170%;
    
    }

p {
    padding: 5px 20px 5px 20px;
    /*text-indent: 1em;*/
    
    }

a {
    color: #444444;
    }

a:hover {
    
    color: #990000;
    }

#conteneur {

    position: absolute;
    width: 700px;
    left: 50%;
    margin-left: -375px;
	text-align: left;
	/*border: 1px solid #CC0000;*/

    }
	

#banniere {
    
    height : 357px;
	background-image : url(banniere.png);
    background-repeat : no-repeat;
	background-position: right;
	margin-top: -30px;
	margin-bottom : 10px;
    
    }
	
	
	
#contenu

	{
	float: right;
	height: auto;
	width: 700px;
	margin: 0;
	background-image: url(bg_contenu.png);
	background-repeat: repeat-y;
	/*border: 1px solid #CC0000;*/
	}
	
#contenu p {

    margin-left: 250px;
    margin-right: 20px;
    margin-bottom: 10px;
    
    }
	
#liste { 
	
	position: relative;
	background-image: url(bg_menu.png);
	background-position: right;
	width:175px;
	top: -330px;
	left: 48px;
	font-size: 1em;
	margin: 0;
	text-align: center;
	border: 1px solid #CC0000;
	}
	
#liste a {

	color: #FFF;
	text-decoration: none;
	margin-left: 30px;
	
	
	}

#liste ul {


	width: 175px;
	margin-top: 15px;
	margin-left: -20px;
	padding-top: 10px;
	padding-bottom: 10px;
	border: 1px solid #CC0000;
	list-style: none;
	}


#liste li {


	background-image: url(bg_partie1.png);
	background-position: center;
	background-repeat: no-repeat;
	margin-bottom: 8px;
	
	}
	
#pied {

	clear: both;
    text-align: center;
    background: url(bg_pied.png) no-repeat;
	width: 700px;
	height: auto;
	height: 213px;
	/*border: 1px solid #CC0000;*/
    
    
    }
	
#pied_contenu {

    margin-left: auto;
    margin-right: auto;
    padding-top: 4px;
    text-align: center;

    }
	


et voici l'html :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<title>index</title>

<link rel="stylesheet" type="text/css" href="css/montciel.css">

</head>

<body>

<div id='conteneur'>
	
	<div id='banniere'>
	</div>



	<div id='contenu'>
	
		<p>here is clearly a need for CSS to be taken seriously by graphic artists. The Zen Garden aims to excite, inspire, and encourage participation. To begin, view some of the existing designs in the list. Clicking on any one will load the style sheet into this very page. The code remains the same, the only thing that has changed is the external .css file. Yes, really.<br />

CSS allows complete and total control over the style of a hypertext document. The only way this can be illustrated in a way that gets people excited is by demonstrating what it can truly be, once the reins are placed in the hands of those able to create beauty from structure. To date, most examples of neat tricks and hacks have been demonstrated by structurists and coders. Designers have yet to make their mark. This needs to change.<p>
	
	
		<div id='liste'>
		
			<ul>
				
				<li><a href='#'>partie 1</a></li>
				<li><a href='#'>partie 2</a></li>
				<li><a href='#'>partie 3</a></li>
				<li><a href='#'>partie 4</a></li>
				
			</ul>
		
		</div>
	
	
	</div>
	

	
	<div id='pied'>
		<a href="#">Contact</a>
	</div>

</div>


</body>
</html>


Merci d'avance à celui qui pourra m'aider Smiley cligne
Modifié par SugataSan (22 Aug 2006 - 10:51)
Pour comencer, as-tu pensé à valider ton code HTML ?
Tu as un paragraphe non refermé (balise ouvrante <p>, et balise fermante... <p> également), ce qui modifie le positionnement en hauteur du menu.

Ensuite, tu as un problème lié aux styles par défaut que les différents navigateurs appliquent aux listes (ul, ol). Pour créer le retrait de gauche, Firefox utilise un padding, et IE Windows une marge. Il faut donc toujours préciser, pour les listes, à la fois les marges et les padding latéraux.
#liste ul {
	width: 175px;
	margin: 15px 0 15px -20px;
	padding: 10px 0;
	border: 1px solid #CC0000;
	list-style: none;
}

Voilà qui devrait déjà arranger les choses.

Enfin, tu as un problème avec le décalage dans IE Windows. Tu as utilisé une marge négative pour faire un décalage, et apparemment IE n'aime pas trop ça. Il y a peut-être un moyen de corriger ce comportement, mais à priori l'effet de décalage voulu correspond plutôt au positionnement relatif, qui permet justement de décaler un élément par rapport à sa position « normale ».
Voici un code qui marche bien avec Firefox, Opera, et surtout IE 6 :
#liste ul {
	position: relative; left: -20px;
	width: 175px;
	margin: 15px 0;
	padding: 10px 0;
	border: 1px solid #CC0000;
	list-style: none;
}
Merci beaucoup, le fait de préciser le padding a résolu mon problème.

J'ai encore une petite question :

Quel est l'interet de redefinir #liste ul en position:relative alors que #liste possède deja cette définition ? (je pose cette question car le code marche sous ie7 sans cette déf. dans le ul)
Modifié par SugataSan (22 Aug 2006 - 16:49)
SugataSan a écrit :
Quel est l'interet de redefinir #liste ul en position:relative alors que #liste possède deja cette définition ? (je pose cette question car le code marche sous ie7 sans cette déf. dans le ul)

Si les marges négatives marchent correctement (c'est à dire que la partie qui sort du bloc parent est visible, contrairement à ce que fait IE6) avec IE7 et les autres navigateurs modernes, et que ça te suffit, tu peux en rester aux marges négatives.

Je te proposais d'utiliser le positionnement relatif, qui est plus adapté il me semble à ce que tu voudrais. L'intérêt de mettre un position: relative sur la liste (ul) est que cela permet de décaler cette liste grâce au left: -20px.
Le fait que le bloc parent soit lui-même en positionné en relatif est complètement indépendant.