2010-06-24 5 views
4

J'ai un bug bizarre.
Dans mon fichier Css je la règle suivante:IE bug css: il ajoute 'padding-left' à la fin de 'background-image'?

.conf-view a 
{ 
    padding-left: 10px; 
    background-image: url("images/bullet-green.gif"); 
    background-position: center left; 
    background-repeat: no-repeat; 
} 

Le problème est que IE interprète en quelque sorte comme ceci:

.conf-view A /* NOTE - this is copied from the IE-Developer tools css tab. */ 
    background-image : url(images/bullet-green.gif); PADDING-LEFT: 10px 
    background-repeat : no-repeat 
    background-position : left center 

Voir la gauche padding-là?
Maintenant, le navigateur ignore simplement la règle de remplissage, entraînant un échec de mise en page.

Est-ce un bug connu? quelqu'un peut-il trouver un moyen de contourner cela?

Merci beaucoup
Kfir

+0

Besoin d'un lien .... – reisio

+0

je vais créer une page de test simplifiée – kfiroo

+0

soit 8 actuellement. mais je l'ai également vu sur l'aperçu de la plate-forme IE9. – kfiroo

Répondre

2

Il semble que ce soit la manière différente d'appliquer les images d'arrière-plan ... En sauvegardant votre code et en jouant avec la feuille de style, le padding à 50 déplaçait l'image et le texte de façon à ne pas ignorer le padding. avec le positionnement de l'image de fond différemment.

curieusement la suggestion de faileN n'était pas loin de ce que j'ai fait pour le réparer. Si vous mettez "display: inline-block" alors cela semble fonctionner dans IE7 et FF. Bien sûr, vous voudrez tester il n'a pas d'effets secondaires ailleurs avant de l'utiliser.

+0

merci beaucoup, je vais essayer si je ne peux pas obtenir la première solution pour travailler – kfiroo

+0

merci, votre réponse a résolu mon bug. – kfiroo

0

Peut-être est parce que le a -Element est normalement un élément en ligne. Il n'est pas courant que ces éléments aient des images d'arrière-plan et des marges/marges, même si c'est autorisé. Mettez display: block; dans votre définition de style. Peut-être que cela vous aide dans cette situation.

EDIT

En attente de votre échantillon de code :)

+0

si elle aura [display: block] elle ne se comportera plus comme un élément inline ce qui n'est pas le résultat souhaité .. merci quand même – kfiroo

+0

Marcel: 1. Je connais la différence entre élément et tag - désolé de ne pas être parfait. 2.Oui, ils le peuvent, mais comme vous le voyez, cela provoque des problèmes parmi les différents navigateurs, ce qui peut parfois être évité avec ma suggestion, puisque je l'ai souvent utilisé. Ok: Je pensais que vous vouliez qu'il se comporte comme un élément de bloc, parce que vous étiez en train de mettre le fond et le rembourrage. –

+0

en ligne-bloc aurait été une option plus raisonnable je pense quand même ... – Chris

3

Il semble être un bug dans IE Developer Tools, où le code d'affichage gobe juste la définition suivante non-fond (classés par ordre alphabétique, apparemment) si vous avez une image de fond spécifiée séparément. Votre texte ne chevauche pas votre image de fond sur cette page sur l'un des liens, donc pour moi il semble que le CSS est interprété correctement indépendamment; pouvez-vous expliquer pourquoi vous pensez que ce n'est pas le cas?

Je ne sais pas comment ils ont réussi à créer ce bug, mais si vous voulez pour elle d'aller loin, en précisant les définitions de fond dans le raccourci semble ne pas présenter ce comportement:

background:transparent url("images/bullet-green.gif") scroll no-repeat left center;

+0

merci pour votre rejouer. dans cette démo, on dirait que le css est interprété correctement mais sur mon site de production le texte et le chevauchement bg-img .. je vais essayer de combiner les règles bg en une seule – kfiroo

+0

sympa! ça a marché. Mal essayer cela dans la version live maintenant. merci beaucoup – kfiroo

+0

Cool choses. Si vous avez un problème lorsque vous le remettez sur votre site de production, je pense qu'il doit y avoir une règle conflictuelle ailleurs dans votre feuille de style. –