Besoin d'aide HTML/CSS!

Bonjour,
Je cherche à aligner disposer 3 boites ayant du contenu dans un projet, mais je n’y arrive pas. Quelqu’un peu-il m’aider à aligner la troisième boites avec es 2 autres? Merci.
(Observations : je n’ai pas encore terminé le css pour le formulaire et le pied de page/ mon css n’est pas encore organisé!)

Le code HTML

<!DOCTYPE html>
<html lang="fr">
<head>
	<meta content="text/html; charset=utf-8" http-equiv=Content-Type>
	<title>devoir2</title>
	<link rel="stylesheet" type="text/css" href="devoir2.css">
</head>
<body>
	<div id="wrapper" class="wrapper">
		
		<header id="main-header">
			<div id="logo" class="position-logo float-left">
				<a href="index.html">
					<img src="img/logo.png" width="159" height="67" alt="logo">
				</a>
			</div>
			<nav id="main-nav" class="nav float-right">
				<ul>
					<li class="nav-link"> <a href="#"> Accueil </a> </li>
					<li class="nav-link"> <a href="#"> Présentation </a> </li>
					<li class="nav-link"> <a href="#"> Agenda </a> </li>
					<li class="nav-link"> <a href="#"> Blog </a> </li>
					<li class="nav-link"> <a href="#"> Dans la presse </a> </li>
				</ul>
				<div class="clear"> </div>
			</nav>
			<div id="slogan" class="main-slogan">
				<h1 class="main-slogan1"> I.R.E.</h1>
				<h2 class="main-slogan2"> Institut Recherche Environnement</h2>
				<h3 class="main-slogan3"> Le meilleur de la science au service de la terre</h3>
			</div>
			<div class="clear"> </div>
		</header>
		<main id="main" class="main">
			<div id="box1" class="box1">
				<img src="img/contenu-img-1.jpg" width="370" height="273" alt="contenu-img-1" class="float-left img-left1">
				<figure>
					<img src="img/product-01.png" width="184" height="187" alt="product-01" class="float-right" > 	
					<figcaption> 
						<div class="title-rapport"> Rapport annuel 2017 </div>
						<div class="telecharger"> Télécharger </div> 
					</figcaption>
				</figure>
				<section>
					<header>
						<h2> Une dizaine de militaires armées</h2>
						<p class="meta">
						<span class="meta-auteur"> Antoine Dellec </span>
						<span class="meta-date"> , le 27 avril 2025 </span>
					</header>
				</section>
				<section>
					<p> <span> Il allait peut-être perdre Florence avant même de lui avoir avoué son amour. Il devait empêcher Prélude de continuer dans son délire. Mais comment pouvait-il stopper ce parasite créé par lui quelques années auparavant? </span> 
				</section>		
				<div class="clear"> </div>
			</div>
			
			<div id="box2" class="box2">
				<img src="img/contenu-img-2.jpg" width="370" height="273" alt="contenu-img-2"  class="float-left img-left1">
				<figure>
					<img src="img/product-01.png" width="184" height="187" alt="product-01" class="float-right">
					<figcaption>
						<div class="title-rapport"> Rapport annuel 2016 </div>
						<div class="telecharger"> Télécharger </div>	
					</figcaption>
				</figure>
				<section>
					<header>		
						<h2> Informaticienne chevronnée </h2>
						<p class="meta"> 
						<span class="meta-auteur"> Dider Paltier Dellec </span>
						<span class="meta-date"> , le 12 mai 2002 </span>
					</header>
				</section>
				<section>
					<p> <span> Interloqué, David ne sait pas quoi répondre. En effet, il connaît un certain Prélude : lui. C'était le pseudo qu'il utilisait das sa jeunesse d'informaticien. Tous ses amis de l'époque le connaissait sous ce nom. </span>
				</section>
				<div class="clear"> </div>
			</div>	
			
			<div id="box3" class="box3">
				<figure>
				<img src="img/saut.jpg" width="480" height="480" alt="saut" class="float-left img-left2"> 
				<figcaption>
					<h2> Le saut </h2>
					<h3> La chute du sot sans seau </h3>
					<h2> sauter </h2>
				</figcaption>
				</figure>	
				<div id="container-vignettes" class="container-vignettes float-right">
					<div class="vignette float-left">
						<figure>
							<img src="img/book-01.jpg" width="120" height="157" alt="book-01" class="img-book">
							<figcaption>
							<div class="title-livre"> Bois </div>
							<div class="consulter"> Consulter </div>
							</figcaption>
						</figure>	
					</div>
					<div class="vignette float-left"> 
						<figure>
							<img src="img/book-02.jpg" width="120" height="157" alt="book-02" class="img-book">
							<figcaption>
							<div class="title-livre"> Sable </div>
							<div class="consulter"> Consulter </div>
							</figcaption>
						<figure>	
					</div>	
					<div class="vignette float-left">
						<figure>
							<img src="img/book-03.jpg" width="120" height="157" alt="book-03" class="img-book">
							<figcaption>
							<div class="title-livre"> Rivière </div>
							<div class="consulter"> Consulter </div>
							</figcaption>
						</figure>	
					</div>
					<div class="vignette float-left">
						<figure>
							<img src="img/book-04.jpg" width="120" height="157" alt="book-04" class="img-book">
							<figcaption>
							<div class="title-livre"> Pierre </div>
							<div class="consulter"> Consulter </div>
							</figcaption>
						</figure>	
					</div>
					<div class="clear"> </div>
				</div>
				<div class="clear"> </div>					
			</div>
			
			<div id="contact" class="contact clearfix">
				<h2> Demande d'information </h2>
				<form action="#" method="post">
					<fieldset>
						<input id="nom" placeholder="Nom" type="text" autocomplete="on" required autofocus >
						<input id="prenom" placeholder="Prénom" autocomplete="on" required type="text" >
						<input id="email" placeholder="Email" type="email" required >
						<textarea id="message" placeholder="Un message"  autocomplete="on" > </textarea>
						<input value="Envoyer" type="submit">
					</fieldset>	
				</form>
			</div>
		</main>
		
		<footer>
			<div id="footer" class="footer">
				<nav id="nav-footer" class="nav-footer">
					<ul>
						<li> <a href="#"> Contact </a> </li>
						<li> <a href="#"> Newsletter </a> </li>
						<li> <a href="#"> Qui sommes-nous? </a> </li>
						<li> <a href="#"> Applis mobile et tablette </a> </li>
						<li> <a href="#"> FAQ </a> </li>
					</ul>	
				</nav>
			</div>
		</footer>
	</div>
</body>
</html>	

Le code CSS

*{
	padding: 0;
	margin: 0;
	box-sizing: border-box;
}
ul, li{
	list-style: none;
}
h2{
	font-size: 30px;
}
.clear{
	clear: both;
}
.wrapper{
	margin: 0 auto;
	font-family: arial, helvetica, sans-serif, times new roman;
	background: url("img/bkgd_page.jpg") no-repeat top center, #f6f6f6; 
	width: 1400px;
}


.position-logo{
	padding-top: 25px;
	padding-left: 192px;
}
.nav{
	width: 500px;
	margin: 0 auto;
	margin-right: 100px;
	padding-top: 60px;
	}
	
.nav li{
	float: left;
}
.nav-link a{
	display: block;
	color: #f6f6f6;
	padding: 5px 10px;
	text-decoration: none;
	text-align: center;
	border: 1px dotted #f6f6f6;
	font-size: 14px;
	
}
.nav-link a:hover{
	color: 	#0066ff;
	background-color : #ffff;
}
.main-slogan{
	color: #fff;
	text-align: center;
	padding-top: 200px;
}
.main-slogan1{
	font-size: 50px;
	font-weight: bold;
}
.main-slogan2{
	font-family: times new roman;
	font-size: 30px;
	color: #f6f6f6;
}
.main-slogan3{
	font-family: times new roman;
	font-size: 15px;
	color: #f6f6f6;
}
.main{
	width: 1024px;
	min-height: 940px;
	margin: 0 auto;
	margin-top: 60px;
	background-color: #f6f6f6;
}
.box1{
	padding: 50px 22px 10px 22px;
}
.box2{
	padding: 20px 22px 10px 22px;
}
.box3{
	padding: 80px 22px 10px 22px;
	
	}
	
	
.float-left{
	float: left;
}
.float-right{
	float: right;
}

.img-left1{
	margin: 0px 8px 0px 0px;
	border: 3px solid #000;
}
.img-left2{
	margin: 0px 10px 0px 0px;
	border: 1px solid #000;
}

.img-left1:hover{
	opacity: 0.5;
}

.box3 figure{	
	float: left;
	width: 480px;
	height: 480px;
	position: relative;  
}
.box3 figcaption{
	display: none;
	color:#fff;
	text-align: center;
	position: absolute;
	top: 180px;
	right: 0;
	left: 0;
	bottom: 0;
}
.box3 figure:hover figcaption{
	display: block;
}	
	
	
.meta{
	margin: 5px 10px 5px 0px;
}


figure{
	float: right;
	border: none;
	display: table;
	width: 200px; 
	margin: auto;
	height: 200px;
	text-align: center;
	margin:10px 40px 10px 40px;
	
}

figcaption{
	display: table-caption;
	caption-side: bottom;
}
.title-rapport, .telecharger{
	margin: 5px;
	}

.telecharger{
	font-size: 10px;
	color: #a22755;
}
.meta-auteur{
	color: #38b4b4;
}
.meta-date{
	color: #aaa;
}
.container-vignettes{
	width: 480px;
	height: 480px;
	border: none;
	margin: 0px 0px 0px 10px;

	
	

}
.vignette{
	float: left;
	border: 5px solid #305a47;
	background-color: #ddeae4;
	width: 240px;
	height: 240px;
	}
.vignette:nth-child(odd){
	border-right: 0px solid #305a47;
	}
.vignette: nth-child(n){
	border-bottom: 0px solid #305a47;
}
.img-book {
	margin:5px 60px 10px 60px;	
}
.vignette figure{
	float:left;
	border: none;
	display: table;
	width: 235px;
	height: 235px;
	margin: auto;
	text-align: center;
}
.vignette figcaption{
	display: table-caption;
	caption-side: bottom;
}
.title-livre .consulter{
	margin: 5px;
}	
.title-livre{
	color: #000;
}
.consulter{
	font-size: 10px;
	color: #a22755;
}

Je ne comprends pas votre question, quelles boîtes? Est-ce qu’l s’agit de box1, box2 et box3?
Alignement, vous voulez mette les boîtes l’un à côté de l’autre ou est-ce que j’ai mal compris?

Karin

Ok, ce que je veux réaliser c’est ça. Il s’agit d’aligner les boites 1, 2 et 3 déjà.

J’ai changé ma réponse en haut. Donc, vous voulez que le container-vignettes se trouve à côté de la figure ? C’est ça?

Oublies les float left and right.
Prends les box que tu veux aligner tu les mets dans un “wrapper”
<div class="wrapper">box box box</div>
ensuite dans le css tu peux le display en flexbox
genre

.wrapper {
display: flex;
flex-direction: (ca peux etre column ou row)

Et je t’invite a chercher plus d’infos sur flexbox et grid (les float c’est pas fait pour le layout d’une page :slight_smile: et ça va changer ta vie !)
edit: si tu veux les centrer justify-content: center; align-items: center;

Tu peux déjà utiliser un width avec des %. Et je suis d’accord avec fRemold, display flex et grid sont facile à apprendre et ils vont résoudre votre problème.

Karin

pas du tout, qu’elle soit en dessous comme sur l’image (je me suis sans doute mal exprimé avec “aligner”!!). Je n’arrive “aligner en dessous” le container-vignettes avec les autres du dessus…

Merci, mais je débute, alors flexbox je connais mais pas grid! Mais je vais essayer avec flex …

Pardon d’insister, mais si je veux quand même utiliser les float, que faudrait il corriger pour résoudre mon problème, à savoir aligner les 3 boites les unes en dessous des autres? Merci pour votre réponse…

Utilisé flexbox dans css

J’ai déjà essayé utilisant ces conseils de Remold:

Oublies les flottent à gauche et à droite.
Prends les box que tu veux aligner tu les mets dans un «wrapper» ensuite
<div class="wrapper">box box box</div>
dans le css tu peux le display en flexbox
genre

…mais ça ne marche pas. J’ai peut être mal utilisé ce qu’il me dit:
<div class=wrapper"> box1 box2 box3
Est-ce correct ceci? comment l’utiliser dans mon code?
Et dès lors faut-il supprimer tous les flottements sur (et pas dans les boites)?
merci de votre réponse

J’ai réalisé une mini page qui si j’ai bien compris ton problème devrait le régler.


Pour ce qui est de la propriété float elle existe pour permettre d’avoir un paragraphe avec d’autres éléments “flottants” autour ( ex: une photo, ou l’inverse une photo avec un paragraphe “flottants” à coté).
Si elle a été utilisé pour faire de la mise en page c’est parce qu’à l’époque il n’y avait pas d’autres moyens.
Mais aujourd’hui nous avons ‘flexbox’ et ‘grid’ qui sont 2 outils trés puissant qui sont justement là pour de la mise en page.

Merci Remold pour cette mini page. En théorie elle est très pratique. Mais après l’avoir appliqué à mon projet-bien complexe- rien n’a bougé!!
Peu-tu essayer toi de ton côté (à partir du code envoyé au début) et me faire parvenir le résultat? Ce serait un beau geste de ta part…Merci grandement!

C’est simple ton wrapper s’apelle “main” (t’as pas besoin de donner des id et des classes à chaque élément et t’utilises des span dans tous les sens c’est pas nécessaire non plus).
Du coup tu as juste à appliquer display: flex; et les autres propriétés sur ta classe main mais tu vas peut-etre devoir adapter ton code.
Je t’invite à lire les cours de freeCodeCamp au besoin.
Mais si je le fais pour toi c’est trop facile et j’y gagne rien ;), toi par contre t’apprendras pas mal.

Bonjour Remold ou autres,

J’ai essayé l’approche avec flex, mais ça ne marche toujours pas…
J’ai fait apparaitre un bord autour de chacune de mes 3 boites et j’ai réalisé que le problème vient du contenu de la 3eme boite.
En appliquant un flex uniquement sur la boite 3, le container vignette adopte toutses sortes de comportements (se coupe en 2) et refuse de se mettre à cote de la photo, qui elle refuse le padding de 22px que je lui donne.
Donc, ne voyant pas l’erreur, est-il possible que quelqu’un examine de près le html de la boite 3 ainsi que le css correspondant et me dise ce qui ne va pas car je suis désespéré et il faut que je finalise ce projet.
Merci de votre aide…

Body{
Display:flex;
Min-height:300px; //important
Justify-content:center;
align-item:center;

Ok, ton code devrait refleter cette disposition,
le noir c’est ton wrapper, le rouge box1, le jaune box2, le bleu box3.
Ce qui n’est pas le cas, c’est la raison pour laquelle flex ne marche pas.
Une fois que tu as bien mis en ordre ton code tu devrais pouvoir faire ce que tu veux.
Et ensuite dans chaque box tu peux disposer de tes elements comme tu le souhaites.

<wrapper>
    <box1>
       <img>
       <figure>
        etc
    </box1>
    <box2>
      contenu
    </box2>
    etc
</wrapper>

Merci Remold pour cette proposition, mais comme tu as vu, j’ai considéré que la boite rouge en comportait 2, ce qui peut aussi se concevoir…
Bref, j’ai réussi à résoudre la difficulté en faisant apparaitre des bordures provisoires sur toutes les boites et même sur les figcaption. Et là j’ai réalisé qu’il fallait simplement mettre une margin: 0px 5px 0px 0px; sur .box3 figure et non sur .img-left2 comme je le faisais.
En effet sur img-left2 j’avais collé une figure pour une légendre qui devait apparaitre en hover. c’est donc . box3 figure qu’il fallait cibler pour la marge et non l’image seule.
Donc, tout fonctionne à merveille et j’ai fini le projet.
Merci quand même pour l’approche du “flex” que je vais retenir, et il y aussi celle du “clearfix”.