classes multiples et Internet Explorer ?

WRInaute accro
Bonjour

J'ai un fichier de style css, qui peut très certainement être simplifié, particulièrement en utilisant des classes multiples.

Par exemple :

Code:
  div.generic_class { /* Eléments communs à cette classe "générique" */ }

  div.generic_class.specific_class_1 { /* Eléments particuliers à cette sous-classe */ }

  div.generic_class.specific_class_2 { /* Eléments particuliers à cette sous-classe */ }


Evidemment, generic_class et les specific_class, ne sont pas des termes connus en css, ce sont simplement des noms de classe.

En (X)HTML, on aurait :

<div class="generic_class specific_class_1">

et

<div class="generic_class specific_class_2">

Ceci, pour mettre les éléments communs à ces deux <div , dans generic_class , puis les éléments particuliers dans les classes spécifiques, pour économiser l'espace fichier.

C'est ce que je compte faire, dans mon fichier style.css , c'est-à-dire rajouter des classes "génériques", et puis supprimer des classes actuelles, les éléments communs ( celà m'économiserait de la place ).

Cependant, cette technique des classes multiples, n'est pas reconnue par Internet Explorer, qui à ce que je sais, n'interprète que la première ou la dernières de plusieurs classes pour la même balise html rencontrée.

J'ai déjà mis dans toutes mes pages, des commentaires conditionnels en fonction du type du navigateur ( IE6 ou non ).

Deux problèmes :

- Quelles sont les versions de IE impactées par ce problème d'interprétation des classes multiples ?

- La classe reconnue par IE, est-elle la première, ou la dernière classe de plusieurs classes d'une balise html ?

Merci beaucoup de vos réponses.

Bien amicalement.

Jean François Ortolo


.
 
WRInaute accro
UsagiYojimbo a dit:
ortolojf a dit:
Cependant, cette technique des classes multiples, n'est pas reconnue par Internet Explorer

Tu as une source à ce sujet ? Première fois que j'entends dire ça.


Bonjour usagiYojimbo ;)

En fait, celà est confirmé par tous les sites traitant de ce problème des multiples classes css sous IE.

Je viens d'obtenir les informations demandées :

- Versions de IE impactées : < 7

- Versions de IE non impactées : >=7 en mode "non quirk".

- Dans ce cas, la seule classe prise en compte par IE 5 ou IE 6, est la dernière classe figurant dans les classes multiples d'une balise html.

Donc, voici le code html de commentaires conditionnels pour le choix des deux feuilles de style, suivant le type et la version du navigateur :

Code:
<!--[if !IE]><!-->
  <link rel="stylesheet" type="text/css" href="/style.css" />
<!--<![endif]-->
<!--[if lt IE 7]>
  <link rel="stylesheet" type="text/css" href="/ie_5_6_style.css" />
<![endif]-->
<!--[if ge IE 7]>
  <link rel="stylesheet" type="text/css" href="/style.css" />
<![endif]-->

La première déclaration, n'est interprétée que si le navigateur est bien Internet Explorer, sinon elle sélectionne la feuille de style par défaut style.css

Les deux autres déclarations, sélectionnent la feuille de style correcte ( par défaut ou spoécifique à IE < 7 ).

Pour le reste,c'est de la programmation css classique.

Celà dit, j'ai fait une erreur en modifiant cete déclaration des feuilles de style dans mon site, je vais corriger celà de suite. ;)

Bien amicalement.

Jean François Ortolo
 
WRInaute accro
Je ne fais plus de dev à proprement parler, et dans ma précédente expérience pro, nous avions de toutes façons pris pour habitude de ne pas nous engager sur une compatibilité à IE6.
 
WRInaute accro
Bonjour Monsieur

De mon côté, je suis Allocataire Adulte Handicapé, pas forcé de travailler, ce qui serait très risqué, vu la propension de l'ANPE à radier les usagers.

Et surtout, vu le problème du calcul des allocs suivant les revenus imposables.

Sinon, mon site serait payant depuis longtemps. ;)

Je vais monter le week end prochain, un nouvel ordinateur, un AMD FX 6200 et CM ASUS M597 EVO, fait pour durer.

Mon ordi actuel, date de 5 ans à peu près... ;)

Je suis en train, de modifier les scripts de mon site, pour faire des "classes css génériques", qui comporteront le maximum de propriétés associées à chaque balises.

Les classes spécifiques, ne comporteront que les propriétés spécifiques à chaque pages et balises.

Merci beaucoup de ta réponse.

Bien amicalement.

Jean François Ortolo
 
WRInaute accro
Qu'en est-il du trafic sur ton site en provenance d'internautes dont les configurations utilisent encore IE6 ? Parce qu'il n'y a qu'à ce niveau que tu saura si ça vaut la peine ou non de tout faire pour maintenir la compatibilité descendante sur cette version.
 
WRInaute accro
UsagiYojimbo a dit:
Qu'en est-il du trafic sur ton site en provenance d'internautes dont les configurations utilisent encore IE6 ? Parce qu'il n'y a qu'à ce niveau que tu saura si ça vaut la peine ou non de tout faire pour maintenir la compatibilité descendante sur cette version.


Bonjour Monsieur

Effectivement.

Plus exactement, je laisserai le fichier ie6_style.css tout frais copié de style.css ( en cours de modifications sur mon ordi ), et ce fichier ie6_style.css est un modèle du genre en matière d'usine à gaz... ;(

Actuellement, j'ai un problème avec ce fichier style.css :

Le fichier .htaccess, fait une redirection de tout ce qui est fichier *.css , vers le script PHP /ctyle.php?file=$1

Voici ce que contient ce script ctyle.php :

Code:
<?php
ob_start("ob_gzhandler");
session_cache_limiter(false);
$offset = 60 * 60 * 3;
$ExpStr = "Expires: " . gmdate("D, d M H:i:s", time() + $offset) . " GMT";
$file = isset($_GET['file']) ? $_GET['file'] : null;
switch($file) {
case 'style.css' :
case 'imprimante.css' :
header("Content-type: text/css; charset: ISO-8859-1");
header("Cache-Control: must-revalidate");
header($ExpStr);
include($file);
break;
}
ob_end_flush();
?>

Théoriquement, les appels aux scripts *.css , devraient être mis en cache par le navigateur.

Cependant, je m'aperçois en regardant les ficheirs les plus téléchargés sur mon site, que style.css est parmi les plus téléchargés.

Est-ce que vous pourriez me dire, si cette technique, met effectivement en cache, les fichiers *.css ?

Il va sans dire, que cette redirection des scripts *.css vers ce script PHP, est de type 302.

Merci beaucoup de m'indiquer s'il y a un problème dans le script ctyle.php ?

Bien amicalement.

Jean François Ortolo
 
Discussions similaires
Haut