Positionner des éléments dans un cellule de tableau

Positionner des éléments dans un cellule de tableau - HTML/CSS - Programmation

Marsh Posté le 28-07-2006 à 23:45:23    

Bonjour,
Je souhaite positionner des éléments <DIV> dans une cellule de tableau <TD>... Et je ne sais pas comment m'y prendre...
J'ai essayé de positionner la <DIV> en relatif, ceci ne fonctionne pas (je pensais que le positionnement relatif se ferait par rapport à la <TD> )... :  
 
Si je met le style suivant, cela fonctionne sous Gecko mais pas sous MSIE
 

Code :
  1. td {
  2.       position : relative;   
  3.     }
  4.     div.ligneHaut {
  5.       position : relative; 
  6.       top : 5px;
  7.       left : 10px;
  8.     }
  9.     div.ligneBas {
  10.       position : relative; 
  11.       top : 10px;
  12.       left : -25px;
  13.     }
  14.   </style>


 
Voici ma page :
 

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  2.   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  3. <html>
  4. <head>
  5.   <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </meta>
  6.   <meta http-equiv="Content-Style-Type" content="text/css"> </meta>
  7.   <meta http-equiv="Content-Language" content="fr"> </meta>
  8.   <title>Test</title>
  9.   <style type="text/css">
  10.     #divEnglobante {
  11.       width : 300px;
  12.       height : 100px;
  13.       overflow-y : scroll;
  14.       border : 1px solid purple;
  15.     }
  16.     table {
  17.       table-layout : fixed;
  18.     }
  19.    
  20.     td {
  21.       border : 1px solid red;   
  22.     }
  23.     div.divDeLaCellule {
  24.       overflow : hidden; /* Pour tronque le texte */
  25.     }
  26.     col.colonne1 {
  27.       width : 100px;     
  28.     }
  29.     col.colonne2 {
  30.       width : 50px;     
  31.     }
  32.     /* Ce qui suit :  
  33.        OK Gecko  
  34.        KO MSIE */
  35.     td {
  36.       position : relative;   
  37.     }
  38.     div.ligneHaut {
  39.       position : relative; 
  40.       top : 5px;
  41.       left : 10px;
  42.     }
  43.     div.ligneBas {
  44.       position : relative; 
  45.       top : 10px;
  46.       left : -25px;
  47.     }
  48.   </style>
  49. </head>
  50. <body>
  51. <div  id="divEnglobante" >
  52.    <table cellspacing=0  >
  53.      <colgroup>
  54.        <col class="colonne1"/> 
  55.        <col class="colonne2"/> 
  56.      </colgroup>
  57.      <tr>
  58.        <td>
  59.          <div class="divDeLaCellule">
  60.            <div class="ligneHaut" >je&nbsp;souhaite&nbsp;que&nbsp;ce&nbsp;texte&nbsp;soit&nbsp;tronque</div>
  61.            <div class="ligneBas" >je&nbsp;souhaite&nbsp;que&nbsp;ce&nbsp;texte&nbsp;soit&nbsp;tronque</div>
  62.          </div>
  63.        </td>
  64.        <td>
  65.          &nbsp;
  66.        </td>
  67.      </tr>
  68.      <tr>
  69.        <td>
  70.          <div class="divDeLaCellule">
  71.            <div class="ligneHaut" >je&nbsp;souhaite&nbsp;que&nbsp;ce&nbsp;texte&nbsp;soit&nbsp;tronque</div>
  72.            <div class="ligneBas" >je&nbsp;souhaite&nbsp;que&nbsp;ce&nbsp;texte&nbsp;soit&nbsp;tronque</div>
  73.          </div>
  74.        </td>
  75.        <td>
  76.          &nbsp;
  77.        </td>
  78.      </tr>
  79.      <tr>
  80.        <td>
  81.          <div class="divDeLaCellule">
  82.            <div class="ligneHaut" >je&nbsp;souhaite&nbsp;que&nbsp;ce&nbsp;texte&nbsp;soit&nbsp;tronque</div>
  83.            <div class="ligneBas" >je&nbsp;souhaite&nbsp;que&nbsp;ce&nbsp;texte&nbsp;soit&nbsp;tronque</div>
  84.          </div>
  85.        </td>
  86.        <td>
  87.          &nbsp;
  88.        </td>
  89.      </tr>
  90.      <tr>
  91.        <td>
  92.          <div class="divDeLaCellule">
  93.            <div class="ligneHaut" >je&nbsp;souhaite&nbsp;que&nbsp;ce&nbsp;texte&nbsp;soit&nbsp;tronque</div>
  94.            <div class="ligneBas" >je&nbsp;souhaite&nbsp;que&nbsp;ce&nbsp;texte&nbsp;soit&nbsp;tronque</div>
  95.          </div>
  96.        </td>
  97.       <td>
  98.          &nbsp;
  99.        </td>
  100.      </tr>
  101.    </table>
  102. </div>
  103. </body>
  104. </html>

Reply

Marsh Posté le 28-07-2006 à 23:45:23   

Reply

Marsh Posté le 29-07-2006 à 08:43:21    

Peux-tu m'expliquer quel est l'interêt de mettre des div dans un tableau ? J'avoue que je calle...

Reply

Marsh Posté le 29-07-2006 à 11:50:56    

Bonjour,
 
Voici ce que je souhaite faire.
- Une DIV de hauteur fixe mais 'scrollable'.
- Dans cette DIV un tableau.
- Le scroll de la DIV permet de voir la totalité du tableau.
- Dans les cellules du tableau je souhaite pouvoir disposer un libellé (à partir du coin haut gauche) et un pictogramme (cadrer en bas à gauche de la cellule).
J'espère avoir été clair...
 
Je me suis donc dis que pour faire ceci il suffisait de mettre des DIV (une pour le texte et une pour le pictogramme) dans la cellule TD. De positionner celles ci en relatif.
Pour feinter (ou me croyant plus malin que les moteurs de rendus) j'ai forcé le positionnement de la TD en relatif. Cela fonctionne très bien sous Firefox mais pas sous MSIE, le tableau 'sort de la DIV'.
 
Merci.
Rémy.

Reply

Marsh Posté le 29-07-2006 à 11:56:43    

mais ta table n a pas besoin d etre dans une div ...c est deja une div elle meme [:pingouino]
et pour un truc du genre  
ma phrase
mon image  
t as pas besoin de creer des divs supplementaires [:pingouino]

Reply

Marsh Posté le 29-07-2006 à 12:35:43    

mIRROR, peux tu modifier mon code pour régler le problème. Je ne vois pas comment procéder.
Merci.
Rémy.

Reply

Marsh Posté le 29-07-2006 à 12:41:11    

Remy90 a écrit :

mIRROR, peux tu modifier mon code pour régler le problème. Je ne vois pas comment procéder.
Merci.
Rémy.


 
 
non
de rien
[:natas]

Reply

Marsh Posté le 29-07-2006 à 12:47:07    

Citation :

mais ta table n a pas besoin d etre dans une div ...c est deja une div elle meme [:pingouino]
et pour un truc du genre  
ma phrase
mon image  
t as pas besoin de creer des divs supplementaires [:pingouino]


 
mIRROR,
Heu... Des réponses comme ca je peux en faire des dizaines par jours...
En tout cas merci de ton secours...
Tes compétences en la matière m'ont beaucoup aider...
C'est quoi ton trip là ?
 
Rémy.

Reply

Marsh Posté le 29-07-2006 à 12:53:26    

On se calme tout le monde.
 
1) Il a besoin de son div pour le scroll car une table ou un td ne scroll pas (du moins pas chez tous les navigateurs).
2) Pour les autres questions, tu peux positionner les éléments à l'intérieur de tes cellules en absolute à condion bien sûr que la hauteur des cellules soient précisées.

Reply

Marsh Posté le 29-07-2006 à 13:00:55    

Merci Hermes...
Si je positionne les DIV à l'intérieur du TD en absolue, ceci 'explose' complètement le tableau..  :(  
 

Code :
  1. div.ligneHaut {
  2.       position : absolute; 
  3.       top : 5px;
  4.       left : 10px;
  5.     } 
  6.     div.ligneBas {
  7.       position : absolute; 
  8.       top : 10px;
  9.       left : -25px;
  10.     }


 
En fait mon code fonctionne très bien sous Gecko, mais je dois assurer la compatibilité...
Rémy.

Reply

Marsh Posté le 29-07-2006 à 13:02:19    

Remy90 a écrit :

Merci Hermes...
Si je positionne les DIV à l'intérieur du TD en absolue, ceci 'explose' complètement le tableau..  :(  
 

Code :
  1. div.ligneHaut {
  2.       position : absolute; 
  3.       top : 5px;
  4.       left : 10px;
  5.     } 
  6.     div.ligneBas {
  7.       position : absolute; 
  8.       top : 10px;
  9.       left : -25px;
  10.     }


 
En fait mon code fonctionne très bien sous Gecko, mais je dois assurer la compatibilité...
Rémy.


 
Au lieu des top et des left, utilise margin-top, margin-left. :o
 
Et fixe la hauteur de tes cellules...

Reply

Marsh Posté le 29-07-2006 à 13:02:19   

Reply

Marsh Posté le 29-07-2006 à 13:10:36    

Merci Hermes...
 
Le problème est que je suis susceptible de pouvoir positionner plusieurs DIV dans la TD. Dans mon exemple j'en ai mis uniquement deux.
Avec margin, je ne vois pas comment positionner plusieurs DIV les unes par rapports aux autres, mêmes si elles sont flottantes.
As tu le temps de tester ma page dans Firefox et MSIE pour bien comprendre mon soucis...
 
PS : Concernant le 'on se calme', je n'étais pas énervé simplement 'agacé'  ;).  
 
Rémy.

Reply

Sujets relatifs:

Leave a Replay

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