Bonjour,
Je suis très nulle en css.
Je suis en train de développer un service de lecture en ligne de manga
J'ai 2 bandeaux sur mon site, sur l'un d'eux, je tente de mettre plusieurs éléments dessus,
2 menus déroulants (un pour les pages, un pour les chapitres et bientot un pour les projets), et les 3 pages précédentes et suivantes de la pages courrantes, cependant, ça ne fait pas du tout ce que je veux, ça se met les uns après les autres, et non pas à la suite, j'ai tenté avec float, des div, sans.... je ne sais pas comment faire pour mettre en page.
Alors, le code css:
img {
	width: auto;
	height: 1000;
	border-width:1px;
	border-style:solid;
	border-color:black;
}
body {
	background-image:url(background_noise.png);
}

body {
    margin:0;
    padding:0;
} 
#bandeau a{
	color:#CBCECE;
}
#bandeau { 
	color:white;
    background:#494949;
    height:30px;  
    margin-left:30px;
    margin-right:30px;
    margin-bottom:10px;
    border-radius:0 0 5px 5px; /** Pour mettre les bords en arrondis **/
    
}
#bandeau2{
	background:#494949;
    height:40px;   
    line-height:30px;
    margin-left:100px;
    margin-right:100px;
    margin-bottom:10px;
    border-radius:5px 5px 5px 5px; /** Pour mettre les bords en arrondis **/
}
 
#numPage{
	margin-right:200px; 
}

#menu {
	margin-right:50px; 
	margin-left:50px; 
}

.cadre{ 
	color:white;
	vertical-align:middle;
	border:1px solid white;
	border-radius:5px 5px 5px 5px; /** Pour mettre les bords en arrondis **/
	padding:0.3em; 
}

.cadrePageCourante{
	color: #CBCECE;
	vertical-align:middle;
	border:1px solid white;
	border-radius:5px 5px 5px 5px; /** Pour mettre les bords en arrondis **/
	padding:0.3em; 
}

a:link{ 
	text-decoration:none; 
} 

#couleurGrise{
	color: #C1C3C3;

}
#content { 
 
}
#image{
}
#pub{
  
}
#menu{
	font-size:10px;
}
/* partie positionnement et déco */
#menu a { 
	display:block; 
	color: #fff; 
	text-decoration:none;
}
#menu > li,
#menu > li li {
	position: relative;
	display:inline-block;
	width: 50px;
	padding: 0px 0px;
	background-color: #777;
}
#menu > li li { background: transparent none; }
#menu > li li a { color: #444; }
#menu > li li:hover { background:#eee; }
#menu > li:first-child {
	border-right: 1px solid #777;
	border-radius: 8px 0 0 8px;
}
#menu > li:last-child {
	border-right: 0;
	border-left: 1px solid #aaa;
	border-radius: 0 8px 8px 0 ;
}
#menu > li:hover {
	background-color: #999;
	background-image: linear-gradient(#ccc, #aaa 50%, #999 50%,#bbb);
}
 
/* (presque) fin de la partie positionnement/déco */
/* dans cette déclaration, on fixe le max-height */
#menu ul {
	position: absolute;
	top: 0.3em; left: 0;
	max-height:0em;	
	margin: 0; padding: 0;
	background-color: #ddd;
	background-image: linear-gradient(#fff,#ddd);
	overflow: hidden;
	transition: 0.3s max-height 0.3s;
	border-radius: 0 0 8px 8px;
}
/* ici on change la valeur de max-height au :hover */
#menu > li:hover ul {
	/* à adapter, le minimum est le meilleur mais voyez large ???? */
	max-height: 20000em;
}




le html, je ne mets pas la récup des variables et tout :

<div id="bandeau">	
		&nbsp;&nbsp;&nbsp;Lecture en Ligne de la <a href="lune-rouge.fr" class="couleurGrise">Team Lune Rouge</a>  Manga <?php echo $_SESSION['nomProjet']; ?>

	</div>
	<div id="bandeau2">
	
			<div id="numChapitre">
			<?php
			//On récupère le numéro de chapitre actuel.
			$idProjet =$_SESSION['idProjet'];
			//Puis on affiche les autres
			//on récupère dans la bdd
			$reponse = $bdd->query('select * from chapitre WHERE idProjet="'.$idProjet.'" AND finit="1" ORDER BY numChapitre ');
		 
			
			echo '			
				<ul  id="menu">
					<li>						
					'.$_SESSION['numChapitre'].'
						<ul>'; 
							while($donnees = $reponse->fetch()){
								echo '<li>';
								if($donnees['type']==0){//c'est un chapitre
									echo '<a href=
									"lel.php?onCommence=oui&idProjet='.$idProjet.'&idChapitre='.$donnees['numChapitre'].'&extra=0&chemin=../../../../lel/chapitre/'.$idProjet.'/'.$idProjet.'-'.$donnees['numChapitre'].'/"
									>Chap '.$donnees['numChapitre'].'
									</a>';
								}else{
									echo '<a href=
									"lel.php?onCommence=oui&idProjet='.$idProjet.'&idChapitre='.$donnees['numChapitre'].'&extra=1&chemin=../../../../lel/extra/'.$idProjet.'/'.$idProjet.'-'.$donnees['numChapitre'].'/"
									>Chap '.$donnees['numChapitre'].'
									</a>';
								}					  
								
								
								echo '</li>';	
							}
							echo '
						</ul>
					</li>
				</ul>';
								 			?>
			</div>
		
			<div id="numPage">
				<?php  
				if(isset($_GET['image']))
				{
					$img=$_GET['image'];
				}else{	
					$img=0;
				}
				$image = $img;
				$image = $image-3;
				if($image>-1){
					echo ' <a href="lel.php?image=',$image,'&onCommence=non" class="cadre">'.$image.'</a> '; 
				}
				$image = $image+1;
				if($image>-1){
					echo ' <a href="lel.php?image=',$image,'&onCommence=non" class="cadre">'.$image.'</a> '; 
				}
				$image = $image+1; 
				if($image>-1){
					echo ' <a href="lel.php?image=',$image,'&onCommence=non" class="cadre">'.$image.'</a> '; 
				}
				$image = $image+1;
				echo ' <span class="cadrePageCourante" >'.$image.'</span> '; 
				$image = $image+1;		
				if($image<$nb){
					echo ' <a href="lel.php?image=',$image,'&onCommence=non" class="cadre">'.$image.'</a> '; 
				}
				$image = $image+1;
				if($image<$nb){
					echo ' <a href="lel.php?image=',$image,'&onCommence=non" class="cadre">'.$image.'</a> '; 
				} 
				$image = $image+1;
				if($image<$nb){
					echo ' <a href="lel.php?image=',$image,'&onCommence=non" class="cadre">'.$image.'</a> ';  
				}
			
				
				echo '
				</div>'; //fin numPage
			
				echo '
				<ul  id="menu">
					<li>						
					'.$img.'
						<ul>'; 
							for($i=0;$i<$nb;$i++){					  
								echo '<li><a href="lel.php?image=',$i,'&onCommence=non">Page '.$i.'</a></li>';	
							}
							echo '
						</ul>
					</li>
				</ul>';
					
				
				
			
		echo '
		</div>'; //fin bandeau2
				
				
				
		echo '
		<div id="content">
			<div id="image">';

	//S'il y a un numéro d'image, je le récupère, sinon, je mets à 0
	


		//J'affiche les images
		echo '<center>';
		if($img+1==$nb){
			echo '<img  src="'.$_SESSION['diaporama'][$img].'" alt="" />';
		}else{
			echo '<a href="lel.php?image=',$img+1,'&onCommence=non"><img  src="'.$_SESSION['diaporama'][$img].'" alt="" /></a>';
		}
	 

		echo '</center>';    

		echo '
	</div>
 
		</div>



Voilà, si vous avez besoin de renseignements supplémentaires, n'hésitez pas, je ne cherche pas à ce qu'on me donne la réponse, mais à ce qu'on m'aide à comprendre la logique, et savoir comment faire. Donc, même juste des aides ou des indices, il ne faut pas hésiter.

Merci beaucoup ( j'adore ce site)
Le lien vers mon site, pour que vous voyez ce que ça donne : Mon site Smiley cligne
Salut

d'après ce que j'ai lu tu ne positionnes pas tes div, donc ils se mettent comme ils peuvent donc les uns sous les autres

j'espère que qq de plus qualifié que moi te corrigera ça

a+
phil
Est-ce que tu sais comment on fait pour positionner des div ?
Car c'est mon gros problème Smiley langue
Merci pour ton aide Smiley smile
Modérateur
Bonsoir inouekun,

Alors par défaut, une div à une comportement de "block" prend toute la place qu'elle peut en largeur. Deux div ne peuvent donc pas etre côte à côte avec leur comportement par défaut : elles s'empilent.

Pour aligner cote a cote deux div il faut par exemple lui donner un display:inline-block;
Avec cette propriété la div prendra la taille de ce qu'elle contient (une phrase par exemple) et les inline-block successif s'empileron jusqu'a remplir la ligne. Pour aligner un inline-block avec un autre on peut les positionner avec vertical-align, mais passons pour le moment.

Float est une propriété un peu spéciale. Elle sort l'élément en question du "flux". Autrement dit il n'est plus vraiment pris en compte par les autres éléments.

Un article très bien sur le contexte de formatage (block, inline-block, float...) et qui expliquera tout ca 1000 fois mieux que moi : http://www.alsacreations.com/astuce/lire/1543-le-contexte-de-formatage-block-en-css.html

Un peu de lecture en plus pour completer : http://www.alsacreations.com/tuto/lire/530-structure-balises-css-display-bloc-block-ligne-inline.html

Bref dans ton cas il faut commencer simple.
Tu as un conteneur #bandeau2.
Dedans on va donc mettre tout tes éléments (sans div inutiles autour), donc un truc qui ressemble à ça si on ne rempli pas les menu pour le moment :
<div id="bandeau2">
	<ul id="idProjet">
		<li>Hibi Chouchou</li>
	</ul>	
	<ul id="numChapitre">
		<li>Chap 29</li>
	</ul>
	<div id="numPage">
		 <span class="cadrePageCourante">0</span> 
		 <a href="lel.php?image=1&amp;onCommence=non" class="cadre">1</a>
		 <a href="lel.php?image=2&amp;onCommence=non" class="cadre">2</a>
		 <a href="lel.php?image=3&amp;onCommence=non" class="cadre">3</a> 
	</div>
	<ul id="menu">
		<li>Page 0</li>
	</ul>
</div>

Tu peux voir ici http://fiddle.jshell.net/z75x0you/ que ton conteneur englobe bien tout et que tes enfants <ul> et <div> s'empile les uns sous les autres (car ul et div on des comportement de type block).
Les <span> et les <a>, eux, on un comportement "inline" et se positionnent donc naturellement sur la même ligne.

On donne maintenant une classe commune a tout les fils du bandeau (les blocs rouges) pour arriver à les placer les uns à coté des autres. On va juste utiliser le display inline-block et voir ce qu'il se passe : http://fiddle.jshell.net/z75x0you/1/

Et... bah voila ! Smiley biggrin

Bon alors dans l'exemple, il y a des padding et margin par défaut et non ton style.
De plus, tout les éléments ont la meme taille (celle du texte) donc ils sont parfaitement alignés naturellement. Si tu constate un mauvais alignement de tes block il suffit de les positionner entre eux avec vertical-align.

Hop quelques changements pour se rapprocher de ton style : http://fiddle.jshell.net/z75x0you/2/

J'ai pris le positionnement en inline-block car je suis familier avec lui mais tu peu aussi te rapprocher du positionnement flexbox (un peu plus dur a maîtriser à mon avis) : http://www.alsacreations.com/tuto/lire/1493-css3-flexbox-layout-module.html


Je ne sais pas si j'ai été très clair, en tout cas, lis ces articles et fouille alscareations pour en trouver d'autres ! Ils sont vraiment bien pour comprendre tout ça.

Bon code ! Smiley murf