28172 sujets

CSS et mise en forme, CSS3

Bonjour,

J'ai effectué une mise en page avec trois colonnes.
Il s'agit d'une largeur fixe de 780 px avec un positionnement en float à dte et à gche. Le div central est fluide.
Et j'ai un problème avec les colonnes de droite et de gauche qui ne commencent pas au même niveau que ma colonne centrale. Elles sont décalées en haut.

Je joins une image au post pour illustrer le pb.

Et voici le code :

<head>
		<title>Document sans nom</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="../css/layout.css" />
        <style type="text/css">
			html { background: #FED6FE; }
			body { font: 100% Verdana, Arial, Helvetica, sans-serif; color: #993399; text-align: center; }
			div#container { width: 780px; /*background-color: #FFFFFF;*/ margin: 0 auto; padding: 0; text-align: left; }
			div#branding { margin: 0; padding: 0; background-color: #CCCCFF; }
			div#content { width: 100%; margin: 0; padding: 0; }
			div#pathway { margin: 0; padding: 0; background-color: #CCCCFF; }
			div#content_menu { float: left; width: 150px; background-color: #CC99CC; }
			div#content_sub { float: right; width: 150px; background-color: #CCFFFF; }
			div#content_main { margin-left: 160px; 	margin-right: 160px; padding: 0; background-color: #FFCCCC; }
			div#site_info { margin: 0; padding: 0; clear: both; background-color: #CC00CC; }
			
		</style> 		
	</head>




<body>    
    	<div id="container">
        	<div id="branding">Branding</div>
            ...
            <div id="content">
            	<div id="pathway">Pathway line</div>
            	<div id="content_menu">
                	<h3>Left column</h3>
                    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse eu urna non ipsum malesuada congue. Nunc eu ligula non nisl faucibus dictum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In sem. Curabitur fringilla dolor eget massa. Vestibulum feugiat, tellus at rutrum tempor, sapien mi condimentum metus, at blandit lorem ligula eget quam. Fusce commodo tortor eget metus. Cras ut mauris. Suspendisse quam. Donec varius libero ut purus. Aliquam erat volutpat. Praesent eu felis. Curabitur eu erat in enim euismod faucibus. Duis a tortor sed arcu scelerisque bibendum. Suspendisse suscipit egestas nunc. Nullam nulla lorem, convallis at, adipiscing vitae, rhoncus et, sem. Ut vulputate. Duis at ipsum. Maecenas in lectus sed lacus malesuada laoreet.</p>
                </div>
                <div id="content_sub">
                	<h3>Right column</h3>
                    	<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse eu urna non ipsum malesuada congue. Nunc eu ligula non nisl faucibus dictum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In sem. Curabitur fringilla dolor eget massa. Vestibulum feugiat, tellus at rutrum tempor, sapien mi condimentum metus, at blandit lorem ligula eget quam. Fusce commodo tortor eget metus. Cras ut mauris. Suspendisse quam. Donec varius libero ut purus. Aliquam erat volutpat. Praesent eu felis. Curabitur eu erat in enim euismod faucibus. Duis a tortor sed arcu scelerisque bibendum. Suspendisse suscipit egestas nunc. Nullam nulla lorem, convallis at, adipiscing vitae, rhoncus et, sem. Ut vulputate. Duis at ipsum. Maecenas in lectus sed lacus malesuada laoreet.</p>
                </div>
                <div id="content_main">
                	<h3>Central column</h3>
                    	<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse eu urna non ipsum malesuada congue. Nunc eu ligula non nisl faucibus dictum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In sem. Curabitur fringilla dolor eget massa. Vestibulum feugiat, tellus at rutrum tempor, sapien mi condimentum metus, at blandit lorem ligula eget quam. Fusce commodo tortor eget metus. Cras ut mauris. Suspendisse quam. Donec varius libero ut purus. Aliquam erat volutpat. Praesent eu felis. Curabitur eu erat in enim euismod faucibus. Duis a tortor sed arcu scelerisque bibendum. Suspendisse suscipit egestas nunc. Nullam nulla lorem, convallis at, adipiscing vitae, rhoncus et, sem. Ut vulputate. Duis at ipsum. Maecenas in lectus sed lacus malesuada laoreet.</p>
            </div>
            ...
            <div id="site_info">
            	<h3>Footer</h3>
            </div>
        </div>       
	</body>
    
</html>[url=upload/18117-pbfloat.jpg][img]upload/18117-pbfloat.jpg[/img][/url] 



Merci d'avance,

Lou
Modifié par lou64 (13 Oct 2008 - 22:35)
Bonjour Florent,

Merci pour ces explications très utiles.
J'ai lu la page conseillée et j'ai appliqué les solutions citées sur l'élément parent (ici : div#content) : border, padding et overflow. Malheureusement aucune de ces solutions n'a fonctionné.

J'ai trouvé une solution en faisant "floater" le conteneur div#content_main (cf image) mais j'aurai préféré seulement la définition de marges latérales pour le conteneur div#content_main.
A bien y réfléchir et puisqu'il s'agit d'un design à largeur fixe, je vais essayer de retirer les floats de tous les conteneurs.

Bon pour l'instant le code en est ici :

<head>
		<title>Document sans nom</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <link rel="stylesheet" type="text/css" href="../css/layout.css" />
        <style type="text/css">
			html { background-color: #FED6FE; }
			body { font: 100% Verdana, Arial, Helvetica, sans-serif; color: #993399; text-align: center; }
			
			div#container { width: 780px; margin: 0 auto; padding: 0; text-align: left; }
			div#branding { margin: 0; padding: 0; background-color: #CCCCFF; }
			div#content { width: 100%; margin: 0; padding: 0; overflow: hidden; }
			div#pathway { margin: 0; padding: 0; background-color: #CCCCFF;  }
			div#content_menu { float: left; width: 150px; margin: 3px 3px 3px 0; padding: 0; background-color: #CC99CC; }
			div#content_sub { float: right; width: 150px; margin: 3px 0 3px 3px; padding: 0; background-color: #CCFFFF; }
			div#content_main { float: left; width: 466px; margin: 3px 0 3px 0; padding: 0; background-color: #FFCCCC; }
			div#site_info { margin: 0; padding: 0; clear: both; background-color: #CC00CC; }
			
			div#content_menu, div#content_sub, div#content_main h3 { padding: 2px; }
			div#content_main p { padding: 2px; }			
		</style> 		
	</head>

	<body>    
    	<div id="container">
        	<div id="branding">Branding</div>
            ...
            <div id="content">
            	<div id="pathway">Pathway line</div>
            	<div id="content_menu">
                	<h3>Left column</h3>
                    <ul>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
   				    </ul>
                </div>
                <div id="content_sub">
                	<h3>Right column</h3>
                    <ul>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
   				    </ul>
                </div>
                <div id="content_main">
                	<h3>Central column</h3>
                    	<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse eu urna non ipsum malesuada congue. Nunc eu ligula non nisl faucibus dictum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In sem. Curabitur fringilla dolor eget massa. Vestibulum feugiat, tellus at rutrum tempor, sapien mi condimentum metus, at blandit lorem ligula eget quam. Fusce commodo tortor eget metus. Cras ut mauris. Suspendisse quam. Donec varius libero ut purus. Aliquam erat volutpat. Praesent eu felis. Curabitur eu erat in enim euismod faucibus. Duis a tortor sed arcu scelerisque bibendum. Suspendisse suscipit egestas nunc. Nullam nulla lorem, convallis at, adipiscing vitae, rhoncus et, sem. Ut vulputate. Duis at ipsum. Maecenas in lectus sed lacus malesuada laoreet.</p>
                        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse eu urna non ipsum malesuada congue. Nunc eu ligula non nisl faucibus dictum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In sem. Curabitur fringilla dolor eget massa. Vestibulum feugiat, tellus at rutrum tempor, sapien mi condimentum metus, at blandit lorem ligula eget quam. Fusce commodo tortor eget metus. Cras ut mauris. Suspendisse quam. Donec varius libero ut purus. Aliquam erat volutpat. Praesent eu felis. Curabitur eu erat in enim euismod faucibus. Duis a tortor sed arcu scelerisque bibendum. Suspendisse suscipit egestas nunc. Nullam nulla lorem, convallis at, adipiscing vitae, rhoncus et, sem. Ut vulputate. Duis at ipsum. Maecenas in lectus sed lacus malesuada laoreet.</p>
                </div>                   
            </div>
            ...
            <div id="site_info">Footer</div>
        </div>       
	</body>
    
</html>


Voilà pour l'image :

http://img391.imageshack.us/my.php?image=solfloatfc8.jpg
Bonjour,

J'ai refait la mise en page en testant l'autre solution : positions absolute et relative + marges latérales pour le conteneur div#content_main.

Et je retombe sur le même problème : il y a fusion des marges verticales des conteneurs div#content et div#content_main ...

Là aussi j'ai essayé d'appliquer les solutions données par Florent sur le conteneur div#content mais je n'ai pas réussi.

Est-ce que quelqu'un sait comment solutionner ce problème?

D'autre part, je voudrais savoir pourquoi il n'y a pas de fusion des marges verticales avec les conteneurs div#content_menu et div#content_sub comme avec div#content_main, maintenant qu'il n'y a plus de "float"?

Merci d'avance,

Lou


<style type="text/css">
			html { background-color: #FED6FE; }
			body { font: 100% Verdana, Arial, Helvetica, sans-serif; color: #993399; text-align: center; }
			
			div#container { position: relative; width: 780px; margin: 0 auto; padding: 0; text-align: left; }
			div#branding { margin: 0; padding: 0; background-color: #CCCCFF; }
			div#content { width: 100%; margin: 0; padding: 1px 0; overflow: hidden; }
			div#pathway { margin: 0; padding: 0; background-color: #CCCCFF; }
			div#content_menu { position: absolute; width: 150px; left: 0; margin: 3px 3px 0 0; padding: 0; background-color: #CC99CC; }
			div#content_sub { position: absolute; width: 150px; right: 0; margin: 3px 0 0 3px; padding: 0; background-color: #CCFFFF; }
			div#content_main { margin-left: 156px; margin-right: 156px; margin-top: 0px; padding: 0; background-color: #FFCCCC; }
			div#site_info { margin: 0; padding: 0; clear: both; background-color: #CC00CC; }
			
			div#content_menu, div#content_sub, div#content_main h3 { padding: 2px; }
			div#content_main p { padding: 2px; }	
		</style> 		
	</head>

	<body>    
    	<div id="container">
        	<div id="branding">Branding</div>
            ...
            <div id="content">
            	<div id="pathway">Pathway line</div>
            	<div id="content_menu">
                	<h3>Left column</h3>
                    <ul>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
   				    </ul>
                </div>
                <div id="content_sub">
                	<h3>Right column</h3>
                    <ul>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
        				<li>Lorem ipsum dolor sit amet</li>
   				    </ul>
                </div>
                <div id="content_main">
                	<h3>Central column</h3> 
                    	<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse eu urna non ipsum malesuada congue. Nunc eu ligula non nisl faucibus dictum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In sem. Curabitur fringilla dolor eget massa. Vestibulum feugiat, tellus at rutrum tempor, sapien mi condimentum metus, at blandit lorem ligula eget quam. Fusce commodo tortor eget metus. Cras ut mauris. Suspendisse quam. Donec varius libero ut purus. Aliquam erat volutpat. Praesent eu felis. Curabitur eu erat in enim euismod faucibus. Duis a tortor sed arcu scelerisque bibendum. Suspendisse suscipit egestas nunc. Nullam nulla lorem, convallis at, adipiscing vitae, rhoncus et, sem. Ut vulputate. Duis at ipsum. Maecenas in lectus sed lacus malesuada laoreet.</p>
                        <p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Suspendisse eu urna non ipsum malesuada congue. Nunc eu ligula non nisl faucibus dictum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In sem. Curabitur fringilla dolor eget massa. Vestibulum feugiat, tellus at rutrum tempor, sapien mi condimentum metus, at blandit lorem ligula eget quam. Fusce commodo tortor eget metus. Cras ut mauris. Suspendisse quam. Donec varius libero ut purus. Aliquam erat volutpat. Praesent eu felis. Curabitur eu erat in enim euismod faucibus. Duis a tortor sed arcu scelerisque bibendum. Suspendisse suscipit egestas nunc. Nullam nulla lorem, convallis at, adipiscing vitae, rhoncus et, sem. Ut vulputate. Duis at ipsum. Maecenas in lectus sed lacus malesuada laoreet.</p>
                </div>                   
            </div>
            ...
            <div id="site_info">Footer</div>
        </div>       
	</body>
    
</html>
Bonsoir,

Problème résolu Smiley lol

Pour répondre à mes questions Smiley cligne :

1. il n'y a pas de fusion des marges verticales avec les conteneurs div#content_menu et div#content_sub car les conteneurs sont positionnés en "absolute"

2. la fusion des marges latérales concernait le conteneur div#content_main et des éléments enfants et non pas le conteneur div#content_main et son élément parent.

A partir de là, j'ai pu employé les méthodes suivantes sans problème pour aligner mon conteneur : overflow ou padding-top ou border-top.

Bonne soirée.