28173 sujets

CSS et mise en forme, CSS3

Hello tout le monde,

j'ai un article que j'aimerais présenter sur 3 colonnes, avec une image au milieu qui rogne sur les 2 colonnes du coté.

genre

sssss --------------- sssss
sssss --------------- sssss
sssss --------------- sssss
sssss --------------- sssss
ssssssss ssssssss ssssssss
ssssssss ssssssss ssssssss
ssssssss ssssssss ssssssss

en "-----" ce serait l'image.
Est-ce que vous savez comment je peux faire ça ?
ou est-ce que vous avez un lien vers un tutoriel / code ? ça serait super sympa Smiley smile

merci beaucoup

Eric
Modifié par Bouddha (16 Feb 2007 - 14:49)
Bonjour,

Tu pourrais simplement faire flotter les colonnes latérales (respectivement à gauche et à droite) et laisser l'image dans le flux pour la positionner uniquement à l'aide de marges sur les côtés.
Bouddha a écrit :
Est-ce que vous savez comment je peux faire ça ?

Ça me semble impossible.

Au fait, comment comptes-tu gérer les trois colonnes de textes ?
Florent V. a écrit :

Ça me semble impossible.

Au fait, comment comptes-tu gérer les trois colonnes de textes ?


Hello,
ben justement c'est la question. Naivement je ferais 3 div avec l'image flottante au milieu, mais bon...
sinon je ferais simplement l'image qui épouse la colonne du milieu...
Mon idée était de représenter mon article un peu comme le fait libération dans leur portrait de dernier page, pour ceux qui voient ce que ca donne !

eric
Bonjour,

Juste pour le fun car je ne sais pas si c'est très pratique car la colonne du centre ne "pousse" pas le conteneur. Ca m'a l'air compatible FF et IE6 à 7.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
			
<head> 

<title>Test</title>
<style type="text/css">

*{padding: 0; margin: 0;}

#conteneur {
	overflow: hidden;
	width: 900px;
	margin: auto;
	border: 2px solid black;
	position: relative;
}

#gauche{
	width: 450px;
	overflow: hidden;
	float: left;
	background: transparent;	
}

#gauche_cache_image{
	width: 250px;
	height: 200px;
	float: right;
	background: transparent;
	margin: 15px 0  0 15px;	
}

#droite{
	width: 450px;
	overflow: hidden;
	float: right;
	background: transparent;
}

#droite_cache_image{
	width: 250px;
	height: 200px;
	float: left;
	background: transparent;
	margin: 15px 15px 0 0;		
}

#image{
	width: 500px;
	height: 200px;
	background: blue url(image.jpg);
	position: absolute;
	top: 15px;
	left: 50%;
	margin-left: -250px;
}
 
p{
text-align: justify;

}

#gauche p{
margin:15px 165px 15px 15px;

}	

#droite p{
margin: 15px 15px 15px 165px;

}

#colonne_centre{
	width: 300px;
	background: transparent;
	position: absolute;
	top: 215px;
	left: 50%;
	margin-left: -150px;
	overflow: hidden;
}

#colonne_centre p{
margin: 9px 15px 15px 15px;

}

#image p{
	font-size: 2.5em;
	color: #fff;
	margin-top: 30px;
}

</style>
</head>
<body>

<div id="conteneur">
	<div id="gauche">
		<div id="image">
			<p> Ceci est l'image </p>
		</div>
		
		<div id="colonne_centre">
			<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris orci magna, ultrices ac, condimentum in, molestie quis, nisi. Curabitur sit amet arcu rhoncus nisl tempor interdum. Ut non leo. Sed eros odio, consectetuer sit amet, fringilla sit amet, fringilla a, leo. Duis auctor. Sed vulputate est eu arcu. Aenean augue nulla, blandit a, rutrum sit amet, accumsan eget, mi. Praesent sit amet magna. Duis lobortis sollicitudin enim. Vivamus euismod nulla eu risus.
			</p>
			<p>Vestibulum bibendum ante a dolor suscipit auctor. Cras et augue vel sem congue pharetra. Vivamus posuere turpis. Donec suscipit tellus venenatis lacus. Maecenas nisl arcu, volutpat sit amet, placerat quis, feugiat nec, metus. Duis ornare turpis nec odio. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed sodales, augue vel ultrices pharetra, magna magna adipiscing justo, eu ornare ante augue at magna. Sed sed	   </p>

		</div>
				
		<div id="gauche_cache_image">
		</div>
		<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris orci magna, ultrices ac, condimentum in, molestie quis, nisi. Curabitur sit amet arcu rhoncus nisl tempor interdum. Ut non leo. Sed eros odio, consectetuer sit amet, fringilla sit amet, fringilla a, leo. Duis auctor. Sed vulputate est eu arcu. Aenean augue nulla, blandit a, rutrum sit amet, accumsan eget, mi. Praesent sit amet magna. Duis lobortis sollicitudin enim. Vivamus euismod nulla eu risus.
		</p>
		<p>
Vestibulum bibendum ante a dolor suscipit auctor. Cras et augue vel sem congue pharetra. Vivamus posuere turpis. Donec suscipit tellus venenatis lacus. Maecenas nisl arcu, volutpat sit amet, placerat quis, feugiat nec, metus. Duis ornare turpis nec odio. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed sodales, augue vel ultrices pharetra, magna magna adipiscing justo, eu ornare ante augue at magna. Sed sed lacus. Etiam vehicula diam lobortis augue. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ac ante. Curabitur quis ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed porta tempor mi. Sed feugiat mauris vitae nisi
		<p>
	</div> 
	
	<div id="droite">
		<div id="droite_cache_image">
		</div>
		<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Mauris orci magna, ultrices ac, condimentum in, molestie quis, nisi. Curabitur sit amet arcu rhoncus nisl tempor interdum. Ut non leo. Sed eros odio, consectetuer sit amet, fringilla sit amet, fringilla a, leo. Duis auctor. Sed vulputate est eu arcu. Aenean augue nulla, blandit a, rutrum sit amet, accumsan eget, mi. Praesent sit amet magna. Duis lobortis sollicitudin enim. Vivamus euismod nulla eu risus.
		</p>
		<p>
Vestibulum bibendum ante a dolor suscipit auctor. Cras et augue vel sem congue pharetra. Vivamus posuere turpis. Donec suscipit tellus venenatis lacus. Maecenas nisl arcu, volutpat sit amet, placerat quis, feugiat nec, metus. Duis ornare turpis nec odio. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed sodales, augue vel ultrices pharetra, magna magna adipiscing justo, eu ornare ante augue at magna. Sed sed lacus. Etiam vehicula diam lobortis augue. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin ac ante. Curabitur quis ipsum. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed porta tempor mi. Sed feugiat mauris vitae nisi
		<p>
	</div> 
	
</div>

</div>
</body>
</html>

Bouddha a écrit :
Naivement je ferais 3 div avec l'image flottante au milieu, mais bon...
sinon je ferais simplement l'image qui épouse la colonne du milieu...

Très naïvement, car le positionnement flottant ne permet pas ce genre de prouesse. Et le colonnage d'un même flux de texte est prévu pour CSS 3 (à l'heure actuelle, il y a juste une implémentation expérimentale dans Firefox 1.5+).

Une piste toutefois :
Exercice CSS : un bloc de texte chevauchant deux colonnes
Correction d'exercice : un bloc de texte chevauchant deux colonnes
Mais globalement il faut retenir qu'il n'existe à l'heure actuelle pas de solution correcte pour ce genre de chose en dehors des logiciels de PAO, et que ce type de mise en page est donc réservé aux publications papier.