28173 sujets

CSS et mise en forme, CSS3

Bonjour !

Me revoilà à vous soliciter après de long mois d'absense sur alsacréations !

Voilà sa fait des heures que je planche sur un problème.
Impossible à résoudre !

Site en question : -www.design-graph.info
Problème : Mise en page - sous firefox tous marche bien, mais sous ie rien ne va

Il y a des problèmes avec les boîte flottantes et les séparateurs hr suite à la création (dans le div contenu) d'un block gauche qui contiend tu texte, et d'un block droit.

Sous Internet Explorer (6) tous ce qui est après la balise ces div gauche et droit ce retrouve après le menu de gauche :

http://zea.yoopix.org/thmb/1174509355/213208108/78/bug-ie.png

Code source :


<div id="all">
    <div id="header">
	    <div id="menu_horizontal">
            <ul id="mh">
			    <li><b>Rubriques</b></li>
			    <li><a href="index.php" title="">Accueil</a></li>
			    <li><a href="kits.html" title="">Tous les kits</a></li>
				<li><a href="dossiers.html" title="">Nos dossiers</a></li>
				<li><a href="outils.html" title="">Outils Webmaster</a></li>
			</ul>
		</div>
	</div> 
	<div id="menu">
	    <div class="elements">

// Contenu du menu
// Pub google

            </div>
	</div>

    <div id="corp">
		<div id="corp2">
		
		<div id="gauche_index">
		<h2>Design-Graph.info</h2>
		<p>Curabitur vestibulum nibh ac pede. Ut at turpis eget eros cursus commodo. Aenean consectetuer. Donec at lacus. Maecenas adipiscing, mauris in pellentesque faucibus, est nulla gravida nunc, vitae laoreet 
		erat elit ut lacus. In scelerisque augue sed nisi. Ut tempus ipsum in arcu.
		<br />
		<br />
		Quisque quis sapien sit amet sapien hendrerit tempus. Phasellus odio. 
		Pellentesque vitae enim. Maecenas tincidunt, massa ac accumsan viverra, augue metus vulputate erat, non faucibus tellus metus malesuada est.</p>
		</div>
		<div id="droite_index">
		    <ul id="index_gauche">
		        <li>
		            <table cellpadding="0" cellspacing="0" border="0" bgcolor="#d2d2d2">
   		                <tr>
	    		            <td align="center">
            		            <table cellpadding="3" cellspacing="1" border="0">
			    		            <tr>
				    		            <td align="center" bgcolor="#f0f0f0">
				        		            <b>Kit du jour</b><br />
				        		            <a href="http://www.cibleclick.com/cibles/clicks/symp.cfm?site_id=92317478&friend_id=463428707&redir=cibleclick_jour.html"><img src="http://www.kitgrafik.com/kits/captures/kit_jour.jpg" border=0 widht=100 height=75 hspace=3 vspace=3 onload=this.style.filter='progid:DXImageTransform.Microsoft.Shadow(color=#000000,direction=135,strength=3)'></a>
				    		            </td>
						            </tr>
					            </table>
        		            </td>
			            </tr>
		            </table>
		        </li>
		        <li>
		            <table cellpadding="0" cellspacing="0" border="0" bgcolor="#d2d2d2">
    		            <tr>
	    		            <td align="center">
            		            <table cellpadding="3" cellspacing="1" border="0">
			    		            <tr>
				    		            <td align="center" bgcolor="#f0f0f0">
				        		            <b>Meilleur kit</b><br />
				        		            <a href="http://www.cibleclick.com/cibles/clicks/symp.cfm?site_id=92317478&friend_id=463428707&redir=cibleclick_top.html"><img src="http://www.kitgrafik.com/kits/captures/kit_top.jpg" border=0 widht=100 height=75 hspace=3 vspace=3 onload=this.style.filter='progid:DXImageTransform.Microsoft.Shadow(color=#000000,direction=135,strength=3)'></a>
				    		            </td>
			    		            </tr>
					            </table>
        		            </td>
			            </tr>
		            </table>
				</li>
				<li>
				<br />
				<div style="margin-left:7px;">
				    <a href="#" title="Voir d'avanatge de kits graphiques ?"><img alt="Voir davantge de kits graphiques ?" src="http://www.design-graph.info/images/davantage_kits.png" /></a>
			    </div>
				</li>
		    </ul>
		<span class="spacer">-</span>
		</div>
		
		</div>
    </div>

    <div id="footer">...</div>
</div>


CSS : http://www.design-graph.info/includes/style.css

Je peux solutionner le problème en ajoutant simplement position : absolute dans le menu :

.elements
{
   padding-left: 30px;
   position: absolute;
}


Problème : Le bas de page, malgré le clear both après le menu comme il devrait faire, c'est le menu qui passe dessus le bas de page. Smiley sweatdrop

Je ne comprend pas !?

D'où viens mon erreur !
Je veux simplement aligner deux div horizontalement !
Modifié par guicara (22 Mar 2007 - 18:34)
Bonsoir,
sans evoquer la structuration un peu compliquée de la page,
tu es confronté a un bug spécifique à IE lié au concept de haslayout.
Tu dois ajouter une propriété conférant le layout.
Celle-ci devrait être placée en dans une feuille de style en commentaire
conditionnels (voir la FAQ) qui ne cible que IE6 voire IE6 et 7.

div#corp2 {
    overflow:hidden;
    height:1%;
}
Merci hermann !

J'ai mis ce code comme tu me l'a dit :

<!--[if IE]>
   <STYLE type="text/css">
div#corp2 {
    overflow:hidden;
    height:1%;
}
  </STYLE>
<![endif]-->


...et tous marche très bien sous IE désormais !

A bientôt, et vive Firefox Smiley lol
Bonjour,
tu dois marquer ton message comme [résolu]

La syntaxe XHTML étant plus rigoureuse, tu dois mettre toutes tes balises et attributs
en minucule. Il convient aussi d'ajouter le média screen si toutefois tu ne souhaites
pas que ta mise ne page soit indentique à l'impression.
Tu vises toutes les version d'IE, y compris les futurs versions qui
auront sans doute corrigé ce bug, tu devrais donc cibler d'avantage:
lt(less than) IE 7 : toute les version d'IE infèrieur à la 7:

<!--[if lt IE 7]>
   <style type="text/css" media="screen">
div#corp2 {
    overflow:hidden;
    height:1%;
}
  </style>
<! endif -->

Pour inclure aussi IE7 :
<!--[if lte IE 7]>
lte (less than, equal)
Modifié par Hermann (22 Mar 2007 - 16:39)
Merci pour ton aide, j'ai corriger mon erreur.
Mes balises sont en minuscules, non ?

J'ajouterais média screen comme tu le conseil dés que j'aurais du temps Smiley ravi
À vrai dire non, il ne s'agit pas d'un bug de HasLayout.

Je n'ai pas eu le temps de tester en profondeur, mais il me semble que c'est un problème dans la prise en compte du clear:both; appliqué au span portant la classe "spacer" : le clear va s'appliquer en dehors du bloc parent, et l'élément en clear: both vient se positionner en dessous du menu flottant à gauche qui le précède dans le code HTML.

Laurent Denis a écrit un article traitant de ce problème :
Float, clear et contextes de formatage.

La solution préconisée par Hermann est la bonne (c'est celle mise en avant par Laurent Denis). Son seul rapport avec le HasLayout est que l'on utilise le HasLayout pour émuler le comportement d'un contexte de formatage pour IE 5-6. Il ne s'agit donc pas d'un bug de HasLayout, mais d'une utilisation du HasLayout pour corriger un comportement fautif.


Edit : en fait non, Hermann n'a pas écrit « bug de HasLayout » mais « bug lié au concept de HasLayout ». Ce qui est moins faux, mais pas juste pour autant. Le bug lui-même n'est absolument pas lié au HasLayout : seule la solution adoptée a un rapport avec ce concept (on aurait pu choisir une autre solution, sans utilisation du HasLayout, et auquel cas plus le moindre rapport entre ce bug et le HasLayout...).
Modifié par Florent V. (22 Mar 2007 - 23:06)
Oui tu as en effet trouvé la source du problème Smiley cligne
N'ayant pas eu trop de temps pour essayer d'en connaître le symptôme,
je suis allé un peu vite en besogne, mais l'essentiel est fait.
J'avais pas fais attention mais l'overflow:hidden permettait de créer
un contexte de formatage bloc comme le fait overflow:auto, il lui manquait
donc plus qu'une propriété conférant le layout pour IE.

D'ailleurs à ce propos, je n'ai pas pu tester sur IE7.
Sais tu si ce bug (ou je ne sais pas comment on peut appeler ça)
est encore présent sur IE7?
Modifié par Hermann (23 Mar 2007 - 01:27)
Hermann a écrit :
D'ailleurs à ce propos, je n'ai pas pu tester sur IE7.
Sais tu si ce bug (ou je ne sais pas comment on peut appeler ça)
est encore présent sur IE7?

IE7, contrairement à IE6, crée bien un contexte de formatage pour une overflow: auto ou un overflow: hidden. Donc pas besoin de correctif.
Florent V. a écrit :

IE7, contrairement à IE6, crée bien un contexte de formatage pour une overflow: auto ou un overflow: hidden. Donc pas besoin de correctif.

Pas très clair, cela signifie alors qu'il faut quand même avoir recours au
overflow pour IE7?
Hermann a écrit :
Pas très clair, cela signifie alors qu'il faut quand même avoir recours au overflow pour IE7?

Il faut avoir recours au overflow pour IE7 de même que pour les autres navigateurs, si le problème se pose sur tous les navigateurs. Dans le cas présent il me semble qu'il y avait déjà un overflow englobant (entre autres) le spacer, donc pas de correctif pour IE7.

Pour dire les choses autrement : si on utilise un overflow pour créer un contexte de formatage et éviter un problème de clear trop zélé dans Firefox, seul IE6 aura besoin d'un correctif supplémentaire (je laisse de côté IE5.x Windows et IE 5.x Mac... là j'avoue que je ne sais pas trop).
Merci pour l'intérêt que vous portez à ce topic !

Merci pour le lien Florent V, avant de poster sur ce forum, j'y étais déjà aller, mais sa n'avait pas pour autant résolu mon problème. Je n'ai pas vu de solution précise. Le principal est que maintenant tous marche bien !

C'est étrange que d'autre membre n'aie pas eux le même problème que moi, pourtant cette mise en page est courante... Smiley rolleyes
Ok merci pour ces précisions Mpop Smiley cligne

guicara a écrit :
Merci pour l'intérêt que vous portez à ce topic !
Merci pour le lien Florent V, avant de poster sur ce forum, j'y étais déjà aller, mais sa n'avait pas pour autant résolu mon problème. Je n'ai pas vu de solution précise. Le principal est que maintenant tous marche bien !

C'est étrange que d'autre membre n'aie pas eux le même problème que moi, pourtant cette mise en page est courante... Smiley rolleyes


Et pourtant la solution était dedans mais c'est peut-être un peu compliqué
quand on est pas habitué à déboguer. Si tu as mis l'overflow:hidden c'est pour resoudre le bug je suppose?
Oui c'étais dans ce but là, j'avais trouvé aussi de l'aide ici :
-http://gcyrillus.free.fr/trucs_css/#flotte

et sur open web (je crois)

Merci pour tous (oui je sais encore) Smiley biggrin