28220 sujets

CSS et mise en forme, CSS3

Bonjour à tous!!
j'ai vraiment besoin d'un coup de main pour la mise en forme d'une application que je suis en train de coder...je suis débutant en mise en forme CSS mais malgré les bon tutos de Raphael il y a des choses qui m'échappent vraiment.
Voilà j'ai la mise en forme suivante:

<div id="conteneur">
    <div id="header">Le hautde page
    </div>
    <div id="temporaire">
        <div id="menu">le menu déroulant CSS proposé sur le site</div>
    </div>
    <div id="centre">
        <div id="form">le formulaire</div>
    </div>
    <div id="footer">Le footer</div>
</div>


Mais j'ai un gros problème le menu déroulant contenu dans temporaire...et bien lorsqu'il se déroule il decale les div en dessous... ca fout en l'air la mise en forme! Smiley sweatdrop
J'ai testé en supprimant la div temporaire...mais là problème...le menu s'affiche et de suite après le formulaire aussi et non en dessous.
ALors comment faire pour le div menu...j'aimerai que les sous-menus puissent apparaitre sans bouger les éléments en dessous.

voici le style:
body {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size: 0.8em;
margin: 0;
padding: 0;
}
#conteneur {
position: absolute;
width: 800px;
left: 50%;
margin-left: -375px;
}
#header {
height: 100px;
width: 800px;
background-image: url("header2.jpg");
}
#centre {
background-color:#ddd;
}
.temporaire {
height: 20px;
}
#pied {
height: 30px;
background-color: #99CC99;
}
#form {
color: #000;
background-color: #fff;
padding: 5px;
border-left: 1px solid #FF8BAE;
border-bottom: 1px solid #FF8BAE;
border-right: 1px solid #FF8BAE;
}
p {margin: 0;}

dl, dt, dd, ul, li {
margin: 0;
padding: 0;
list-style-type: none;
}
/*MENU DEROULANT*/
#menu {
width: 800px;
}
#menu dl {
float: left;
width: 9em;/*12em*/
text-align: left;
}
#menu dt {
cursor: pointer;
text-align: center;
font-weight: bold;
background: #2E93F1;
border: 1px solid #000000;
margin: 1px;
color: #fff;
}
#menu dd {
display: none;
border: 1px solid #468DCC;
}
#menu li {
text-align: center;
background: #2E93F1;

}
#menu li a, #menu dt a {
color: #fff;
text-decoration: none;
display: block;
height: 100%;
border: 0 none;
}
#menu li a:hover, #menu dt a:hover {
background: #6DB4F5;
}

/*ONGLET*/
ul#tabnav {
font: bold 11px verdana, arial, sans-serif;
list-style-type: none;
padding-bottom: 24px;
border-bottom: 1px solid #FF8BAE;
}

ul#tabnav li {
    float: left;
    height: 21px;
    background-color: #FFB7CD;
    margin: 2px 2px 0 2px;
    border: 1px solid #FF8BAE;
}

ul#tabnav li.active {
    border-bottom: 1px solid #fff;
    background-color: #fff;
}
ul#tabnav li.active a {
    color: #000;
}
ul#tabnav li.active a:hover {
    color: #000;
}
#tabnav a {
    float: left;
    display: block;
    color: #fff;
    text-decoration: none;
    padding: 4px;
}
#tabnav a:hover {
    background: #fff;
	color: #FF8BAE;
}


voilà cequ'il se passe quand je déroule le menu avec la div temporaire:
capture1
sans la div temporaire et sans même dérouler le menu:
capture2

Quelqu'un peut m'aider? Smiley decu
Bon j'ai utilisé z-index pour pallier à mon problème MAIS seulement je dois définir tous les div en absolute...
et j'ai un soucis avec mon footer qui revient tout en haut... j'ai beau le mettre en absolute aussi avec bottom: 5px; il ne veut pas se mettre en bas!
Et pourtant il appartient au div "conteneur" et devrait donc se placer selon lui....
quelqu'un peut m'aider?
Modifié par starkeus (12 Mar 2005 - 13:18)
Bon je n'arrive vraiment pas à résoudre ce problème...
voir la capture ici

voici le code entier de ma page de test:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Ultrannuaire</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<SCRIPT LANGUAGE="JavaScript" src="javascript.js"></script>
<style type="text/css">
/* CSS issu des tutoriels  www.alsacreations.com/articles  */
body {
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size: 0.8em;
margin: 0;
padding: 0;
}
#conteneur {
position: absolute;
width: 800px;
left: 50%;
margin-left: -375px;
}
#header {
height: 100px;
width: 800px;
background-image: url("header2.jpg");
}
#centre {
position: absolute;
top: 130px;
height: 100%;
width: 800px;
background-color:#ddd;
}
#pied {
position: absolute;
bottom: 5px;
z-index:0;
height: 30px;
width: 800px;
background-color: #99CC99;
}
#form {
color: #000;
background-color: #fff;
padding: 5px;
border-left: 1px solid #FF8BAE;
border-bottom: 1px solid #FF8BAE;
border-right: 1px solid #FF8BAE;
}
#temporaire {
height: 20px;
z-index:80;
width: 800px;}

p {margin: 0;}

dl, dt, dd, ul, li {
margin: 0;
padding: 0;
list-style-type: none;
}
/*******MENU DEROULANT HORIZONTALE*********/
#menu {
position: absolute;
top: 100px;
left: 5px;
z-index:100;
width: 800px;
/*height: 100%;*/
}
#menu dl {
float: left;
width: 9em;/*12em*/
text-align: left;
}
#menu dt {
cursor: pointer;
text-align: center;
font-weight: bold;
background: #2E93F1;
border: 1px solid #000000;
margin: 1px;
color: #fff;
}
#menu dd {
display: none;
border: 1px solid #468DCC;
}
#menu li {
text-align: center;
background: #2E93F1;

}
#menu li a, #menu dt a {
color: #fff;
text-decoration: none;
display: block;
height: 100%;
border: 0 none;
}
#menu li a:hover, #menu dt a:hover {
background: #6DB4F5;
}

/********ONGLET***********/
ul#tabnav {
	font: bold 11px verdana, arial, sans-serif;
    list-style-type: none;
    padding-bottom: 24px;
    border-bottom: 1px solid #FF8BAE;
    /*margin: 0px;*/
}

ul#tabnav li {
    float: left;
    height: 21px;
    background-color: #FFB7CD;
    margin: 2px 2px 0 2px;
    border: 1px solid #FF8BAE;
}

ul#tabnav li.active {
    border-bottom: 1px solid #fff;
    background-color: #fff;
}

ul#tabnav li.active a {
    color: #000;
}
ul#tabnav li.active a:hover {
    color: #000;
}
#tabnav a {
    float: left;
    display: block;
    color: #fff;
    text-decoration: none;
    padding: 4px;
}
#tabnav a:hover {
    background: #fff;
	color: #FF8BAE;
}

</style>
</head>
<body>
<div id="conteneur">
	<div id="header"></div>
	<div id="temporaire">
		<div id="menu">
		<dl>
			<dt onmouseover="javascript:montre();"><a href="index.php" title="Retour à l'accueil">Accueil</a></dt>
		</dl>
		
		<dl>			
			<dt onmouseover="javascript:montre('smenu1');">Rechercher</dt>
				<dd id="smenu1" onmouseover="javascript:montre('smenu1');" onmouseout="javascript:montre();">
					<ul>
						<li><a href="index.php?file=Etudiant&op=rechercher">Etudiant</a></li>
						<li><a href="index.php?file=Enseignant&op=rechercher">Enseignant</a></li>
						<li><a href="index.php?file=Entreprise&op=rechercher">Entreprise</a></li>
						<li><a href="index.php?file=MaitreA&op=rechercher">Maître Appr.</a></li>
						<li><a href="index.php?file=Personnel&op=rechercher">Personnel</a></li>
						<li><a href="index.php?file=Classe&op=rechercher">Classe</a></li>
						<li><a href="index.php?file=Matiere&op=rechercher">Matière</a></li>
					</ul>
				</dd>
		</dl>
		
		
		<dl>	
			<dt onmouseover="javascript:montre('smenu2');">Ajouter</dt>
			<dd onmouseover="javascript:montre('smenu2');" onmouseout="javascript:montre();" id="smenu2">
					<ul>
						<li><a href="index.php?file=Etudiant&op=ajouter">Etudiant</a></li>
						<li><a href="index.php?file=Enseignant&op=ajouter">Enseignant</a></li>
						<li><a href="index.php?file=Entreprise&op=ajouter">Entreprise</a></li>
						<li><a href="index.php?file=MaitreA&op=ajouter">Maître Appr.</a></li>
						<li><a href="index.php?file=Personnel&op=ajouter">Personnel</a></li>
						<li><a href="index.php?file=Classe&op=ajouter">Classe</a></li>
						<li><a href="index.php?file=Matiere&op=ajouter">Matière</a></li>
					</ul>
				</dd>
		</dl>
		<dl>	
			<dt onmouseover="javascript:montre('smenu5');">Edition</dt>
				<dd onmouseover="javascript:montre('smenu5');" onmouseout="javascript:montre();" id="smenu5">
					<ul>
						<li><a href="#">Présence CM</a></li>
						<li><a href="#">Présence EX</a></li>
						<li><a href="#">Trombi.</a></li>
						<li><a href="#">Relevé de notes</a></li>
						<li><a href="#">Statistique</a></li>
					</ul>
				</dd>
		</dl>
		<dl>	
			<dt onmouseover="javascript:montre('smenu6');">Exploitation</dt>
				<dd onmouseover="javascript:montre('smenu6');" onmouseout="javascript:montre();" id="smenu6">
					<ul>
						<li><a href="#">Présence</a></li>
						<li><a href="#">Gestion des notes</a></li>
						<li><a href="#">Heures enseignants</a></li>
						<li><a href="#">Paiements Enseignants</a></li>
					</ul>
				</dd>
		</dl>
		<dl>	
			<dt onmouseover="javascript:montre();"><a href="#" title="Administration">Administration</a></dt>
		</dl>
		</div>
	</div>
	<div id="centre">
		<ul id="tabnav"><li class="active"><a href="index.php?file=Etudiant&op=ajouter">Etudiant</a></li><li><a href="index.php?file=Enseignant&op=ajouter">Enseignant</a></li><li><a href="index.php?file=Entreprise&op=ajouter">Entreprise</a></li><li><a href="index.php?file=MaitreA&op=ajouter">Maître Appr.</a></li><li><a href="index.php?file=Personnel&op=ajouter">Personnel</a></li><li><a href="index.php?file=Classe&op=ajouter">Classe</a></li><li><a href="index.php?file=Matiere&op=ajouter">Matiere</a></li></ul>
		<div id="form">
			<br/>
			<h3>Creation d un etudiant</h3>
			<p>partie centrale</p>
			  <p>partie avec du contenu occupant le reste de la largeur</p>
			  <p>partie avec du contenu occupant le reste de la largeur</p>
			  <p>partie avec du contenu occupant le reste de la largeur</p>
			  <p>partie avec du contenu occupant le reste de la largeur</p>
		
			  <p>partie avec du contenu occupant le reste de la largeur</p>
			  <p>partie avec du contenu occupant le reste de la largeur</p>
			  <p>partie avec du contenu occupant le reste de la largeur</p>
			  <p>partie avec du contenu occupant le reste de la largeur</p>
			  <p>partie avec du contenu occupant le reste de la largeur</p>
			  <p>partie avec du contenu occupant le reste de la largeur</p>
		
			  <p>partie avec du contenu occupant le reste de la largeur</p>
			  <p>partie avec du contenu occupant le reste de la largeur</p>
		</div>
  	</div>
	<div id="pied"><center>FOOTER</center></div>
</div>
</body>
</html>


Aidez moi SVP Smiley decu
PS: on critique souvent IE mais c'est avec ce navigateur que j'ai le moins de pb... Smiley sweatdrop
Administrateur
starkeus a écrit :
PS: on critique souvent IE mais c'est avec ce navigateur que j'ai le moins de pb... Smiley sweatdrop

Ce ne serait pas parce que tu codes d'abord pour IE puis tu adaptes pour le reste? Le mieux est de coder pour Mozilla&consorts puis d'adapter pour IE, cf. euh au pif, le blog de Raphael ou la FAQ de ce Forum et quelques sujets où cela apparait (dont un sur la Méthodologie)
Felipe a écrit :

Ce ne serait pas parce que tu codes d'abord pour IE puis tu adaptes pour le reste? Le mieux est de coder pour Mozilla&consorts puis d'adapter pour IE, cf. euh au pif, le blog de Raphael ou la FAQ de ce Forum et quelques sujets où cela apparait (dont un sur la Méthodologie)


Bah ça ne m'aide pas beaucoup Smiley sweatdrop ... je n'ai pas codé POUR IE...mais simplement c'est avec lui que j'ai moins de soucis... si tu regardes mon code, comment expliques tu que la div footer ne se place pas en bas alors que son parent est la div conteneur et que j'ai bien spécifié bottom= 5px; ?? je ne fais que rependre la plupart des tutos dispo ici mais je ne vois pas où est la "coquille" dans mon code...

SI je ne peux pas trouver de l'aide sur ce forum même de la part de modé comme toi, dites le... Smiley ohwell et je vous laisserai tranquille!
Modifié par starkeus (12 Mar 2005 - 16:34)
Salut,

Je vois un problème dans ton CSS : le conteneur n'a pas de hauteur car tu veux qu'il s'adapte au contenu (je suppose). Or l'ensemble du contenu, hormis le header, est positionné hors flux donc ne permet pas au conteneur de connaître sa hauteur, et - paradoxalement - tu demandes au bloc centre de prendre 100% d'une hauteur...qui n'est pas définie ! Du coup ton pied se positionne par rapport au bas du header qui est le seul à déterminer une hauteur dans le conteneur, car dans le flux.

Conclusion : en ne positionnant pas le bloc centre, mais en laissant faire le flux, ton bloc pied ira à sa place (testé sous IE et FF).

Qu'en dis-tu ? Smiley biggrin