1

J'utilise des commentaires conditionnels pour lier un fichier css (appelons-le "IEonly.css") si la version IE est inférieure à 8. J'essaie de remplacer certaines propriétés dans le fichier css ordinaire. Assez curieusement, IEonly.css définira correctement les nouvelles propriétés css, mais ne remplacera pas les propriétés du fichier CSS normal!Le fichier CSS conditionnel ne remplace pas le fichier CSS standard

(J'essaie de faire ce travail pour IE7).

Aide!

EDIT: J'ai ajouté un! Important après le style CSS pour voir si cela aiderait. Ce n'est pas le cas.

+2

Pourriez-vous poster un exemple de style d'URL et d'élément? –

+0

Hmmm ... apparemment! Important ne fonctionne pas toujours pour IE ... – dmr

Répondre

-1

J'ai ajouté une classe à l'élément et l'ai référencé sur la feuille de style IEonly avec le sélecteur de classe et la feuille de style régulière sans. Cela a provoqué la déclaration de style IEonly pour remplacer la déclaration régulière.

+2

Pouvez-vous poster un exemple du code? À la fois le standard et l'IE. Il semble qu'il y ait un problème avec la spécificité si cela fonctionne lorsque vous ajoutez une classe dans les feuilles de style IE. –

6

Étant donné plusieurs feuilles de style (même si certaines sont cachées à d'autres navigateurs avec des commentaires conditionnels), les règles normales de the cascade s'appliqueront.

Assurez-vous que vos sélecteurs sont spécifiques et que vous appliquez les feuilles de style dans le bon ordre.

+0

Ne devrait pas! Important de contourner la cascade? – dmr

+4

Cela fait partie de la cascade (et c'est rarement la meilleure approche pour résoudre un problème de toute façon) – Quentin

1

N'oubliez pas que vous pouvez également utiliser la règle !important pour remplacer les définitions CSS. Here is the W3C documentation sur cette règle.

+0

J'ai essayé d'ajouter un! Important. Cela n'a pas aidé. – dmr

1

Vous pouvez peut-être réorganiser les feuilles de style par défaut pour les styles IE et utiliser un if !IE conditionnel pour les remplacements de «bon navigateur».

3

Si vous utilisez les mêmes sélecteurs dans les deux feuilles de style, cela ne pose aucun problème tant que vous placez la feuille de style IE conditionnelle après la feuille de style classique. Si vous faites cela et que votre feuille IE ne prend pas alors vous devrez peut-être écrire des sélecteurs plus spécifiques.

#sidebar #nav li a { } 

au lieu de ...

#nav li a { } 

ou

li a { } 
0

Sur la base de ma propre expérience de problèmes similaires, je suppose qu'il y a un certain caractère mauvais ou manquant qui se cache quelque part dans votre IEonly.css fichier. Ils peuvent être très difficiles à traquer, alors faites ce qui suit:

  1. Supprimez temporairement tous les CSS de IEonly.css, à l'exception de la partie que vous utiliserez pour remplacer le CSS normal. Testez pour voir si cela fonctionne. Si c'est le cas, continuez à coller le code dans le fichier, dans les sections comme bon vous semble. J'espère que vous trouverez le problème.
  2. Si votre remplacement ne fonctionne pas lorsque seule cette partie du code existe dans le fichier, assurez-vous que vous avez les bons sélecteurs et que la spécificité est OK.

Vous pouvez également essayer de lire http://www.w3.org/TR/CSS2/cascade.html#important-rules pour plus d'informations.

Pouvez-vous publier du code pour nous de regarder? Cela aiderait.