28172 sujets

CSS et mise en forme, CSS3

Bonjour tout le monde Smiley biggrin

Me voilà avec un petit problème qui ne m'était jamais arrivé auparavant. J'ai pris un menu déroulant en CSS et l'ai adapté à mes besoins. Seulement, l'affichage est top sur Internet Explorer mais sur Mozilla, dès que le menu se déroule, la div du contenu se déplace sur la droite.

Pour mieux comprendre :

<!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=iso-8859-2" />
<title>Untitled Document</title>
<style type="text/css">
<!--
body {
	margin: 0px;
	background-color: #F1F7FE;
	text-align: center;
	font-family: Arial;
	font-size: 12px;
	color: #000000;
	text-align:center;
}
a:link {
	color: #000000;
	text-decoration: none;
}
a:visited {
	color: #000000;
	text-decoration: none;
}
a:hover {
	color: #FF9900;
	text-decoration: underline;
}
a:active {
	color: #000000;
	text-decoration: none;
}
#global {
	width: 790px;
	margin-left:auto;
	margin-right:auto;
	text-align: center;
	background-color: #FFFFFF;
	border-left: solid 1px #D3DEE8;
	border-right: solid 1px #D3DEE8;
}
#navig {
	width: 100%;
	height: 22px;
	border-bottom: solid 1px #D3DEE8;
	text-align:right;
	font-size: 10px;
	padding-top: 5px;
}
#header {
	width: 100%;
	height: 220px;
}
#menuDeroulant {
	background-image:url(fond_menu.png);
	background-repeat:repeat;
	width: 790px;
	height: 42px;
	border: 0;
	margin: 0;
	padding: 0;
	top: 0;
	left: 0;
	list-style-type: none;
	text-align:center;
}
#menuDeroulant li {
	width: 158px;
	border: 0;
	float: left;
	margin: 0;
	padding: 0;
}
#menuDeroulant li a:link, #menuDeroulant li a:visited {
	color: #FFF;
	height: 1%;
	border: solid 1px #25557D;
	display: block;
	margin: 0;
	padding: 13px 10px;
	text-decoration: none;
}
#menuDeroulant li a:hover {
}
#menuDeroulant li a:active {
}
#menuDeroulant .sousMenu {
	border: 0;
	display: none;
	list-style-type: none;
	margin: 0;
	padding: 0;
}
#menuDeroulant .sousMenu li {
	width: 158px;
	border: 0;
	/*border-top: 1px solid transparent;*/
	margin: 0;
	float: none;
	padding: 0;
}
#menuDeroulant .sousMenu li a:link, #menuDeroulant .sousMenu li a:visited {
	color: #FFF;
	background: transparent url("fondTR.png") repeat;
	border: 0;
	display: block;
	margin: 0;
	text-decoration: none;
}
#menuDeroulant .sousMenu li a:hover {

	background-image: none;
	background-color: #1283D7;
}
#menuDeroulant li:hover > .sousMenu {
	display: block;
}
#contenu {
	text-align: left;
	padding: 15px;
}
-->
</style>
</head>
<body>
<div id="global">
  <div id="navig"><a href="#">FR</a> | <a href="#">DE</a> | <a href="#">EN</a></div>
  <div id="header">aaaaaaa</div>
  <div>
    <ul id="menuDeroulant">
      <li> <a href="#">SOCIETE</a>
        <ul class="sousMenu">
          <li><a href="#">HISTORIQUE</a></li>
          <li><a href="#">NOTRE VISION</a></li>
          <li><a href="#">etc.</a></li>
        </ul>
      </li>
      <li> <a href="#">PLACEMENT</a>
        <ul class="sousMenu">
          <li><a href="#">OFFRES D'EMPLOI</a></li>
          <li><a href="#">VOS CVs</a></li>
          <li><a href="#">etc.</a></li>
        </ul>
      </li>
      <li> <a href="#">DELEGATION</a>
        <ul class="sousMenu">
          <li><a href="#">PERSONNEL TEMPORAIRE</a></li>
          <li><a href="#">MAINTENANCE INFORMATIQUE</a></li>
          <li><a href="#">etc.</a></li>
        </ul>
      </li>
      <li> <a href="#">FORMATION</a>
        <ul class="sousMenu">
          <li><a href="#">SOCIETES</a></li>
          <li><a href="#">JE SAIS PAS</a></li>
          <li><a href="#">etc.</a></li>
        </ul>
      </li>
      <li> <a href="#">CONTACTS</a>
        <ul class="sousMenu">
          <li><a href="#">NOUS ECRIRE</a></li>
          <li><a href="#">PLAN D'ACCES</a></li>
          <li><a href="#">etc.</a></li>
        </ul>
      </li>
    </ul>
  </div>
  <div id="contenu">
    <p>Mon contenu</p>
    <p>... etc.</p>
  </div>
</div>
</body>
</html>


Est-ce que quelqu'un aurait la bonté de me dire ce que je fais de faux ?
Salut Sakkarah,

Euh.. un affichage top sur ie ? peut etre en version 7 ou 8 mais ie6 il aime pas ton menu (eh oui li:hover sa lui parle pas Smiley confus )

Enfin bref, ton problème viens d'ici :

#menuDeroulant li:hover > .sousMenu {
display: block;
}


Vu que c'est un block mozilla "fait de la place" pour pouvoir mettre ton block. A priori je dirais que si tu ajoute un petit position:absolute

#menuDeroulant li:hover > .sousMenu {
  position:absolute;
display: block;
}


sa devrait résoudre ton pb (sous ie tu devra peut etre ajouter des positions:relative pour ton objet menuDeroulant mais je peux pas tester là...)

Voilà @+
Modifié par Mikerob (29 Jan 2009 - 17:35)
J'avais tenté de procéder comme ça, seulement après il y a un problème sous IE. Ensuite, c'est vrai que pour le moment je n'ai pas testé sur les versions antérieures.

Peut-être que quelque chose m'échappe. Ceci dit, il y a un remède pour les versions antérieures ? Car ma contrainte est de ne pas utiliser du JScript.
Modifié par sakkarah (28 Jan 2009 - 11:51)
J'ai trouvé le problème.. Enfin, il n'y en avait pas qu'un ! Je suis repartie de 0 car ça devenait vraiment brouillon. Voici le code, si cela peut aider quelqu'un :

Partie CSS :

/* Corps */
html, body {
	margin: 0;
	padding: 0;
	height: 100%;
	background-color: #F1F7FE;
	font-family: Sans-Serif;
	font-size: 12px;
	color: #000000;
	text-align: center;
}
/* Lien : Actif ou inactif et visité */
a:link, a:visited, a:active {
	color: #000000;
	text-decoration: none;
}
/* Lien : Survolé */
a:hover {
	color: #FF9900;
	text-decoration: none;
}
/* Div : Globale */
div#global {
	position: relative;
	/* permet au bloc de servir de référent pour ses descendants positionnés en absolu */
	width: 790px;
	margin: 0 auto;
	min-height: 100%;
	background-color: #FFFFFF;
	border-left: solid 1px #D3DEE8;
	border-right: solid 1px #D3DEE8;
}
/* Div : Barre de navigation (langues) */
div#global #navig {
	height: 20px;
	margin-top: 0; /* évite tout risque de fusion des marges */
	border-bottom: dashed 1px #D3DEE8;
	font-size: 80%;
	text-align: right;
}
/* Penser à appliquer les styles suivants au premier élément et au dernier élément (hors pied de global) du bloc conteneur */
div#global #header {
	height: 220px;
	margin-top: 0; /* Pour éviter la fusion des marges */
}
/* Menu déroulant */
div#global #menuDeroulant {
	background-image:url(fond_menu.png);
	background-repeat:repeat;
	width: inherit;
	height: 42px;
	border: 0;
	margin: 0;
	padding: 0;
	top: 0;
	left: 0;
	list-style-type: none;
	position:relative;
}
div#global #menuDeroulant li {
	width: 158px;
	border: 0;
	float:left;
	margin: 0;
	padding: 0;
}
div#global #menuDeroulant li a:link, div#global #menuDeroulant li a:visited {
	color: #FFF;
	height: 1%;
	border: solid 1px #25557D;
	display: block;
	margin: 0;
	padding: 13px 10px;
	text-decoration: none;
}
div#global #menuDeroulant li a:hover {
}
div#global #menuDeroulant li a:active {
}
div#global #menuDeroulant .sousMenu {
	border: 0;
	display: none;
	list-style-type: none;
	margin: 0;
	padding: 0;
}
div#global #menuDeroulant .sousMenu li {
	width: 158px;
	border: 0;
	/*border-top: 1px solid transparent;*/
	margin: 0;
	float: none;
	padding: 0;
}
div#global #menuDeroulant .sousMenu li a:link, div#global #menuDeroulant .sousMenu li a:visited {
	color: #FFF;
	background: transparent url("fondTR.png") repeat;
	border: 0;
	display: block;
	margin: 0;
	text-decoration: none;
}
div#global #menuDeroulant .sousMenu li a:hover {
	background-image: none;
	background-color: #1283D7;
}
div#global #menuDeroulant li:hover > .sousMenu {
	display: block;
	position:absolute;
}
div#global #contenu {
	text-align:justify;
	padding: 30px;
	margin: 0; /* Pour éviter la fusion des marges */
}
/* Dernier élément */
div#global #dernier-element {
	margin-bottom: 0; /* Pour éviter la fusion des marges */
	padding-bottom: 25px;/* CET ESPACE DOIT PERMETTRE DE PLACER LE FOOTER ! */
}
div#dernier-element {
	visibility: hidden;
}
/* Div : Pied de page */
div#footer {
	background-color: #F7FAFD;
	border-top: dashed 1px #D3DEE8;
	position: absolute;
	bottom: 0;
	left: 0;
	width: 100%; /* Pour que le bloc prenne toute la largeur du bloc de référence */
	height: 25px;
	font-size:90%;
}


Partie xHTML :
<div id="global">
  <div id="navig"><a href="#">FR</a> | <a href="#">DE</a> | <a href="#">EN</a></div>
  <div id="header">Je suis le header</div>
  <div>
    <ul id="menuDeroulant">
      <li> <a href="#">Menu</a>
        <ul class="sousMenu">
          <li><a href="#">...</a></li>
          <li><a href="#">...</a></li>
          <li><a href="#">...</a></li>
        </ul>
      </li>
      <li> <a href="#">Menu</a>
        <ul class="sousMenu">
          <li><a href="#">...</a></li>
          <li><a href="#">...</a></li>
          <li><a href="#">...</a></li>
        </ul>
      </li>
      <li> <a href="#">Menu</a>
        <ul class="sousMenu">
          <li><a href="#">...</a></li>
          <li><a href="#">...</a></li>
          <li><a href="#">...</a></li>
        </ul>
      </li>
      <li> <a href="#">Menu</a>
        <ul class="sousMenu">
          <li><a href="#">...</a></li>
          <li><a href="#">...</a></li>
          <li><a href="#">...</a></li>
        </ul>
      </li>
      <li> <a href="#">Menu</a>
        <ul class="sousMenu">
          <li><a href="#">...</a></li>
          <li><a href="#">...</a></li>
          <li><a href="#">...</a></li>
        </ul>
      </li>
    </ul>
  </div>
  <div id="contenu">Je suis le contenu</div>
  <p>&nbsp;</p>
  <div id="dernier-element">&nbsp;</div>
  <div id="footer">Je suis le pied de page</div>
</div>


Merci à toi Mikerob de t'être donné la peine de répondre Smiley biggrin
Modifié par sakkarah (28 Jan 2009 - 12:03)