2010-05-12 4 views
2

J'utilise des listes non-ordonnées qui imbrique quelques divs pour montrer la sortie désirée sur l'écran. J'utilise css pour les styler et ils semblent parfaits sur chrome et firefox. Mais dans IE (8) il semble qu'il y ait un problème que je n'ai pas pu localiser.Problème css avec des listes non ordonnées (comme d'habitude avec IE)

J'utilise le dessous CSS

<style type="text/css"> 
     .ur_container {width:980px; padding: 0; margin: 0;} 
     .ur_container ul.bx_grp {list-style-type: none; padding: 0px; margin: 0px; } 
     .ur_container ul.bx_lnx {list-style-type: none; padding: 5px; margin: 0px; } 

     .bx_grp {border:1px solid #c5c5c5; background-color: yellow; margin:0; padding:0;} 
     .bx_grp_header {background-color: #d6d6d6; border-bottom:1px solid #acacac;} 
     .bx_grp_title {float: left; font: bold 11px Arial; padding:5px;} 
     .bx_grp_options {float: right; font: 10px Arial; padding: 5px;} 
     .bx_grp_options a{color: #125B93; text-decoration: none; }   

     .bx_lnx {padding:0px; background-color: red;} 
     .bx_lnx_header {font:11px Arial; color:#333;} 
     .bx_lnx_title {float: left;} 
     .bx_lnx_refno {background-color:#333; color: fff; padding: 1px; margin-right: 5px; } 
     .bx_lnx_options {float: right;} 
     .bx_lnx_options a {color: #258CF4; text-decoration: none;} 
     .bx_lnx_url {font: 9px Arial; color: #999; margin-top: 4px; } 
     .bx_lnx_notes {} 
     .bx_lnx_notes span {background-color: #FDFFCC; color: #666; font: 9px Arial; padding:2px;} 
     .bx_lnx_tags {} 
     .bx_lnx_tags span {background-color: #efefef; border-bottom: 1px solid #ccc; color: #666; font: 9px Arial; padding: 1px 2px 1px 2px; margin-right: 5px;} 
    </style> 

contre le code HTML suivant

<div class="ur_container"> 
    <ul class="bx_grp" id="grp_1"> 
     <li> 
      <div class="bx_grp_header"> 
       <span class="bx_grp_title">Personal File</span> 
       <span class="bx_grp_options"><a href="#">rename</a> &bull; <a href="#">make private</a> &bull; <a href="#">hide</a href="#"> &bull; <a href="#">delete</a></span> 
       <div style="clear: both;"></div> 
      </div>  
     </li> 
     <li> 
      <ul class="bx_lnx" id="lnx_1"> 
       <li> 
        <div class="bx_lnx_header"> 
         <span class="bx_linx_title"><span class="bx_lnx_refno">#3103</span>How to file personal files</span> 
         <span class="bx_lnx_options"><a href="#">edit</a> &bull; <a href="#">move</a> &bull; <a href="#">delete</a></span> 
        </div> 
       </li> 
       <li class="bx_lnx_url">http://www.google.com</li> 
       <li class="bx_lnx_notes"><span>search google for this</span></li> 
       <li class="bx_lnx_tags"><span>personal</span><span>file</span><span>google</span></li> 
      </ul>  
     </li> 
    </ul> 
</div> 

qui produit cette sortie dans Chrome et Fireworks alt text http://haberhavadis.com/chff.jpg

et ce qui suit dans IE alt text http://haberhavadis.com/IE.jpg

Les couleurs jaune et rouge ont été utilisées afin de montrer que tout va mal. La partie jaune est la partie non désirée.

Quelqu'un peut-il me diriger dans la bonne direction s'il vous plaît?

Cordialement

+0

Quel type de document utilisez-vous? –

+0

Je n'utilise pas vraiment de doctype. Serait-ce un problème? –

+0

N'ayant pas de doctype provoque généralement IE <= 7 à afficher en mode quirks, je ne suis pas sûr de ce que IE 8 choisit de faire sans un doctype valide. –

Répondre

3

Cela ressemble rendu IE8 en mode document IE7, qui peut être déclenché un certain nombre de façons.

(Mise à jour après OP a déclaré qu'aucun DOCTYPE est utilisé.)

Omettre un DOCTYPE fera votre page de rendre à Quirks __gVirt_NP_NN_NNPS<__ en mode. Voir What happens in Quirks Mode? Vous êtes certainement libre de le faire, mais cette réponse sera basée sur l'ajout d'un DOCTYPE afin que la page sera rendue en Normes mode. Vous pouvez décider vous-même si vous voulez aller dans cette voie (voir Choosing the right doctype for your HTML documents.)

je suggère langage HTML 4.01 strict ...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

... ou même HTML 5 ...

<!DOCTYPE html> 

... et l'utilisation d'un validator pour intercepter les erreurs de balisage.

Maintenant que nous rendons en mode standard, nous pouvons utiliser le W3C box model dans lequel le width d'un élément est inclusif de la border et padding, mais pas le margin. Aller en mode Standards seul prendra soin de l'écart que vous voyez dans IE8, mais vous le verrez toujours dans IE7 (même en mode Standards - c'est un bug de navigateur). Puisque vous utilisez une largeur fixe (et en supposant que vous rendiez en mode standard vous passez en mode Standards), une solution facile est ...

#lnx_1 {width: 968px;} 

La largeur de 968px provient de 980px (largeur de .ur_container) - 2px (1px de bordure de chaque côté de .bx_grp) - 10px (rembourrage 5px de chaque côté de .ur_container ul.bx_lnx) = 968px.

Voir this page pour plus d'informations sur cette correction de bogue d'élément de liste IE.

Un autre changement est nécessaire lors du passage en mode Normes:

.bx_lnx_refno {background-color:#333; color: fff; padding: 1px; margin-right: 5px; } 

La partie color: fff est invalide sans le signe dièse; changer à color: #fff

Comme pour <span class="bx_lnx_options"> étant une ligne inférieure à celle que vous voulez, passer en mode Standards le mettra sur la première ligne dans IE8, mais pas dans IE7. Modification de l'ordre source devrait corriger ce ...

<span class="bx_lnx_options"><a href="#">edit</a> &bull; <a href="#">move</a> &bull; <a href="#">delete</a></span> 
<span class="bx_linx_title"><span class="bx_lnx_refno">#3103</span>How to file personal files</span> 

Voir this answer pour comprendre pourquoi cela se produit.

+0

Merci, cela a résolu le problème dans une certaine mesure. 1) L'écart supérieur est supprimé mais il y a maintenant un petit écart sur la droite. Laisser cela seul, le qui est flottant vers la droite, semble toujours une ligne ci-dessous où il devrait être (voir l'image chorme et firefox où il est dans le coin en haut à droite de la boîte rouge) des idées pour ça? 2) Comment avez-vous calculé le "968px"? 3) J'ai visité le lien que vous avez suggéré mais c'est une mise en page beaucoup plus simple. Dans mon cas, c'est plus complexe et tout ce que j'ai essayé soit gâché la mise en page dans IE alors qu'il corrige dans les autres ou vice versa ... –

+0

@Emin Mis à jour ma réponse en réponse à vos questions et le commentaire que vous avez fait sur ne pas utiliser un DOCTYPE –

+0

J'apprécie vraiment le temps et les efforts que vous avez consacrés à cela pour résoudre mon problème. Tout fonctionne bien maintenant et je connais maintenant plus de doctypes et d'autres problèmes. J'espère un jour devenir un expert et aider les autres (comme un retour sur investissement!) Merci encore une fois! @ricebowl. Merci aussi d'avoir répondu. Je n'avais aucune idée de l'importance (ou du besoin) du DOCTYPE! –

Questions connexes