Question sur les CSS - HTML/CSS - Programmation
Marsh Posté le 12-12-2002 à 14:00:34
Je ne connais pas ASP. Mais en PHP on peut tout à fait générer dynamiquement une feuille de style :
<link rel="stylesheet" href="style.php" type="text/css" />
Et dans style.php il faut envoyer au début un en-tête HTTP content-type: text/css;
A voir si c'est possible en ASP
Marsh Posté le 12-12-2002 à 14:04:11
chacal_one333 a écrit : chez pas la question me parait bizare |
Je m'explique autrement, prenons un cas concret :
une appli web avec des profils utilisateurs.
Chaque profil peut choisir un thème d'affichage.
Les pages HTML utilisent une feuille de style unique.
Il est impossible de spécifier un attribut par variable dans les CSS :
Par exemple :
Code :
|
Ou "ma_variable" renvoie le code couleur du thème du profil.
ça ne passe pas. Le CSS est statique.
L'autre solution est de redéfinir cet attribu dans la balise <STYLE> de la page HTML, mais c'est couillon, surtout si il y a 200 attribut à fixer !
Y'a t'il une autre solution ?
Marsh Posté le 12-12-2002 à 14:07:02
gm_superstar a écrit : Je ne connais pas ASP. Mais en PHP on peut tout à fait générer dynamique une feuille de style : |
Oui, la génération dynamique d'une feuille CSS est bien (et faisable en ASP.NET) est la seule solution...
Marsh Posté le 12-12-2002 à 14:12:53
cyp en forsse a écrit : |
bhen si tu le sais pourquoi tu poses la question
Marsh Posté le 12-12-2002 à 14:20:11
antp a écrit : |
Je pensais qu'il y avait une autre solution !
La génération, c'est bien, mais c'est un peu lourd.
Marsh Posté le 12-12-2002 à 14:21:44
cyp en forsse a écrit : Je pensais qu'il y avait une autre solution ! |
Je ne vois pas tellement quelle alternative on pourrait avoir...
Marsh Posté le 12-12-2002 à 14:22:56
gm_superstar a écrit : |
Peut etre une nouvelle norme de feuilles de styles dynamique !
Marsh Posté le 12-12-2002 à 14:23:37
ReplyMarsh Posté le 12-12-2002 à 14:24:48
ReplyMarsh Posté le 12-12-2002 à 14:31:40
Je vois mal ce que tu voudrais faire d'une nouvelle norme vu qu'IE sait déjà pas gérer les vieilles normes
Marsh Posté le 12-12-2002 à 16:26:01
g ptet une idee :
je sais qu'il n'est pas obligatoire de lier le fichier css mais il est possible de l'inclure directement dans ton html entre les balises qui vont bien.
En partant de ce principe, tu fé un include php (ou autre cgi) de ton ex fichier css qui peut mainteant contenir du code interpretable .
ex :
|
Marsh Posté le 12-12-2002 à 17:03:45
Pas bête du tout comme idée
Mais le pb c'est que j'ai des centaines de lignes de style qui vont etre intégrées aux pages.
ça va bien alourdir les pages HTML...
Marsh Posté le 12-12-2002 à 17:11:44
Des centaines de ligne ???
Alors :
- soit la feuille de style n'est pas du tout optimisée et il y a trop d'élément redondants
- soit c'est la feuille de style pour un site entier mais dans ce cas ce n'est peut être pas judicieux de faire une seule feuille de style.
Dans une page HTML on peut linker autant de feuilles de style qu'on veut. Dans ce cas une bonne idée peut être de mettre dans un CSS statique toutes les propriétés qui ne changent pas et dans une autre celles qui sont dynamiques :
<link rel="stylesheet" href="dynamic.asp" type="text/css" /> |
De toute façon que les styles soient inclus dans la page HTML ou dans une fichier externe, la quantité de donnée à générer et à transmettre est la même.
Marsh Posté le 12-12-2002 à 17:14:14
gm_superstar a écrit : |
elle est pas mise en cache quand c'est le même fichier qui est demandé ?
Marsh Posté le 12-12-2002 à 17:19:05
lorill a écrit : elle est pas mise en cache quand c'est le même fichier qui est demandé ? |
Si elle est générée dynamiquement non (enfin ça dépend de la configuration globale de ton PHP ou ASP, mais par défaut on a un en-tête no-cache qui est envoyé)
Marsh Posté le 12-12-2002 à 17:19:59
y a moyen d'overrider cet en-tête ?
Marsh Posté le 12-12-2002 à 17:21:44
gm_superstar a écrit : |
ouais, mais les statiques si... donc vaut mieux séparer les fichiers plutot que faire un include
Marsh Posté le 12-12-2002 à 17:23:21
lorill a écrit : ouais, mais les statiques si... donc vaut mieux séparer les fichiers plutot que faire un include |
Ah voui, mais c'est exactement pour ça que je disais de séparer. Ma dernière remarque était plus par rapport à ce que djobidjoba et moi on a donné avant.
Marsh Posté le 12-12-2002 à 17:25:08
antp a écrit : y a moyen d'overrider cet en-tête ? |
En PHP oui, mais dans ce cas c'est toutes tes pages qui seront affectées et il faudra l'ajouter toi-même si tu veux que certaines pages ne soient pas mises en cache.
Après peut-être qu'il y a des configurations plus fines...
Marsh Posté le 12-12-2002 à 17:34:38
En fait mon CSS est généré dynamiquement, mais c'est un fichier séparé :
http://www.antp.be/main.css.php
http://www.antp.be/main.css.php?c=red
etc...
en fait faudrait que seule cette page reste dans le cache
Marsh Posté le 12-12-2002 à 17:40:32
ouais mais c'est chiant ça
Marsh Posté le 12-12-2002 à 17:42:28
pourquoi ? d'après ce que j'ai vu tu n'as que 2 propriétés qui dépendent de ton paramètre. Tu as tout à gagner. (par contre ça fait un hit de plus)
Marsh Posté le 12-12-2002 à 17:46:04
y en a plus que deux
y a le hr, tous les "a" et tous les ".menu"/".menuleft", "bar" etc...
Marsh Posté le 12-12-2002 à 17:52:16
bah au pire une douzaine, ça reste négligeable par rapport au reste
Marsh Posté le 12-12-2002 à 17:58:40
gm_superstar a écrit : bah au pire une douzaine, ça reste négligeable par rapport au reste |
parce que le reste comporte plein de morceaux inutiles
faut que je nettoie ce CSS
Marsh Posté le 12-12-2002 à 18:05:44
De toute façon tu n'as pas trop le choix, c'est une configuration de PHP et je doute que tu aies un quelconque contrôle la dessus. Ou alors dis moi vite qui est ton hébergeur
Marsh Posté le 12-12-2002 à 18:06:49
bah je croyais que c'était au niveau d'Apache, on sait jamais que ça puisse se modifier avec un .htaccess
Marsh Posté le 12-12-2002 à 18:53:49
Heu.... il n'y a pas d'en-tête qui désactive le cache sur tes pages :
$ lynx --dump --head http://www.antp.be/main.css.php?c=red |
Marsh Posté le 12-12-2002 à 18:59:23
ha bhen alors c'est bon, on discute pour rien donc
Marsh Posté le 12-12-2002 à 19:56:20
eh non, comme le contenu change, elle ne sera jamais mise en cache !
Marsh Posté le 12-12-2002 à 21:30:14
comment on le sait que le contenu change ? Logiquement tant que l'URL (paramètres compris) est la même le browser le prend dans le cache...
Marsh Posté le 12-12-2002 à 22:03:05
Si ils ont déjà la page dans leur cache, les navigateur modernes, envoient d'abord une requête HTTP du type : "la page a-t-elle été modifié depuis DATE ?" Si le serveur répond qu'elle n'a pas été modifiée (réponse 304 je crois) alors le navigateur ne retélécharge pas la page.
Question : comment est-ce que ça se passe avec une page dynamique ?
Marsh Posté le 12-12-2002 à 22:19:41
Bonne question
C'est vrai que dans mes logs Apache j'ai pas mal de "not modified":
|
mais si ça se trouve ce statut ne concerne que les images
Marsh Posté le 13-12-2002 à 11:40:02
gm_superstar a écrit : Des centaines de ligne ???
|
Merci pour l'idée
Mais je pensais que les styles définits dans la feuille CSS etaient inclus dans la page HTML, et visiblement non.
Le feuille CSS est transmise au navigateur ?
Marsh Posté le 13-12-2002 à 11:42:25
C'est le browser qui va la downloader s'il supporte les CSS
J'en profite pour passer un coup de gueule contre IE :
<link rel="stylesheet" title="Blue" href="main.css.php" type="text/css" /> |
ce con downloade toutes les CSS au chargement de la page alors qu'il ne supporte pas les "alternate stylesheet" Mozilla/Opera 7 ne les downloadent que quand on les demande (View -> Use style -> ...)
Marsh Posté le 12-12-2002 à 13:51:48
Salut la compagnie
voilà, j'ai un pb avec les styles CSS :
Comment interpreter dynamiquement des feuilles CSS ?
Je m'explique : à la base, ces feuilles sont statiques, on les link avec une page HTML et on utilise les définitions de styles comme attribut d'objet HTML.
Je voudrais que les définitions de style dans la feuille de style soient dynamique, c.a.d que les valeurs de style (BACKGROUND COLOR de BODY par exemple) soient fixées par des variables (ASP.NET ou PHP, peut importe).
Mais visiblement, les feuilles CSS sont statiques et on ne peut pas y entrer de code HTML.
Avez vous une solution ?
Autre que reprendre les définitions de Style dans le HEADER de la page HTML bien sur.
MERCI LES AMIS