Pb de mise en forme + pb IE

Pb de mise en forme + pb IE - HTML/CSS - Programmation

Marsh Posté le 19-01-2009 à 17:37:53    

Bonjour,

 

J'ai un petit problème de mise en forme (je vous invite à copier coller le code dans un fichier et de tester chez vous en local)

 

Sous cette forme, le bloc qui est dessous de la ligne "Liste des installations", ne devrait pas être plus large (normalement il y a d'autres onglet que "Liste des installations", mais cela ne change pas le pb)

 


La solution que j'ai donc trouvé est de remplacer

Code :
  1. <div class="liste_onglet" style="width: 100%;">
 

par

Code :
  1. <div class="liste_onglet">


Le problème est que sous IE6 ça fout tout en l'air mes onglets  (ils se retrouvent dans le bloc du dessous, bref c'est pas facile à expliquer mais vous comprendrez vite :D)

 

Je suis conscient que ça fait un paquet de code, mais avec firebug ça devrait aller pour trouver d'ou vient le pb.

 

J'en chie depuis plusieurs heures, donc si une ame charitable pouvait m'aider  :ange:

 
Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  3.   <head>
  4.     <style>
  5.  /* ------------------------------------- reset CSS ------------------------------------- */
  6.  body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td {
  7.   margin:0;
  8.   padding:0;
  9.  }
  10.  table {
  11.   border-collapse:collapse;
  12.   border-spacing:0;
  13.  }
  14.  fieldset,img {
  15.   border:0;
  16.  }
  17.  address,caption,cite,code,dfn,em,strong,th,var {
  18.   font-style:normal;
  19.   font-weight:normal;
  20.  }
  21.  ol,ul {
  22.   list-style:none;
  23.  }
  24.  caption,th {
  25.   text-align:left;
  26.  }
  27.  h1,h2,h3,h4,h5,h6 {
  28.   font-size:100%;
  29.   font-weight:normal;
  30.  }
  31.  q:before,q:after {
  32.   content:'';
  33.  }
  34.  abbr,acronym { border:0;
  35.  }
  36.  /*------------------------------------------------------------------*/
  37.  body, input, select, table{
  38.   font-size: 11px;
  39.   color: #000000;
  40.   font-family: Verdana,Arial,Helvetica,sans-serif
  41.  }
  42.  /* contenu */
  43.  #content{
  44.   background-color:#FFFFFF;
  45.   margin-left: 260px;
  46.   margin-right: 10px;
  47.   padding-bottom:10px;
  48.  }
  49.  #chemin_fer{
  50.   color: #3366CC;
  51.   font-size: 14px;
  52.   font-weight: bold;
  53.   padding-bottom: 7px;
  54.   padding-top: 2px;
  55.   margin-bottom: 15px;
  56.  }
  57.  #liste{
  58.   margin: auto;
  59.  }
  60.  #body{
  61.   background-image:url(../images/menu.png);
  62.   background-repeat:repeat-y;
  63.   background-position:left;
  64.   overflow: hidden;
  65.   zoom:1;
  66.   padding-left: 2px;
  67.   padding-right: 2px;
  68.  }
  69.  /*================== tables============================= */
  70.  th{
  71.   font-weight: bold;
  72.   text-align: center;
  73.   white-space: nowrap;
  74.  }
  75.  tr.even {
  76.  }
  77.  tr.odd {
  78.   background-color: #E8EEF7;
  79.  }
  80.  /*--------formulaire------------------------*/
  81.  table.form {
  82.   padding: 20px;
  83.   margin: 0px;
  84.   border-collapse: collapse;
  85.   font-size: 11px;
  86.   font-family: Verdana,Arial,Helvetica,sans-serif;
  87.   border: #3366cc 1px solid;
  88.  }
  89.  div.liste_onglet table.form{
  90.   margin: -5px !important;
  91.   margin: 0px;
  92.   border: none;
  93.  }
  94.  table.form th {
  95.   padding: 2px;
  96.   vertical-align: top;
  97.   color: #3366cc;
  98.   padding-top: 4px;
  99.   text-align: right;
  100.  }
  101.  table th.title {
  102.   /*border-top: #3366cc 1px solid;
  103.   border-bottom: #3366cc 1px solid; */
  104.   border: #3366cc 1px solid;
  105.   border-bottom:none;
  106.   font-weight: bold;
  107.   vertical-align: top;
  108.   color: #3366cc;
  109.   padding: 2px;
  110.   background-color: #e8eef7;
  111.   text-align: center;
  112.  }
  113.  table.form tr td {
  114.   padding: 2px;
  115.  }
  116.  /*--------liste------------------------*/
  117.  table.clsAction {
  118.   text-align: center;
  119.   margin:0px auto;
  120.  }
  121.  table.clsAction tr.infos th {
  122.   color: #3366cc;
  123.   padding:2px;
  124.   border: #3366cc 1px solid;
  125.   background-color: #e8eef7;
  126.  }
  127.  table.clsAction tr.entete th {
  128.   background-color: #3366cc;
  129.   border: #3366cc 1px solid;
  130.   padding:3px 10px 7px;
  131.   color: #FFF;
  132.  }
  133.  table.clsAction td {
  134.   font-size: 11px;
  135.   border: #3366cc 1px solid;
  136.   padding: 2px;
  137.  }
  138.  table.clsAction tr.ligne_actions td {
  139.   padding: 2px;
  140.   border: none;
  141.  }
  142.  table.button_bar{
  143.   margin: 5px auto 0px;
  144.  }
  145.  table.cadre{
  146.   margin:auto;
  147.  }
  148.  /*onglets*/
  149.  div.onglets{
  150.   overflow: hidden;
  151.   margin-left:auto;
  152.   margin-right:auto;
  153.  }
  154.  div.ongletTextDis,  div.ongletTextEna{
  155.   float: left;
  156.   font-weight: bold;
  157.   text-decoration: none;
  158.   border: #3366cc 1px solid ;
  159.   border-bottom:none;
  160.   padding: 3px 5px;
  161.   text-align: center;
  162.   margin-right: 10px;
  163.  }
  164.  div.ongletTextDis {
  165.   color: #3366cc;
  166.   background-color: #e8eef7;
  167.  }
  168.  div.ongletTextDis a{
  169.   text-decoration: none;
  170.  }
  171.  div.ongletTextEna {
  172.   color: #ffffff;
  173.   background-color: #3366cc;
  174.  }
  175.  div.liste_onglet{
  176.   border: 1px solid #3366cc;
  177.   padding: 20px;
  178.   padding-left: -1px;
  179.   margin-left:auto;
  180.   margin-right:auto;
  181.   overflow: auto;
  182.  }
  183.  /**/
  184.  .center{
  185.   text-align:center;
  186.  }
  187.  .left{
  188.   text-align:left;
  189.  }
  190.  .right{
  191.   text-align:right;
  192.  }
  193. </style>
  194.     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  195.     <title>
  196.       FFT
  197.     </title>
  198.   </head>
  199.   <body>
  200.     <div id="body">
  201.       <div id="menu">
  202.        
  203.       </div>
  204.       <div id="content">
  205.         <div id="chemin_fer">
  206.           Configuration - <a href=
  207.           "installationListe.do">Installations</a>
  208.         </div>
  209.         <div id="liste" style="width:90%">
  210.           <div class="onglets" style="width:100%">
  211.             <div class="ongletTextEna" style="width:100%">
  212.               Liste des installations
  213.             </div>
  214.           </div>
  215.           <div class="liste_onglet" style="width:100%">
  216.             <table class="cadre" cellpadding="0" cellspacing="0" width="100%">
  217.               <tr>
  218.                 <th class="title">
  219.                   6 éléments
  220.                 </th>
  221.               </tr>
  222.               <tr>
  223.                 <td>
  224.                   <form method="post" action="installationSuppression.do">
  225.                     <table cellpadding="0" cellspacing="0" width="100%" class="clsAction">
  226.                       <tr class="entete">
  227.                         <th>
  228.                           &nbsp;
  229.                         </th>
  230.                         <th>
  231.                           &nbsp;
  232.                         </th>
  233.                         <th>
  234.                           Adresse                       
  235.                         </th>
  236.                         <th width="300">
  237.                           Ville                       
  238.      </th>
  239.                         <th>
  240.                           &nbsp;
  241.                         </th>
  242.                       </tr>
  243.                       <tr class="even">
  244.                         <td>
  245.                           <a href="installationModificationEntree.do?id=1"><img src="images/details.gif" alt="Modifier" /></a>
  246.                         </td>
  247.                         <td>
  248.                           <a href="installationUpdatePrincipale.do?id_installation=1">N</a> - Y
  249.                         </td>
  250.                         <td>
  251.                           adresse_1 adresse_2
  252.                         </td>
  253.                         <td>
  254.                           ville code_
  255.                         </td>
  256.                         <td>
  257.                           <input type="checkbox" name="tab" value="1" />
  258.                         </td>
  259.                       </tr>
  260.                     </table>
  261.                 </td>
  262.               </tr>
  263.             </table>
  264.           </div>
  265.         </div>
  266.       </div>
  267.     </div>
  268.   </body>
  269. </html>


Message édité par Alisteroid le 19-01-2009 à 17:40:10
Reply

Marsh Posté le 19-01-2009 à 17:37:53   

Reply

Marsh Posté le 20-01-2009 à 11:30:45    

[:jarcry]

Reply

Marsh Posté le 20-01-2009 à 19:20:08    

:cry:

Reply

Marsh Posté le 21-01-2009 à 13:31:26    

Bonjour.
 
Je viens de tester :
Je ne vois aucune différence (enfin, aucune différence majeure) entre IE 6 et FF 2...
 
Une petite remarque :
Tu utilises beaucoup de DIV à mon goût :
Rien que le DIV id="body" est de trop ! Il suffit de mettre les propriétés directement dans le body {}
En gros, tu as une liste qui contient (a priori) des onglets.
C'est après que j'ai du mal :
- Chaque onglet contient un ongletTextEna. Mais c'est le titre de l'onglet, non ?
=> Tu pourrais remplacer le div ongletTextEna par un Hx
- Chaque onglet contient une ou des liste_onglet ? si cette liste_onglet ne contient qu'une table cadre, tu peux peut-être supprimer le div liste_onglet.
 
En général, les "onglets" sont plutôt gérés sous forme de liste que dans des DIV.
 
Une des causes du problème peut être que les DIV ne sont pas imbriqués. En imbriquant onglets et liste_onglet, ça irait peut-être mieux ?
 
Je sais que ce n'est pas la réponse attendue, mais plus tu simplifieras ta page, moins tu risque de problèmes de mise en page...

Reply

Marsh Posté le 21-01-2009 à 13:53:53    

macgawel a écrit :

Bonjour.

 

Je viens de tester :
Je ne vois aucune différence (enfin, aucune différence majeure) entre IE 6 et FF 2...


Non y en a pas, mais comme je l'ai dit le contenu du div #liste_onglet sort du div #liste alors qu'il est imbriqué dedans.
Du coup comme tu le vois l'onglet ne vas pas jusqu'au bout du cadre.

 
macgawel a écrit :


Une petite remarque :
Tu utilises beaucoup de DIV à mon goût :
Rien que le DIV id="body" est de trop ! Il suffit de mettre les propriétés directement dans le body {}


Non le div #body est juste mal nommé, il représente le corp de ma page sans entete et pied de page.

 
macgawel a écrit :


En gros, tu as une liste qui contient (a priori) des onglets.
C'est après que j'ai du mal :
- Chaque onglet contient un ongletTextEna. Mais c'est le titre de l'onglet, non ?
=> Tu pourrais remplacer le div ongletTextEna par un Hx


div #onglet contient 1 ou plusieurs onglets dont la classe est soit ongletTextEna, soit ongletTextDis (si on vient de cliquer sur un onglet, sa classe devient ongletTextDis... pour ne pas pouvoir le recliquer)
Qu'est ce que "Hx"?

 
macgawel a écrit :


- Chaque onglet contient une ou des liste_onglet ? si cette liste_onglet ne contient qu'une table cadre, tu peux peut-être supprimer le div liste_onglet.

 

En général, les "onglets" sont plutôt gérés sous forme de liste que dans des DIV.


Chaque onglet ne contient qu'une liste_onglet (pour l'instant ...je sais pas si ça va être comme ça après)
Pour les onglets sous forme de liste, je sais mais je suis pas sur que cela règlera mon probleme.

 
macgawel a écrit :


Une des causes du problème peut être que les DIV ne sont pas imbriqués. En imbriquant onglets et liste_onglet, ça irait peut-être mieux ?


Le probleme est que j'utilise les taglib en java et que sur certains écran je n'ai pas d'onglets mais j'utilise aussi liste_onglet, donc j'ai du faire en sorte de ne pas les imbriquer...

 
macgawel a écrit :


Je sais que ce n'est pas la réponse attendue, mais plus tu simplifieras ta page, moins tu risque de problèmes de mise en page...

 

Ca je sais, mais le plus dur est de gérer un minimum de tag en java pour gérer mes différentes mise en page.

 

Bref le seul problème que je rencontre c'est que le contenu div #liste_onglet sort du div #liste, suffit avec firebug d'inspecter le code pour le voir immédiatement, en se positionant sur div #liste, puis sur div #liste_onglet on voit bien que le div #liste_onglet déborde de 2cm sur la droite, du coup div#liste n'est plus vraiment centré...

 

J'ai trouvé la solution en enlevant le style="width:100%" de div #liste_onglet mais cela fout la mise en page en l'air sous IE6! (sous firefox c'est nickel)... je cherche à avoir ce rendu en trouvant la vraie solution..

 

Merci quand même pour tes réfléxions.

Message cité 1 fois
Message édité par Alisteroid le 21-01-2009 à 13:55:24
Reply

Marsh Posté le 21-01-2009 à 15:15:16    

Alisteroid a écrit :

Non y en a pas, mais comme je l'ai dit le contenu du div #liste_onglet sort du div #liste alors qu'il est imbriqué dedans.
Du coup comme tu le vois l'onglet ne vas pas jusqu'au bout du cadre.


L'onglet, c'est la "barre bleue qui contient Liste des installations" ?
 

Alisteroid a écrit :

div #onglet contient 1 ou plusieurs onglets dont la classe est soit ongletTextEna, soit ongletTextDis (si on vient de cliquer sur un onglet, sa classe devient ongletTextDis... pour ne pas pouvoir le recliquer)
Qu'est ce que "Hx"?

Hx = H1 à H6 = Les titres (bon, je reconnais que la notation n'était pas forcément évidente  :o  )

Alisteroid a écrit :

Bref le seul problème que je rencontre c'est que le contenu div #liste_onglet sort du div #liste, suffit avec firebug d'inspecter le code pour le voir immédiatement, en se positionant sur div #liste, puis sur div #liste_onglet on voit bien que le div #liste_onglet déborde de 2cm sur la droite, du coup div#liste n'est plus vraiment centré...
 
J'ai trouvé la solution en enlevant le style="width:100%" de div #liste_onglet mais cela fout la mise en page en l'air sous IE6! (sous firefox c'est nickel)... je cherche à avoir ce rendu en trouvant la vraie solution..
 
Merci quand même pour tes réfléxions.


J'avais bien compris le problème... Mais je ne vois pas de différence de mise en page entre IE6 et FF2, avec ou sans le width=100%.
en particulier, je n'ai pas l'impression que ça foute la mise en page en l'air...
 
Pour ce qui est du décalage, il est dû à :

Code :
  1. div.liste_onglet{
  2.   border: 1px solid #3366cc;
  3. padding: 20px;
  4. }


en gros :
Tu as ton div onglets qui fait 100% (de liste.
Ton div  liste_onglet qui fait aussi 100% de liste.
Ils ont donc la même taille.
Mais ton div liste_onglet a un padding de 20px. Du coup, le navigateur rajoute 20 pixels de chaque côté, en plus de le taille normale.
Du coup, forcément, le div liste_onglet est plus long (de 40 pixels) que le div onglets. (Accessoirement, suivant les navigateurs, la bordure de 1px dans liste_onglet est à rajouter)
D'où l'impression que l'onglet ne vas pas jusqu'au bout du cadre.
 
Pour la solution, ça va dépendre de pas mal de choses...
Entre autres, tu peux enlever le padding, fixer les tailles (en pixels ou - mieux - en em, au lieu de %ages).

Reply

Marsh Posté le 21-01-2009 à 15:40:57    

macgawel a écrit :


L'onglet, c'est la "barre bleue qui contient Liste des installations" ?
 


Oui, la y en a qu'un (en gros j'utilise mon onglet pour faire une entete du cadre, mais normalement y a 2 ou 3 onglet de 50px environ qui vont donc pas jusqu'au bout)
 

macgawel a écrit :

Hx = H1 à H6 = Les titres (bon, je reconnais que la notation n'était pas forcément évidente  :o  )


ok j'avais pas compris :D
 

macgawel a écrit :


J'avais bien compris le problème... Mais je ne vois pas de différence de mise en page entre IE6 et FF2, avec ou sans le width=100%.
en particulier, je n'ai pas l'impression que ça foute la mise en page en l'air...
 
Pour ce qui est du décalage, il est dû à :

Code :
  1. div.liste_onglet{
  2.   border: 1px solid #3366cc;
  3. padding: 20px;
  4. }


en gros :
Tu as ton div onglets qui fait 100% (de liste.
Ton div  liste_onglet qui fait aussi 100% de liste.
Ils ont donc la même taille.
Mais ton div liste_onglet a un padding de 20px. Du coup, le navigateur rajoute 20 pixels de chaque côté, en plus de le taille normale.
Du coup, forcément, le div liste_onglet est plus long (de 40 pixels) que le div onglets. (Accessoirement, suivant les navigateurs, la bordure de 1px dans liste_onglet est à rajouter)
D'où l'impression que l'onglet ne vas pas jusqu'au bout du cadre.
 
Pour la solution, ça va dépendre de pas mal de choses...
Entre autres, tu peux enlever le padding, fixer les tailles (en pixels ou - mieux - en em, au lieu de %ages).


arf je trouvais que le décalage etait pile = au padding, le problème est que je veux pas fixer ma largeur en px, mais vraiment en %, tout en gardant ce padding  :cry:  :D  
 
Bref , bizarre que ma solution ne foute pas la mise en page en l'air sou sIE6 chez toi, ça serait donc la solution, mais bon si ça marche pas chez moi c'est qu'il y a un pb quelque part.

Reply

Marsh Posté le 21-01-2009 à 15:42:40    

Bon je sais pas ce qu'il se passe, mais ça marche en enlevant le width=100% comme je le disais, pourtant j'ai bien vidé mon cache, rien touché depuis   [:natas]  
 
:fou:  :fou:  :fou:  
 
 [:ichronos]  
 [:natas]  
 

Reply

Marsh Posté le 21-01-2009 à 15:44:02    

En tout cas merci de t'être pris la tête à regarder ce code, qui je sais n'est pas franchement excellent, mais la faible souplesse que j'ai avec les tag, la mise en forme qu'on m'impose, et le peu de temps qu'on m'attribue me limite beaucoup.
 
:jap:

Reply

Sujets relatifs:

Leave a Replay

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