jer666 Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Bonsoir, voila deja quelques mois que je m'acharne a faire un theme xhtml strict particulier... je seche completement.... effets désirés: un theme 2 colonnes comprennant 3 colonnes (c, d e) dans la colonne centrale (b) caractéristiques : - mettre en avant dans le code le content, en clair B doit apparaitre avant A dans la feuille html. - le contenu est dynamique, donc la colonne de gauche, ne peut PAS prendre une valeur absolute pour son placement, car sa longueur est variable comme les colonnes centrales, et donc pourrait allegrement dépasser du theme. - la largeur de ma page doit etre variable entre 1029px et 777px. - heu je crois que c'est deja pas mal [biggol] difficultés : - l'utilisation de marge négatives ne fonctionne pas, puisque la largeur de la colonne centrale a est variable. -l'utilisation de position: absolute ne fonctionne pas a cause de la longueur variable des 2 bloc A et B [sweatdrop] ma question est, aprés avoir tourné le probleme dans tout les sens, je ne trouve aucune solution, mais alors aucune!!!! j'ai essayer plein de truc en passant par les plus farfellu et les plus vicieux!! tel qu'une margin-top negatif [langue] ca ne marche pas du tout!! ou encore le rajout d'un element en dessous de A et mettre cette meme colonne en absolute, pour prendre tout la longueur de la colonne comme pleine! mais non ca marche pas non plus [bawling] j'avais les cheveux long avant de commencer, mais une calvicie debute!! svp sauvé mes cheveux [biggol] une idée? un axe de recherche? merci par avance! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 difficultés : -l'utilisation de position: absolute ne fonctionne pas a cause de la longueur variable des 2 bloc A et B [sweatdrop] Heu je vois pas le rapport, en position : absolute les coordonnées sont calculées par rapport au coin supérieur gauche, donc tu peux avoir une longueur variable ça ne pose absolument aucun problème. Je pense que tu confond avec la largeur... Enfin bon ça revient au même puisque tu ne peut pas utiliser des coordonnées absolues pour ton projet. Donc la solution testée et approuvée (lifetime garanted for IE, Firefox and Opera) : xhtml <div id="global"> <div id="header">mon header</div> <div id="col_b">mon contenu qui doit apparaître en premier</div> <div id="col_a">ma collone qui reste derrière et qui fait pas chier !</div> <div id="footer">mon footer</div> </div> css #global{ /* ce que tu veux */ } #header{ /* ce que tu veux eventuellement si une de tes collones se met sur la même ligne que ton header (les tailles variables ça peut apporter ce genre de désagrément) tu rajoutes: clear: both; */ } #col_a{ float: left; } #col_b{ float: right; } #footer{ clear: both; } Normalement ça devrait marcher, ensuite pour les blocs C, D et E ça devrait être facile. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Donne moi ton mail, je t'envoie un layout que je viens de coder, qui fait exactement comme ton croquis, mais qui ne marche que sous FF (pas sous IE...) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Quand même un header, deux collones et un footer c'est facile à faire tourner sur tout les navigateurs. Je sais bien que IE peut être très chiant avec son support limité des css mais là c'est quand même basique de chez basique... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Merci bien, un truc basique avec header, contenu et footer, c'est tous les jours au petit déjeuner. Maintenant, essaie de coder un layout complexe comme il demande, tout en respectant ses contraintes (notamment code de B avant celui de A), et tu verras que c'est une autre paire de manches. Propose un layout complet au lieu de ce pseudo-code ultrasimple, et on pourra comparer. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Mon code marche très bien, tu le colle dans une page html et un css tu verra qu'il fait exactement ce qui est demandé il n'y a aucune raison de le compliquer plus. Edit : bon je retire ce que j'ai dit, ça ne marche pas aussi bien que je le pensais car je ne peux pas spécifier une largeur au conteneur global (col_b se met tout à droite de l'écran :\ ). Mais je reste convaincu que c'est possible de faire tourner un layout comme ça sur tout les navigateurs. Je poste dès que j'ai trouvé une solution. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Bon je dois m'avouer vaincu... Ma manière de concevoir la page nécessite obligatoirement qu'on rentre soit une dimension pour #global soit un rapport de proportion pour les collones A et B. Sinon la collone B se retrouve plaquée à droite de l'écran. À la rigueur si je pouvais avoir plus d'information sur le comportement des deux collones A et B (la on ne sait que deux chose, elles sont variables en largeur et la somme de leur largeur est comprise entre 777 et 1029px) je pourrait arriver à quelque chose, mais la je suis dans une impasse. D'ailleurs, Sentinel, je suis curieux de voir comment tu est arriver à juxtaposer les deux blocs en les inversant dans le code et en ne spécifiant aucune dimension... Si tu pouvais m'éclairer. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Voilà un screenshot. Container de taille fixe (950px) centré à l'écran, avec les différentes zones colorées comme sur le croquis. Toutes les colonnes se redimensionnent en hauteur sans dépasser leur conteneur. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Oui mais la tu spécifie une taille fixe, tu te heurte au même problème que moi... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Ben, de toute façon, max-width c'est du CSS 3 il me semble, donc pas près d'être supporté. En attendant, tu es obligé de spécifier une taille en dur pour le container de la page. Avec 950px ça rentre agréablement dans du 1024x768, et c'est bien compris dans la marge donnée par jer666. Par ailleurs il n'a pas spécifié que la largeur des colonnes elles-mêmes était variable, seulement leur hauteur, ce qui peut poser problème si on code mal son layout (des div qui sortent de leur conteneur parent). Mais IE et FFox ont des comportements tellement différents avec les CSS qu'il est très délicat de faire un layout si complexe purement en CSS... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Oui mais bon je suis désolé d'insister, mais le code que j'ai posté au début dans ce cas là fonctionne tout aussi bien. Faut pas prendre ça comme une agression mais si tu garde une taille globale fixe c'est tout à fait possible de faire tourner un layout de ce type sur tout les navigateurs... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Si tu gardes le header, le contenu avec 2 colonnes, et le footer, oui. Maintenant ajoute les zones C, D et E comme sur le schéma avec des DIV, et ça commence à être difficile, surtout si tes colonnes peuvent avoir des hauteurs différentes. Mon code fonctionne sous FF car il gère à peu près correctement les padding/margin/border. Sous IE, les tailles sont calculées n'importe comment, ce qui fait partir le layout en vrille. Si tu as une solution complète qui fonctionne bien sous les deux browsers, ça m'intéresse. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Bah les zones C, D et E tu fait trois div que tu met dans dans la zone B, et tu met float: left; pour C et D. Sinon j'ai une petite idée pour contourner le problème, je teste et je poste. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 J'ai modifié mon code, ça devrait maintenant passer sous IE aussi (mais je ne peux pas le vérifier chez moi, je n'ai pas windows...) Toujours cette obligation de fixer les largeurs des colonnes, mais sinon ça devrait satisfaire jer666 :) /* ================================================================================ GENERAL ================================================================================ */ * { margin: 0px; padding: 0px; font-family: verdana sans-serif; } /* ================================================================================ LAYOUT ================================================================================ */ body { text-align: center; } #body { text-align: center; } #page { width: 960px; margin-left: auto; margin-right: auto; text-align: left; } #page_header { height: 80px; background-color: #444; color: #fff; } #page_content { clear:both; border-left: solid 1px #CCC; border-right: solid 1px #CCC; background-color: #CCF; } #page_content_A { width: 350px; float:left; background-color: #CCC; } #page_content_B { width: 600px; float: right; background-color: #CCC; } #page_content_C { display:block; background-color: #CFC; } #page_content_D { float:left; display:block; width: 295px; background-color: #FCF; } #page_content_E { float:right; display:block; width:295px; background-color: #888; } #page_footer { color: #fff; clear:both; height: 40px; background-color: #444; } <html> <head> <title>Test</title> <link rel="stylesheet" type="text/css" href="style.css"/> </head> <body> <div id="body"> <div id="page"> <!-- ======================================== --> <!-- HEADER DE LA PAGE --> <!-- ======================================== --> <div id="page_header"> header </div> <!-- ======================================== --> <!-- CONTENU DE LA PAGE --> <!-- ======================================== --> <div id="page_content"> <div id="page_content_B"> <div id="page_content_C"> contenu C, contenu C, contenu C, contenu C, contenu C<br/> contenu C, contenu C, contenu C, contenu C, contenu C<br/> contenu C, contenu C, contenu C, contenu C, contenu C<br/> contenu C, contenu C, contenu C, contenu C, contenu C<br/> </div> <div id="page_content_afterC"> <div id="page_content_D"> contenu D, contenu D, contenu D, contenu D, contenu D<br/> contenu D, contenu D, contenu D, contenu D, contenu D<br/> contenu D, contenu D, contenu D, contenu D, contenu D<br/> contenu D, contenu D, contenu D, contenu D, contenu D<br/> </div> <div id="page_content_E"> contenu E, contenu E, contenu E, contenu E, contenu E<br/> contenu E, contenu E, contenu E, contenu E, contenu E<br/> contenu E, contenu E, contenu E, contenu E, contenu E<br/> contenu E, contenu E, contenu E, contenu E, contenu E<br/> </div> </div> </div> <div id="page_content_A"> contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A<br/> contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A<br/> contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A<br/> contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A, contenu A<br/> </div> </div> <!-- ======================================== --> <!-- FOOTER DE LA PAGE --> <!-- ======================================== --> <div id="page_footer"> footer </div> </div> </div> </body> </html> Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Bon bah laisse tomber je pensait pouvoir gruger avec la propriétée overflow: hidden; mais finalement mon idée ne marche pas, les blocs se mettent les uns en dessous des autres plutôt que de dépasser horizontalement de l'écran sans déclencher d'ascenceur... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Tu peux tester ma solution sous IE stp ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Ça marche sous IE, Firefox et Opera. Mais bon le concept est le même que celui que j'ai mis au premier post: header / col_b avec float:right / col_a avec float:left / footer avec clear:both... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 Ouaip j'ai pas dit que c'était grandiose ou difficile :) Juste un peu chiant à régler. Ma première solution utilisait des marges négatives pour certaines parties, et ça, ça passe très mal sous IE :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
jer666 Posté(e) le 8 juin 2006 Auteur Partager Posté(e) le 8 juin 2006 j'adore votre discution ca commence a "rien de plus simple" et ca fini par "ben on est obligé de fixer la largeur" on dirais pas comme ca, mais je commence a toucher ma bille en css. mais ayant tout apris de mes propres experience, j'espéré ne pas connaitre une astuce et non c'est bien longueur et largeur variable ;-) et pour chaqu'une des colonne... seul "A" aurait une largeur fixe Je vous remercie enormement de votre aide... Ta proposition de code mon cher sentinel est vraiment trés bon, mais j'ai deja des gabarits du meme ordre, la j'aurais aimer tapper dans le maxi gabarit ;-) avec une largeur variable, qui dans un premier temps se comporte comme precisé precedement entre 1029px et 777px. mais a terme je pense l'adapter pour des resolution trés différentes... je pense notamment a certain de mes collaborateur qui ont des resolution atypique 1600*je sais plus combien sans compter au resolution 800*600 qui represente encore 16% de mes visites mensuelles Aprés avoir chercher des dizaines d'heure (j'ai commencer ce gabarit en fevrier ), vous representiez mon dernier espoir... je pense que je vais me tourner vers la solution que vous me proposés, une largeur fixe pour le conteneur merci encore... Au fait sentinel, je ne connais pas les différences entre les type de css, mais max-width est relativement bien reconnu par tout les navigateur, enfin sauf IE, mais on peut pas decement dire que c'est un navigateur j'hesite presque a ceer un site de petition pour le retrait de IE du monde de l'informatique bon ben je vais reprendreto n,idée sentinel et xoopsé tout ca, ben ouai ca serrait trop simple si c'etait un site en html MERCI ENCORE!! ps je pensais aps qu'il y aurait autant de reponses si quelqu'un trouve une solution merci de la poster, voir m'envoyer un mp si c'est dans longtemps Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 8 juin 2006 Partager Posté(e) le 8 juin 2006 C'est encore moi En relisant toute cette discussion (acharnée), je me rends compte que j'ai pu être un peu sec avec notre ami Yangzebul. Je le regrette, ce n'était vraiment pas mon intention, et j'apprécie l'aide qu'il apporte sur le forum. Encore désolé, Sentinel Lien vers le commentaire Partager sur d’autres sites More sharing options...
jer666 Posté(e) le 8 juin 2006 Auteur Partager Posté(e) le 8 juin 2006 ta de la chance d'etre modo, ca s'appelle du freepost ca monsieur.... hum comment ca mon post aussi? mais nn c'est les remerciements merci!!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.