Version complète: sur le forum Webmaster Hub : plusieurs CSS
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > (X)HTML et CSS
skale
bonjour,

pour un nouveau site, je suis en train de développer différentes feuilles de style. La feuille choisie est enregistrée dans un cookie. Malheureusement pendant la navigation sur le site, si la page est en cache du navigateur, c'est la feuille précédente qui est utilisée.
Comment forcer le navigateur a utilisé la feuille de style spécifiée par le cookie ?

Actuellement j'utilise plusieurs fichiers CSS, est-il plus intéréssant de créer le fichier CSS en PHP en spécifiant de ne pas mettre la feuille en cache, pour avoir un fichier unique dans la balise link, ou bien avoir un fichier Css de base et faire différents import ?

Merci,
skale
golog
Peut-être trouveras-tu ta réponse sur cet article d'openweb ("présentations alternatives"). Voir notamment les références à la fin de l'article pour plus d'infos sur les style-switchers en eux-mêmes.
Xavier
CITATION(skale @ jeudi 09 juin 2005, 11h27)
Actuellement j'utilise plusieurs fichiers CSS, est-il plus intéréssant de créer le fichier CSS en PHP en spécifiant de ne pas mettre la feuille en cache, pour avoir un fichier unique dans la balise link, ou bien avoir un fichier Css de base et faire différents import ?
*
Le problème de ces techniques c'est qu'il n'est plus possible de changer le style par l'interface du navigateur, et c'est bien dommage sad.gif

Pour ma part j'utilise ce changeur de style en javascript, je pense que le javascript est tout à fait adapté à ce côté "dynamique" de changement de style, c'est un petit plus vu qu'il est toujours possible de passer par l'interface normale wink.gif

Avantage : ça évite ton problème de cache, vu que le cookie est lu au chargement de la page, et non pas lors de son téléchargement tongue.gif
skale
j'ai suivi un peu tous les liens, et fais des recherches autour des Switchers ! ceux que j'ai trouvé construisent un formulaire de changement de style, si le javascript n'est pas activé il n'y a pas de sélecteur du tout, et je préfère utiliser des liens pour symboliser les différents styles disponibles. Enfin, je me force à lire du javascript, je fais mon petit script et ... ça marche pas.

me voici confronté au problème de la compatibilité du javascript, et cette fois c'est mon navigateur préféré qui me fait défaut, à savoir Opera. IMSTP5.gif
Voilà une page très intéressante : compatibilité DOM - CSS
et le code javascript qui tue:
CODE
if( typeof(document.styleSheets) == 'undefined')
{
   return;
}


sans javascript le problème reste le même.
Avec, ça marche pas pour tous les navigateurs. Et que va-t-il se passer si l'utilisateur modifie le style avec le navigateur, à la page suivante, ou bien les précédentes ? Surtout que parmi les internautes combien connaissent les CSS et savent que sur certains sites ils peuvent modifier la feuille de style employée, à mon avis ils ne sont pas nombreux.

skale
Xavier
CITATION(skale @ samedi 11 juin 2005, 13h09)
j'ai suivi un peu tous les liens, et fais des recherches autour des Switchers ! ceux que j'ai trouvé construisent un formulaire de changement de style, si le javascript n'est pas activé il n'y a pas de sélecteur du tout, et je préfère utiliser des liens pour symboliser les différents styles disponibles. Enfin, je me force à lire du javascript, je fais mon petit script et ... ça marche pas.

me voici confronté au problème de la compatibilité du javascript, et cette fois c'est mon navigateur préféré qui me fait défaut, à savoir Opera.  IMSTP5.gif
Voilà une page très intéressante : compatibilité DOM - CSS
et le code javascript qui tue:
CODE
if( typeof(document.styleSheets) == 'undefined')
{
   return;
}

Je n'avais jamais remarqué que ça ne marchait pas dans Opera blush.gif

CITATION(skale @ samedi 11 juin 2005, 13h09)
sans javascript le problème reste le même.
Avec, ça marche pas pour tous les navigateurs. Et que va-t-il se passer si l'utilisateur modifie le style avec le navigateur, à la page suivante, ou bien les précédentes ? Surtout que parmi les internautes combien connaissent les CSS et savent que sur certains sites ils peuvent modifier la feuille de style employée, à mon avis ils ne sont pas nombreux.

skale
*

À la page suivante, comme un cookie a été stocké, il est lu au chargement de la page, et le style précédemment choisi est directement appliqué. Idem sur les pages précédentes, vu que la page est rechargée à ce moment. Donc ça résout ton problème.

Quand le JavaScript est désactivé, il n'y a effectivement rien, mais comme c'est un "plus" que tu propose ce n'est pas grave... enfin c'est à toi de voir l'importance que ça a, si tu ne le vois que comme un "plus" ou si ça doit faire vraiment partie de la page wink.gif Maintenant c'est vrai que ça ne fonctionne pas dans Opera, et je ne m'en étais jamais rendu compte... mais Opera permet de changer la feuille de style par son interface (même s'il ne s'en souvient pas à la page suivante huh.gif )

À part ça plutôt que de te demander combien d'internautes savent qu'ils peuvent modifier la feuille de style, tu peux leur expliquer, ça marche toujours B)
destroyedlolo
Si t'as page est dynamique (PHP, SSI, ...) pourquoi ne pas inclure selectivement un CSS ou un autre ?
skale
CITATION(destroyedlolo @ lundi 13 juin 2005, 10h23)
Si t'as page est dynamique (PHP, SSI, ...) pourquoi ne pas inclure selectivement un CSS ou un autre ?
*

si le fichier est inclus, le problème de cache n'est résolu que si le fichier n'est pas mis en cache (header PHP par exemple), ce qui veut dire un téléchargement de la feuille de style à chaque page vue, à la longue, ça peut devenir vite lourd.

Xavier a une autre réponse :
CITATION
il n'est plus possible de changer le style par l'interface du navigateur, et c'est bien dommage


tant qu'à faire autant spécifier les différentes CSS grâce à la balise link et la valeur d'attribut stylesheet ou alternate stylesheet.
captain_torche
CITATION(skale @ lundi 13 juin 2005, 11h25)
si le fichier est inclus, le problème de cache n'est résolu que si le fichier n'est pas mis en cache (header PHP par exemple), ce qui veut dire un téléchargement de la feuille de style à chaque page vue, à la longue, ça peut devenir vite lourd.
*

Si chacune de tes feuilles de style a un nom différent, ça ne devrait pas poser de souci.

Edit : si je me mets à répondre aux sujets que je trouve après une recherche moteur (réflexe), je vais remonter de vieux dossiers ...
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.