[CSS] Positionnement de 2 div dans 1 & float

Positionnement de 2 div dans 1 & float [CSS] - HTML/CSS - Programmation

Marsh Posté le 05-07-2007 à 11:43:52    


Bonjour :)
 
Bon étant donné qu'un schéma vaut mieux qu'un long discours.... voici ce que j'essaye de faire :
 
http://img378.imageshack.us/img378/5972/illus1ws6.png
 
 
J'ai mis mes 2 div "zone de texte" en float:left; , ça rend bien sauf que mon "container" ne fait pas la taille des bloc à l'intérieur ... :/
Ca me donne ça :
 
http://img187.imageshack.us/img187/8527/illus2uz3.png
 
 
Quelqu'un aurai la solution ?
 
 
 
 
 
 
 


---------------
flick r
Reply

Marsh Posté le 05-07-2007 à 11:43:52   

Reply

Marsh Posté le 05-07-2007 à 11:47:47    

il faut pas mettre un truc du genre :
<p style="clear: both"/>
ou
<div style="clear: both"/>
dans le div container ?

 

(sinon en lui donnant un height)


Message édité par jan san kar le 05-07-2007 à 11:48:00
Reply

Marsh Posté le 05-07-2007 à 12:10:58    


En mettant "clear:both;" ça me positionne mieux, mais ça ne règle pas la hauteur, ça reste à "0";
Oui en effet en définissant une hauteur "height" ça marche, sauf que le texte n'est pas toujours de la même taille... :/ donc je peut pas utiliser cette solution. :/
 

Reply

Marsh Posté le 05-07-2007 à 13:10:34    

montre nous comment tu as mis le <br style="clear:both;" /> dans ton code

Reply

Marsh Posté le 05-07-2007 à 14:44:28    


Code :
  1. <style type='text/css'>
  2. div.container
  3.  {
  4.   display :   block;
  5.   margin-bottom :  20px;
  6.   width :   500px;
  7.   border :   1px solid #CCCCCC;
  8.   clear :   both;
  9.  }
  10. div.zone_texte_1
  11.  {
  12.   display :   block;
  13.   float :   left;
  14.   width :   100px;
  15.   border :   1px solid #0044FF;
  16.   margin :   10px;
  17.  }
  18. div.zone_texte_2
  19.  {
  20.   display :   block;
  21.   float :   left;
  22.   width :   350px;
  23.   border :   1px solid #0099FF;
  24.   margin :   10px;
  25.  }
  26. </style>
  27. <div class='container'>
  28. <div class='zone_texte_1'>
  29.   Zone 1
  30.  <br />Zone 1
  31.  <br />Zone 1
  32.  <br />Zone 1
  33. </div>
  34. <div class='zone_texte_2'>
  35.   Zone 2
  36.  <br />Zone 2
  37.  <br />Zone 2
  38.  <br />Zone 2
  39. </div>
  40. </div>

Reply

Marsh Posté le 05-07-2007 à 15:31:47    

Salut,
 
Tu peux contourner un peu le problème avec cet attribut :
 

Code :
  1. min-height: 150px;


 
 
A mettre dans le code CSS de ton conteneur. Sa signifie que son height sera d'un minimum de 150px ...
 
Si sa peut t'aider  :hello:

Reply

Marsh Posté le 05-07-2007 à 15:36:06    

moreno911 a écrit :

Salut,
Tu peux contourner un peu le problème avec cet attribut :
 

Code :
  1. min-height: 150px;


A mettre dans le code CSS de ton conteneur. Sa signifie que son height sera d'un minimum de 150px ...
Si sa peut t'aider  :hello:


Merci :) mais en fait j'avais déjà essayé et malheureusement lorsqu'un des bloc de texte est plus haut que 150px ça reviens au même :/
En fait je cherche à ce que le bloc "container" ai la même hauteur que le plus haut des 2 bloc de texte. :/
 

Reply

Marsh Posté le 05-07-2007 à 15:39:07    

Oui je viens de comprendre ça, je suis [...]  :whistle:  
 
Je cherche à fair le même chose que toi, bizard comme problème quand même !

Reply

Marsh Posté le 05-07-2007 à 18:15:25    

c'est re moi  :hello:  
 
J'ai trouvé une solution ( pour mon cas  en tout cas...)
 
 
Alors, dans le CSS tu mes ça :
 

Code :
  1. .clearfix:after {
  2.     content: ".";
  3.     display: block;
  4.     height: 0;
  5.     clear: both;
  6.     visibility: hidden;
  7. }


 
 
et dans ta page ( en adaptant un tout petit peux of course ) :
 

Code :
  1. <div id="conteneur" class="clearfix">
  2. <div id="milieu"> blahblah1</div>
  3. <div id="droite">blahblah2 </div>
  4. </div>


 
 
Si tu as encore des soucis, n'hésite pas!

Reply

Marsh Posté le 05-07-2007 à 18:26:06    


Put**n génial ! ça marche !!!  
Merci beaucoup moreno :jap:  
 
 
Je connaissait pas le :after et le content: ".";, ça sert à quoi :??:


Message édité par ptibat le 05-07-2007 à 18:26:35
Reply

Marsh Posté le 05-07-2007 à 18:26:06   

Reply

Marsh Posté le 05-07-2007 à 18:31:48    

L'attibut "content" ajoute du contenu, il en ajoute avant ou après, dans notre cas c'est après donc => after
 
Voylou Voylou  :hello:

Reply

Marsh Posté le 05-07-2007 à 18:57:25    


Ok !
C'est bon à savoir ça. :) Merci :jap:
 
 

Reply

Marsh Posté le 05-07-2007 à 19:00:21    

Mais de rien  :)

Reply

Marsh Posté le 05-07-2007 à 19:55:27    

Ajouter du contenu dans un css :p on aura tout vu  
 
surtout que cette page me refroidi un peu sur son utilisation : http://www.quirksmode.org/css/content.html
et
http://www.htmldog.com/reference/c [...] s/content/
 
pas supporté par IE surtout ^^
 
Sinon si tu te creuse la tete et que tu vas sur openweb.eu tu arrivera à adapter la methode simple, valide et propre du clear:both..
 
genre :

Code :
  1. <div class='container'>
  2. <div class='zone_texte_1'>
  3.   Zone 1
  4.  <br />Zone 1
  5.  <br />Zone 1
  6.  <br />Zone 1
  7. </div>
  8. <div class='zone_texte_2'>
  9.   Zone 2
  10.  <br />Zone 2
  11.  <br />Zone 2
  12.  <br />Zone 2
  13. </div>
  14. <br style="clear:both" />
  15. </div>


 
 
ca marche, partout, c'est propre et valide

Message cité 1 fois
Message édité par bixibu le 05-07-2007 à 19:56:11
Reply

Marsh Posté le 06-07-2007 à 09:54:08    


Merci bixibu :D

Reply

Marsh Posté le 06-07-2007 à 13:50:29    

bixibu a écrit :

Ajouter du contenu dans un css :p on aura tout vu  
 
surtout que cette page me refroidi un peu sur son utilisation : http://www.quirksmode.org/css/content.html


Là, l'ajout ne concerne qu'une propriété css, on reste bien dans le cadre de la présentation et non pas du contenu, je ne vois donc pas le problème.
 


Ce n'est pas un problème non plus puisque son conteneur a le layout, ce qui crèe un nouveau contexte de formatage sur IE, et que donc IE va adapter la taille du conteneur en fonction des 2 autres.
 

bixibu a écrit :


ca marche, partout, c'est propre et valide


Devoir ajouter une balise exprès pour dans le html, je n'appelle pas ça "propre". De plus le choix d'une balise br n'est pas neutre puisqu'il induit un saut de ligne qui pourraît être interprêté selon la configuration et les navigateurs.
 
Le fait est que, actuellement, css n'offre pas de solution propre à ce problème. La propriété css3 clear-after devrait pallier à ce manque.
 
En plus des 2 solutions évoquées ci-dessus (ajout d'une balise avec la propriété clear, ajout du clear via le :after), il me paraît important de préciser qu'un nouveau contexte de formatage permet d'avoir le même effet. Par exemple, rajouter un overflow:hidden (en donnant le layout pour IE6-) sur le conteneur, ou encore le faire flotter. Si je ne qualifierais pas non plus cette méthode de "propre", vu qu'on fait appel à une propriété pour l'effet quelle induit et non pas pour sa fonction première, elle a le mérite d'être la plus simple à mettre en oeuvre.
 
En ce sens, la solution la "moins sale" pour moi, idéologiquement parlant, est celle du :after puisqu'elle attribue la propriété adéquate à la balise concernée. Par contre vu sa lourdeur  à mettre en oeuvre et la possibilité de voir un espace au bas du bloc concerné, je lui préfère une solution à l'aide d'un nouveau contexte de formatage.

Reply

Marsh Posté le 07-07-2007 à 15:42:50    

Euh, tu ne donneras pas de layout a IE6 avec un overflow:hidden.
 
IE embarque une propriété hasLayout, qui permet de donner une consistance à un bloc. La même chose peut être obtenue surtout tous les navigateurs avec overflow:hidden; ou encore display:table-cell.
 
ptibat : Note qu'une div est de type bloc, et qu'un element floaté l'est automatiquement.
 
bixibu : Ta solution est inapropriée dans une grande majorité de cas, simplement parce qu'elle génère du contenu inutile, tout comme la solution de moreno911


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 08-07-2007 à 10:14:28    

Shinuza a écrit :

Euh, tu ne donneras pas de layout a IE6 avec un overflow:hidden.


C'est justement ce que j'ai dit, mais peut-être me suis-je mal exprimée.
Ajouter un overflow:hidden crèera un nouveau context de formattage sur le navigateurs récent, mais pas sur IE6, d'où ma précision de lui donner le layout pour y pallier.

Reply

Marsh Posté le 08-07-2007 à 19:46:35    

Pitsy a écrit :

C'est justement ce que j'ai dit, mais peut-être me suis-je mal exprimée.
Ajouter un overflow:hidden crèera un nouveau context de formattage sur le navigateurs récent, mais pas sur IE6, d'où ma précision de lui donner le layout pour y pallier.


Sans oublier de rétablir l'overflow (_overflow:visible) pour IE car s'il te vient à l'esprit de mettre une hauteur minimum (ex : min-height:250px; _height:250px) à ton bloc, cela te permettra d'avoir un élément qui s'agrandit meme si l'overflow:hidden lui est collé. Et sinon dans le cas de notre ami, un display:table aurrait aussi bien fait l'affaire pour ajouter le contexte de formatage, puisqu'il a posé une largeur sur son bloc

Reply

Marsh Posté le 09-07-2007 à 08:01:51    

Bonjour,
 
J'ai eu ce probleme en créant mon site, je voulais que le contenant s'adapte au contenu !
Je l'ai résolu en virant les "div" et en les remplacant par des "p" partout où c'était possible  :)  
Une question se pose alors : est-ce sémantiquement correct ?


---------------
>>> Making Of <<<
Reply

Marsh Posté le 09-07-2007 à 09:29:14    

c'est pas ça qui va résoudre ton problème :D
Et en plus dans un P tu n'as pas le droit de mettre d'éléments de type block à l'intérieure. Et donc les navigateurs referment la balise P dès qu'ils voient un DIV à l'intérieur d'un P

Reply

Marsh Posté le 28-11-2007 à 23:10:39    

Il y'a de context de formatage sur #contenu, ton clear both sert à rien


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 28-11-2007 à 23:44:46    

je lui ai déjà dit 10 posts plus haut et c'est toujours pas fait, mais putain qu'est ce que tu fous :fou:

Reply

Marsh Posté le 29-11-2007 à 19:32:59    

orang a écrit :

Salut,
 
Désolé, merci d'avoir pris le temps de me répondre. Pourrais-je avoir un peu plus d'info.
 
J'ai retiré le clear:both; de l'id contenu, mais rien y fait.
 
Merci encore :)


Et t'as mis le contexte de formatage sur l'élement?  [:delarue2]


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 29-11-2007 à 22:25:36    

Bon,
 
Je recrée un poste, qui je l'espère vous apparaitra plus visible :
 
CSS :

Code :
  1. @charset "utf-8";
  2. body,td,th {
  3. color: #990000;
  4. }
  5. body {
  6. background-color: #FFFFFF;
  7. }
  8. a:hover {
  9. color: #CC0000;
  10. }
  11. .bloody #entete {
  12. height: 60px;
  13. width: 1000px;
  14. margin: auto;
  15. background-color: #00FF00;
  16. }
  17. .bloody #menu {
  18. margin: auto;
  19. height: 20px;
  20. width: 1000px;
  21. }
  22. .bloody #contenant {
  23. width: 1000px;
  24. margin: auto;
  25. border: thick solid #D40000;
  26. overflow: visible;
  27. clear: both;
  28. }
  29. .bloody #intercontenu {
  30. width: 20%;
  31. height: auto;
  32. float: right;
  33. z-index: auto;
  34. background-color: #CC99FF;
  35. margin-bottom: 0px;
  36. }
  37. .bloody #colonne {
  38. color: #FFFF00;
  39. width: 80%;
  40. height: auto;
  41. overflow: auto;
  42. z-index: auto;
  43. float: left;
  44. background-color: #0099CC;
  45. }
  46. .bloody #cadre {
  47. width: 1000px;
  48. margin: auto;
  49. height: auto;
  50. overflow: visible;
  51. clear: both;
  52. border: thick solid #CCFF00;
  53. }
  54. .bloody #pied {
  55. background-color: #00FF00;
  56. margin: auto;
  57. width: 1000px;
  58. clear: both;
  59. }


HTML :  

Code :
  1. </head>
  2. <body>
  3. <div class="bloody" id="contenant">
  4. <div class="bloody" id="entete">Placez ici le contenu de class "bloody" id "entete"</div>
  5. <div class="bloody" id="menu">Placez ici le contenu de class "bloody" id "menu"</div>
  6. <div class="bloody" id="cadre">
  7. <div class="bloody" id="colonne">
  8. <p>Placez ici le contenu de class "bloody" id "colonne"</p>
  9. <p> </p>
  10. <p> </p>
  11. </div>
  12. <div class="bloody" id="intercontenu">
  13. <p>Placez ici le contenu de class "bloody" id "intercontenu"</p>
  14. <p> </p>
  15. <p> </p>
  16. </div>
  17. </div>
  18. <div class="bloody" id="pied">Placez ici le contenu de class "bloody" id "pied"</div>
  19. </div>
  20. </body>
  21. </html>


Lien du site : http://bloodybol.free.fr/index.php
 
Merci encore :)


Message édité par orang le 29-11-2007 à 22:25:53
Reply

Marsh Posté le 30-11-2007 à 04:10:07    

Nom d'une couille putain :fou:
 
Tu mets overflow:hidden;_overflow:visible;zoom:1; sur ton élement "cadre" et on en parle plus [:pingouino]
 
http://www.blog-and-blues.org/arti [...] _formatage


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 30-11-2007 à 08:28:55    

Merci d'avoir pris le temps de me répondre, et même de m'avoir envoyé un lien !
 
Mais je ne suis toujours pas parvenu à obtenir ce que je souhaitais. J'ai pourtant suivi à la lette le lien et les infos que tu m'as filé.  
 
Merci encore en tout ca :)


Message édité par orang le 01-12-2007 à 09:58:35
Reply

Marsh Posté le 06-12-2007 à 10:40:14    

Salut, je vois bien que mon problème consistant à vouloir placer deux div flottantes dans une autre n'est pas évident, toutefois, ce topic est la preuve qu'une solution existe.
 
Si dès fois vous aviez la solution, je suis évidemment preneur.
 
Merci encore :)

Reply

Marsh Posté le 06-12-2007 à 13:18:36    

Bien sur qu'elle existe, je te l'ai donnée deux posts plus haut :o


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 06-12-2007 à 13:31:57    

Entendu désolé, je vais lire plus attentivement ton message.  
merci :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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