[CSS] 3 div côte-à-côte + adapter la hauteur d'un div

3 div côte-à-côte + adapter la hauteur d'un div [CSS] - HTML/CSS - Programmation

Marsh Posté le 16-12-2003 à 15:13:25    

hello,
 
Je cherche à mettre 3 div côte-à-côte :
un "collé" a droite de l'écran l'autre à guauche, et le dernier au millieu.

  • Comment faire ca, en les gardant à la même hauteur ?


  • Est ce qu'il est possible d'adapter la hauteur d'un div à celle d'un autre ? Pour que ca fasse comme un tableau : meme si un div est vide il prend la taille du plein à côté.

Reply

Marsh Posté le 16-12-2003 à 15:13:25   

Reply

Marsh Posté le 16-12-2003 à 15:20:04    

a mon avis il faut commencer par mettre les 3 div dans un div conteneur

Reply

Marsh Posté le 16-12-2003 à 15:20:34    

non, si c'est juste une question de background, il y a moyen de tricher, mais la hauteur d'un div ne peux pas être fonction de la hauteru d'un autre qui n'a pas une hauteur spécifiée explicitement.
 
EDIT: le non était en référence au message de Bigfoot


Message édité par gizmo le 16-12-2003 à 15:21:08
Reply

Marsh Posté le 16-12-2003 à 15:36:40    

Urd-sama a écrit :

a mon avis il faut commencer par mettre les 3 div dans un div conteneur


 
donc je fait ca :

Code :
  1. <div>
  2. <div class="spacer"></div>
  3. <div class="g">
  4. gauche
  5. </div>
  6. <div class="m">
  7. millieu
  8. </div>
  9. <div class="d">
  10. droite
  11. </div>
  12. <div class="spacer"></div>
  13. </div>
  14. div.spacer
  15. {
  16. clear: both;
  17. }
  18. div.g
  19. {
  20. float: left;
  21. }
  22. div.d
  23. {
  24. float: right;
  25. }
  26. div.m
  27. {
  28. float: center;
  29. }


 
bien sur ca marche pas.
Je pense que mon div.spacer est faux et le float: center; je sais pas si ca existe...

Reply

Marsh Posté le 16-12-2003 à 15:38:15    

<A vérifier>
en fait il faut que ton div gauche soit flottant à droite, ainsi que ton div du milieu. le div de droite n'a pas besoin d'être flottant vu qu'il glissera sur celui du milieu
</A vérifier>
 
ps: et le div spacer après le div de droite seulement est suffisant


Message édité par urd-sama le 16-12-2003 à 15:38:54
Reply

Marsh Posté le 16-12-2003 à 15:51:37    

en m'aidant de ce que tu a dit urd-sama, j'ai changé ca :
 

Code :
  1. div.m
  2.   {
  3.     float: left;
  4.   }


 
Ca fonctionne deja mieu mais c'est pas encore parfait. Je voudrais que le div du centre touche le div de gauche et celui de droite, qu'il est 100% de largeur en fait.


Message édité par Big-Foot le 16-12-2003 à 15:53:21
Reply

Marsh Posté le 16-12-2003 à 16:08:10    

<html>
<head>
<title></title>
<style type="text/css">
#global {
position: absolute;
width: 100%;
}
#gauche {
position: absolute;
width: 33%;
height: 200px;
left: 0;
background-color: blue;
}
#milieu {
float: left;
width: 34%;
height: 200px;
background-color: white;
}
#droit {
position: absolute;
width: 33%;
right: 0;
height: 200px;
background-color: red;
}
</style>
</head>
 
<body>
<div id="global">
 <div id="gauche"></div>
 <div id="milieu"></div>
 <div id="droit"></div>
</div>
</body>
</html>


---------------
www.polychromies.com (Portfolio) - www.photographier-bebe.com (livre photo de bébé) - www.alsacreations.com
Reply

Marsh Posté le 16-12-2003 à 16:29:00    

merci SIBELIUS, c'est très jolie  :D  
Mais je crois qu'il y a un probleme dans ta page : le div "milieu" est caché par un autre, si tu inscrit quelque chose dans ce div le texte n'apparait pas.
De plus quand je disais que je veut que le div du milieu "touche" celui de droite et de gauche, j'ai oublié de préciser que ceux-ci doivent avoir une largeur définie en px, donc impossible de jouer avec les %  :(  
 
au fait ca veut dire quoi " position: absolute; " ?
 

Reply

Marsh Posté le 16-12-2003 à 16:35:01    

Modifie le milieu et remplace par ça : #milieu {
position: absolute;
width: 34%;
left: 33%;
height: 200px;
background-color: white;
}
 
Pour le positionnement :
http://openweb.eu.org/articles/initiation_absolue/


---------------
www.polychromies.com (Portfolio) - www.photographier-bebe.com (livre photo de bébé) - www.alsacreations.com
Reply

Marsh Posté le 16-12-2003 à 16:35:38    

PS : j'ai mis des % mais rien ne t'empêche d'utiliser d'autres mesures


---------------
www.polychromies.com (Portfolio) - www.photographier-bebe.com (livre photo de bébé) - www.alsacreations.com
Reply

Marsh Posté le 16-12-2003 à 16:35:38   

Reply

Marsh Posté le 16-12-2003 à 18:01:01    

:bounce:  merci SIBELIUS j'ai enfin reussi ! en fait j'avais oublié de prendre en compte le "padding" de mes div... à cause de ca ils s'affichaient les un sur les autres.
 
j'ai encore un ptit probleme seulement sous IE (toujours ce ie  :o ) :
la largeur de mes div gauche et droite étant définie en px, je n'ai pas pu indiquer de largeur au div du milieu. Sous Firebird c'est bon le div du milieu fait 100% de l'espace qui lui est déstiné, mais sous ie il prend la largeur de son contenu ce qui ne va pas du tout.

Reply

Marsh Posté le 16-12-2003 à 20:40:46    

merci ca a l'aire pas mal, mais j'arrive pas à comprendre une chose dans cette page : comment ca ce fait que les fonds des div de gauche et de droite suivent la taille globale ? c'est du JS ?
En refaisant une page similaire en local, j'arrive pas à faire en sorte que les fonds (ou les bordures) de mes div suivent la hauteur total.

Reply

Marsh Posté le 16-12-2003 à 20:50:13    

Non pas de JS. Le truc c'est que les fonds colorés (le rouge et le bleu) sont fait à partir des 2 divs principaux (main1 et main2) et c'est eux qui donnent l'impression de hauteur égale entre les colonnes, alors que les vrais DIV conteneurs (left, middle, right) ne sont pas de la même hauteur.
 
Bon c'est effectivement du gros bricolage. Les DIV et le positionnement ne sont pas adaptés pour ça, autant faire un tableau si tu veux des colonnes de hauteurs égales [:spamafote]


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 16-12-2003 à 21:25:43    

Pour une fois je voulais faire quelque chose de très très propre... A ce que je vois les div n'iront pas vraiment, mais est ce que je peu vraiment utiliser un tableau ici (apres tout le mal qu'on en dit j'ai peur :D)

Reply

Marsh Posté le 16-12-2003 à 21:27:11    

gm_superstar a écrit :

Non pas de JS. Le truc c'est que les fonds colorés (le rouge et le bleu) sont fait à partir des 2 divs principaux (main1 et main2) et c'est eux qui donnent l'impression de hauteur égale entre les colonnes, alors que les vrais DIV conteneurs (left, middle, right) ne sont pas de la même hauteur.

Bon c'est effectivement du gros bricolage
. Les DIV et le positionnement ne sont pas adaptés pour ça, autant faire un tableau si tu veux des colonnes de hauteurs égales [:spamafote]


 
Voilà oui... Du gros bricolage...
 
Moi non plus, je n'ai pas encore trouvé de solution REELLEMENT satisfaisante pour ce cas de figure. Si en plus on veut rajouter un pied de page TOUJOURS en bas de la fenêtre du nav. on est dans la merde. Après, oui, ya toujours des possibilités : des hacks, des ruses etc...  
 
Pour moi, ça reste quand même plus simple de faire un tableau de 100% de large et de haut avec 3 colonnes et deux lignes. La colonne de gauche avec une taille fixe, celle de droite aussi et celle du milieu en auto, avec en plus une seconde ligne avec une taille fixe aussi pour le pied de page. Ainsi, j'utilise une seule figure, pas de hack, pas de ruse etc...
 
Il faut se rendre à l'évidence, à l'heure actuelle, tout faire avec des divs, c'est très bien pour l'expérimentation perso, et pour apprendre à se servir des divs, mais si on veut une page qui passe sur IE 5+, Mozilla 1+, Opera 6+ etc... Les moyens à mettre en oeuvre sont trop important pour un truc aussi dérisoire.
 
Vivement que les CSS2 soient enfin prise en compte correctement par tous les navigateurs récents, pour qu'on puisse réellement se débarasser des tables...

Reply

Marsh Posté le 16-12-2003 à 21:35:23    

humm donc tableau.
 

Citation :

Vivement que les CSS2 soient enfin prise en compte correctement par tous les navigateurs récents, pour qu'on puisse réellement se débarasser des tables...


 
Il existe donc une solution en css2 ?
Quelles sont les navigateurs qui gèrent bien les css2 ? moz ?


Message édité par Big-Foot le 16-12-2003 à 21:36:13
Reply

Marsh Posté le 16-12-2003 à 21:38:42    

Big-Foot a écrit :

humm donc tableau.
 

Citation :

Vivement que les CSS2 soient enfin prise en compte correctement par tous les navigateurs récents, pour qu'on puisse réellement se débarasser des tables...


 
Il existe donc une solution en css2 ?
Quelles sont les navigateurs qui gèrent bien les css ? moz ?


 
Voilà oui ... En gros, si tu fais un site pour mozilla tout seul, c'est bon.
 
Pour ton problème, moi je te recommande un unique tableau avec toutes les propriétés dans les CSS évidemment pour assurer la validité.
 
Evidemment, c'est sémantiquement et philosophiquement incorrect, mais en même temps :  
 
- ça valide.
- ça passe avec tous les nav, y compris en mode texte.
- ça garde l'organisation générale.
- c'est cross-browser.
 
Les divs, c'est sémantiquement correct, mais c'est pas crossbrowser.
 
Bref, tout dépend aussi du public que tu vises. Si c'est un public de webmasters spécialistes, pourquoi pas des divs pour montrer ce que tu as dans le ventre.
 
Si c'est pour tout le monde, tu auras des ennuis.


Message édité par Hermes le Messager le 16-12-2003 à 21:39:13
Reply

Marsh Posté le 16-12-2003 à 21:54:33    

disont que j'opte pour la solution "spécialistes", la bonne méthode dans ce cas sera celle de http://www.pixy.cz/blogg/clanky/css-3col-layout/ ?
Où est ce qu'il y a quelque chose de tout propre en css2 (même si sa passe pas sur tous les navigateurs pour l'instant) ?

Reply

Marsh Posté le 16-12-2003 à 22:05:02    

Big-Foot a écrit :

disont que j'opte pour la solution "spécialistes", la bonne méthode dans ce cas sera celle de http://www.pixy.cz/blogg/clanky/css-3col-layout/ ?
Où est ce qu'il y a quelque chose de tout propre en css2 (même si sa passe pas sur tous les navigateurs pour l'instant) ?


 
Effectivement, cette méthode a l'air de fonctionner. Et NON, il n'y a rien de TOUT propre en CSS2 qui passe ne serait-ce que sous IE 6, Moz 1+, et opera 7+

Reply

Marsh Posté le 16-12-2003 à 22:20:30    

j'ai l'impression que cette méthode http://www.pixy.cz/blogg/clanky/css-3col-layout/ ne fonctione que si les arrières plans des div droite et gauche sont des images, et par consequant quand les div n'on pas de bordures. Est-ce vraiment le cas ?

Reply

Marsh Posté le 16-12-2003 à 22:28:03    

Big-Foot a écrit :

j'ai l'impression que cette méthode http://www.pixy.cz/blogg/clanky/css-3col-layout/ ne fonctione que si les arrières plans des div droite et gauche sont des images, et par consequant quand les div n'on pas de bordures. Est-ce vraiment le cas ?


 
Bah, comme c'est du bricolage, tu auras forcément des problèmes de toutes manières... D'où mon conseil...

Reply

Marsh Posté le 16-12-2003 à 22:32:01    

ouai... finalement peut-être un tableau pour l'instant :)

Reply

Marsh Posté le 13-06-2004 à 19:41:30    

Rebonjour !
 
J'ai repris ce truc il y a quelques jours, et j'ai réussi :
Les div de gauche et de droite s'adaptent à la hauteur de celui du milieu :sol:
 
D'apres mes test ca marche bien sous mozilla et aussi IE :
http://www.delta-zone.com/3div/
(sorry c'est un peu fashy ^^)
 
Et voila le code :
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <title>test</title>
  5. <link rel="stylesheet" type="text/css" href="main.css" title="Default" media="screen" />
  6. </head>
  7. <body>
  8. <div id="center">
  9. <div id="menu_left">menu left</div>
  10. <div id="menu_right">menu right</div>
  11. <div id="blank">
  12. centercentercentercentercentercentercentercentercentercentercentercentercenter
  13. centercentercentercentercentercentercentercentercentercentercentercentercenter
  14. centercentercentercentercentercentercentercentercentercentercentercentercenter
  15. </div>
  16. <div class="spacer"></div>
  17. </div>
  18. </body>
  19. </html>


 

Code :
  1. div
  2. {
  3. margin: 0;
  4. padding: 0;
  5. background-color: transparent;
  6. }
  7. div.spacer
  8. {
  9. clear: both;
  10. }
  11. body
  12. {
  13. background-color: #FFFFFF;
  14. color: #000000;
  15. margin: 0;
  16. padding: 0;
  17. border: 0;
  18. }
  19. div#center
  20. {
  21. width: 100%;
  22. background-color: #F0FF0f;
  23. }
  24. div#menu_left
  25. {
  26. height: 300px;
  27. width: 140px;
  28. float:left;
  29. }
  30. div#menu_right
  31. {
  32. height: 300px;
  33. width: 140px;
  34. float:right;
  35. }
  36. div#blank
  37. {
  38. margin: 0 140px 0 140px;
  39. background-color: #FFFFFF;
  40. }


 
Et voila le tout sans tableau :)


Message édité par Big-Foot le 13-06-2004 à 19:46:51
Reply

Marsh Posté le 13-06-2004 à 20:23:24    

Big-Foot a écrit :

Rebonjour !
 
J'ai repris ce truc il y a quelques jours, et j'ai réussi :
Les div de gauche et de droite s'adaptent à la hauteur de celui du milieu :sol:


Ben en fait pas vraiment. C'est toujours le même truc que j'explique en dessus [:spamafote]
Les colonnes en gauche et de droite et de droite ont en réalité les dimensions que tu leur a données (300 px de haut) mais elles semblent avoir la hauteur du DIV central car elles sont transparentes.
 
Si tu as besoin d'avoir des bordures à tes colonnes alors ça marchera plus :/


Message édité par gm_superstar le 13-06-2004 à 20:23:51

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 13-06-2004 à 21:41:41    

ben justement pour les bordures, j'y travaille :
http://www.delta-zone.com/borders/
 
ca passe pas sous IE pour le moment, si vous avez des idées...


Message édité par Big-Foot le 13-06-2004 à 21:41:54
Reply

Marsh Posté le 14-06-2004 à 10:30:55    

Il y a là aussi :
http://www.alsacreations.com/articles/modeles/


---------------
fermez vos topics résolus avec le tag [Résolu] en fin de titre. Merci !
Reply

Marsh Posté le 22-06-2004 à 01:41:44    

merci T509, malheureusement ton système ne regle pas à première vue mon problèmes de bordures :/
 
Voila ce qui se passe
 
Sous mozilla c'est ok :
http://membres.lycos.fr/bigfoot57/prob/border_moz.png
 
Mais sous ie ca donne ça :
http://membres.lycos.fr/bigfoot57/prob/border_ie.png
 
C'est vraiment un casse tête... Vous avez pas une idée ? Parce que là je pense que j'y suis presque c'est dommage. :)

Reply

Marsh Posté le 22-06-2004 à 21:57:11    

Comme ca?
 

Code :
  1. <div id="Page" class="Page">
  2. <div id="Gauche" class="Gauche">G</div>
  3. <div id="Centre" class="Centre">
  4.  <p>Centre</p>
  5.  <p>
  6.   Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu
  7.         Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu
  8.           Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu
  9.       Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu
  10.         Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu
  11.         Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu
  12.         Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu
  13.         Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu Contenu
  14.  </p>
  15. </div>
  16. <div id="Droite" class="Droite">D</div>
  17. </div>


 

Code :
  1. .Gauche {
  2. height: 100%;
  3. width: 20%;
  4. background-color: #66CCFF;
  5. float: left;
  6. border: 5px solid #FF0000;
  7. }
  8. .Droite {
  9. height: 100%;
  10. width: 20%;
  11. float: left;
  12. background-color: #00CCFF;
  13. border: 5px solid #33FF00;
  14. }
  15. .Centre {
  16. height: 100%;
  17. width: 60%;
  18. background-color: #CCCCCC;
  19. float: left;
  20. border: 5px solid #FFFF00;
  21. }
  22. .Page {
  23. font-family: Verdana, Arial, Helvetica, sans-serif;
  24. font-size: 10pt;
  25. height: 25%;
  26. width: 100%;
  27. }

Reply

Marsh Posté le 23-06-2004 à 00:19:40    

Moi aussi j'aurais préféré avoir une hauteur fixe, pour l'instant c le seul problème que j'ai. Mais sinon c assez bien construit je trouve :
http://blog.jeanb-net.com (ne pas faire attention o contenu :p)

Reply

Marsh Posté le 23-06-2004 à 00:48:39    

pour une hauteur fixe, il y a une astuce décrite ici :
http://www.alistapart.com/articles/fauxcolumns/ ou ici :
http://www.alistapart.com/articles/negativemargins/

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed