euhkah Posté(e) le 16 novembre 2010 Partager Posté(e) le 16 novembre 2010 Bonjour à tous ! Voilà, j'ai un petit problème.. On parle depuis longtemps maintenant de ne plus utiliser de TABLE pour la mise en forme d'un site web, et j'ai vraiment rien contre.. SAUF! que je ne trouve pas les DIV assez intelligents pour remplacer une pourtant IDIOTE TABLE.. C'est vrai, c'est plutôt courant non de faire plusieurs colonnes sur un site ? Existe-il une méthode que j'ignore je ne sais pas.. MAIS ça me gonfle de voir un DIV ENFANT plus grand qu'un DIV PARENT.. Pourquoi mes colonnes ne pourraient simplement pas prendre la même hauteur ? Suis-je obliger d'utiliser de vieilles combines pourries pour arriver à mes fins ? (fausses colonnes? colonnes dans un ordre différent que la logique..).. à la fin, j'ai autant de lignes de DIV dans d'autres DIV pour arriver à un résultat, qu'en TABLE j'en aurai moins.. C'est n'importe quoi.. Alors je m'en remet à vous.. Avez-vous la solution dont je n'ai pas connaissance ? Merci Lien vers le commentaire Partager sur d’autres sites More sharing options...
Bdliet Posté(e) le 17 novembre 2010 Partager Posté(e) le 17 novembre 2010 Bonjour :) Oui moi j'ai la solution! Continue à utiliser TABLE Plus sérieusement je ne vois pas non plus l'intérêt d'utiliser les DIV qui sont à mon sens moins pratiques dans pareil cas... J'ai l'impression d'être obligé de bidouiller à chaque fois que j'en utilise... Lien vers le commentaire Partager sur d’autres sites More sharing options...
nemesis93_75 Posté(e) le 17 novembre 2010 Partager Posté(e) le 17 novembre 2010 Il faut apprendre a utiliser le CSS c'est tout. Les tables sont fait pour les tableaux, les div pour diviser le site. Qu'est ce que tu n'arrives pas à faire, une petite explication? (je rappelle que utiliser des tables n'est pas conformes à la W3C dans l'agencement d'un site ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
euhkah Posté(e) le 17 novembre 2010 Auteur Partager Posté(e) le 17 novembre 2010 J'ai l'impression d'être obligé de bidouiller à chaque fois que j'en utilise... Moi aussi.. tout le temps en train de mettre les background sur des div parents pour que visuellement ça fasse un truc qui est pourtant ultra simple en table.. Qu'est ce que tu n'arrives pas à faire, une petite explication? (je rappelle que utiliser des tables n'est pas conformes à la W3C dans l'agencement d'un site ) Je n'arrive pas à faire 3 colonnes côte à côte qui prennent la taille de la plus longue des 3.. que je puisse mettre sur chacune un fond coloré diffèrent, et qu'elles soient, dans le code dans un ordre logique ! je m'explique : <div>colonne 1</div> <div>colonne 2</div> <div>colonne 3</div> Pour : | colonne 1 | colonne 2 | colonne 3 | (Pour détailler le truc, je cherche à ce que les 3 colonnes fassent au total 1000px, et qu'elles soit centrées horizontalement.. mais ça, avec un "margin: 0 auto;" c'est bon !) Je sais que ce n'est pas conforme, et justement, j'essaye de me soumettre à cela, autrement j'utiliserai "simplement" des tables ! J'ai vu que je pouvais faire un compromis avec des "display: table..." mais ce n'est pas compatible ie6 ie7.. donc j'essaye de trouver une autre solution ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fuinril Posté(e) le 17 novembre 2010 Partager Posté(e) le 17 novembre 2010 <style type='text/css'> div.parent { margin:0 auto; width:1000px; overflow: hidden; float:left; } div.parent div { float:left; width:333px; overflow:hidden; } </style> <div class='parent'> <div>colonne 1</div> <div>colonne 2</div> <div>colonne 3</div> </div> Et oui les table c'est mega crade, ca fournit un code illisible, impossible à maintenir et ca prend 100 fois plus de temps à faire dans la majorité des cas. Comme dit plus haut il suffit d'apprendre à utiliser le css. Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 17 novembre 2010 Partager Posté(e) le 17 novembre 2010 Et aussi les tables, c'est plus lourd à gérer pour le navigateur. Lien vers le commentaire Partager sur d’autres sites More sharing options...
euhkah Posté(e) le 17 novembre 2010 Auteur Partager Posté(e) le 17 novembre 2010 Et oui les table c'est mega crade, ca fournit un code illisible, impossible à maintenir et ca prend 100 fois plus de temps à faire dans la majorité des cas. Comme dit plus haut il suffit d'apprendre à utiliser le css. Dans ton code là, si tu met un "float: left;" sur le div parent, ton "margin: 0 auto;" ne sert à rien non ? j'ai tapé ton code, et ça rend bien, oui c'est plus propre, je sais, sauf que ça résoue pas mon problème, si une colonne s'agrandit, les autres non :) Le code que j'ai écris : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>layout - 3 colonnes</title> <style type='text/css'> <!-- * { margin: 0; padding: 0; } div#page { margin:0 auto; width:1000px; overflow: hidden; } div#page div#gauche { float:left; width:333px; overflow:hidden; background-color: #bababa; } div#page div#centre { float:left; width:334px; overflow:hidden; background-color: #cacaca; } div#page div#droite { float:left; width:333px; overflow:hidden; background-color: #dadada; } --> </style> </head> <body> <div id="page"> <div id="gauche">colonne 1</div> <div id="centre">colonne 2<br /><br /><br /><br /><br /><br /></div> <div id="droite">colonne 3</div> </div> </body> </html> Lien vers le commentaire Partager sur d’autres sites More sharing options...
euhkah Posté(e) le 17 novembre 2010 Auteur Partager Posté(e) le 17 novembre 2010 Je l'ai la, soit disant "super solution".. Mais elle est plus moche qu'un simple table ! 67 div les uns dans les autres tout ça juste pour faire ça ? Et "ça" c'est mieux ? sérieux ? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>layout - 3 colonnes</title> <style type="text/css"> <!-- * { margin: 0; padding: 0; } .hauteur { float:left; position:relative; overflow:hidden; } div#page { margin:0 auto; width:1000px; overflow: hidden; } #content1 { width: 1000px; background: #bababa; } #content2 { width: 1000px; right: 300px; background: #cacaca; overflow: visible; } #content3 { width: 1000px; right: 515px; background: #dadada; overflow: visible; } #gauche, #centre, #droite { left: 815px; } #gauche { width: 185px; } #centre { width: 515px; } #droite { width: 300px; } --> </style> </head> <body> <div id="page"> <div id="content1" class="hauteur"> <div id="content2" class="hauteur"> <div id="content3" class="hauteur"> <div id="gauche" class="hauteur">Colonne 1</div> <div id="centre" class="hauteur">Colonne 2<br /><br /><br /><br /><br /><br /></div> <div id="droite" class="hauteur">Colonne 3</div> </div> </div> </div> </div> </body> </html> Lien vers le commentaire Partager sur d’autres sites More sharing options...
nemesis93_75 Posté(e) le 17 novembre 2010 Partager Posté(e) le 17 novembre 2010 Mais tu veux faire quoi avec ces divs? Non parce que c'est normal qu'elle soit indépendante. Si tu veux faire un tableau, tu dois utiliser les table Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 17 novembre 2010 Partager Posté(e) le 17 novembre 2010 Je l'ai la, soit disant "super solution".. Mais elle est plus moche qu'un simple table ! 67 div les uns dans les autres tout ça juste pour faire ça ? Et "ça" c'est mieux ? sérieux ? ... Le problème là se situe plus chez toi que dans la technologie elle même... La solution simple tu l'avais depuis le premier message : "fausses colonnes?" Si tu ne veux pas l'appliquer c'est ton problème, mais ne viens pas nous ressortir des vieux trolls table/css. C'était à la mode il y a dix ans, maintenant c'est devenu du même niveau que de faire l'apologie des goto. Oui, une div n'est pas un tableau, et non tu ne peut pas synchroniser leurs hauteurs. Il faut juste accepter que conceptuellement ce n'est pas la même chose. Ce qui ne veux pas dire que c'est pourri, il faut juste raisonner autrement. Tant que tu essaiera d'émuler des tables tu continuera à écrire des atrocités comme au dessus. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fuinril Posté(e) le 17 novembre 2010 Partager Posté(e) le 17 novembre 2010 Mouais, je comprend absolument pas ce que tu cherches à faire... Mais j'ai l'impression que tu n'as pas compris quelque chose : si tu veux faire un tableau, table est là pour cela. Ce qu'il ne faut surtout pas faire c'est structurer sa page avec des tables (<table><tr><td><table>, etc... à l'ancienne mode quoi). Lien vers le commentaire Partager sur d’autres sites More sharing options...
euhkah Posté(e) le 18 novembre 2010 Auteur Partager Posté(e) le 18 novembre 2010 D'accord ! Merci :-) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Florent_ATo Posté(e) le 18 novembre 2010 Partager Posté(e) le 18 novembre 2010 Bonjour euhkah, Premièrement lorsqu'il s'agit de développer un site web amateur, deux choix s'offrent à toi. Il y a celui de préférer la facilité et coder un truc des années 90', inmaintenable et inaccessible ou bien faire l'effort d'apprendre les bases du CSS et viser la validation W3C (XHTML 1.0 Strict / CSS2.1 si t'es motivé ^^). Dans le cas classique d'un site divisé en trois colonnes, la procédure consiste effectivement à déclarer un wrapper qui enveloppe tes 3 colonnes comme tu l'as décrit précédemment. Par contre, la propriété overflow ne te sert à rien et tu peux factoriser tes background-color dans la div parent. Aussi, n'oublie pas que le <body> est une balise comme les autres qui peut te servir de wrapper. Si tu veux un site de 1000px de large en trois parties tu vas avoir du mal à tomber juste... Solution: Le pourcentage tout simplement ! La gestion des pourcentages est certes un peu plus délicate qu'avec des valeurs absolues (comme avec les taille des polices, "em" only !) mais encore une fois, à toi de voir si tu veux produire quelque chose de correct ou non :) Comme cela a été dit, la balise <table> sert à faire des tableaux. Et uniquement des tableaux. La sémantique est très importante pour le web et il ne s'agit pas d'utiliser "au pif" des balise en s'arrêtant à leur aspect graphique. Encore trop de monde fait l'erreur d'utiliser la balise <i> (valide XHTML 1.0 Strict) juste pour mettre du texte en italique, ce qui est désolant :( Il est à mon humble avis impératif de connaitre globalement CSS et comprendre la sémantique des balises HTML avant de se lancer dans le développement. Ceci étant si j'ai bien compris ton problème, tu souhaites avoir un site en trois colonnes et faire en sorte que la hauteur de celles-ci soit la même en fonction du remplissage de l'une d'elles. C'est une problématique classique et il n'y a malheureusement pas (actuellement) de solution unique ! Je t'invite à lire ça : http://www.couzinhub.com/mar-09/colonnes-de-m-me-hauteur-avec-css http://www.alsacreations.com/astuce/lire/15-div-blocs-meme-hauteur.html'>http://www.alsacreations.com/astuce/lire/15-div-blocs-meme-hauteur.html Aussi, je te recommande de jeter un oeil aux sites suivant: http://www.alsacreations.com http://www.pompage.net http://www.w3schools.com Et en cadeau, une petite démo montrant l'importance d'utiliser de conteneurs adéquats: http://hacks.mozilla.org/2009/07/media-queries-demo/ (à voir avec Firefox 3.5+) Voilà, j'espère que ce message t'aura aidé et que tu es maintenant déterminé à produire un code de qualité ^^ Très bonne journée à toi ! Edit @Fuinril Ton exemple est globalement correct même si le margin:0 auto; est à mes yeux inutile du fait du float qui fait sortir la div parent de la structure du document. Egalement, je ne vois pas l'utilité des overflow. Tu m'expliques ? :) @Yangzebul Ce qui ne veux pas dire que c'est pourri, il faut juste raisonner autrement. ite missa est. Merci ps: Premier message après des années de lurkage intensif ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fuinril Posté(e) le 19 novembre 2010 Partager Posté(e) le 19 novembre 2010 @Fuinril Ton exemple est globalement correct même si le margin:0 auto; est à mes yeux inutile du fait du float qui fait sortir la div parent de la structure du document. Egalement, je ne vois pas l'utilité des overflow. Tu m'expliques ? :) Effectivement le float sur le parent est en trop, de même que le overflow. Par contre le overflow sur les enfants ca evite d'avoir une page qui pète sur un contenu de type mot (tres) long ou grosse image. A noter que c'était fait rapidement et sans test et que je ne suis pas intégrateur, j'ai des bonnes notions en CSS mais c'est loin d'être parfait. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Florent_ATo Posté(e) le 19 novembre 2010 Partager Posté(e) le 19 novembre 2010 S'il s'agit de masquer le dépassement de texte du conteneur, je t'invite à regarder la propriété CSS 3 text-overflow :) Il me semble qu'elle est supportée par tous les navigateurs récents sans vendor prefixes. A valider ^^ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Yangzebul Posté(e) le 19 novembre 2010 Partager Posté(e) le 19 novembre 2010 S'il s'agit de masquer le dépassement de texte du conteneur, je t'invite à regarder la propriété CSS 3 text-overflow :) Il me semble qu'elle est supportée par tous les navigateurs récents sans vendor prefixes. A valider ^^ pas dans Firefox Lien vers le commentaire Partager sur d’autres sites More sharing options...
Florent_ATo Posté(e) le 20 novembre 2010 Partager Posté(e) le 20 novembre 2010 En effet, au temps pour moi. https://developer.mozilla.org/en/CSS/text-overflow Il n'y a pas eu de maj du draft sur cette propriété depuis des lustres.. :( Lien vers le commentaire Partager sur d’autres sites More sharing options...
devblog Posté(e) le 24 novembre 2010 Partager Posté(e) le 24 novembre 2010 Vivement CSS 3 et html 5 et ces propriétés de texte en colonnes pour enterrer définitivement ce débat ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Florent_ATo Posté(e) le 26 novembre 2010 Partager Posté(e) le 26 novembre 2010 Donc rendez-vous dans 5 ans minimum (avant un déploiement à grande échelle). ^^ Ps: Pour info, CSS 2.1 possède des propriétés qui ne sont pas encore finalisées. 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.