Question sur les CSS

Question sur les CSS - HTML/CSS - Programmation

Marsh Posté le 12-12-2002 à 13:51:48    

Salut la compagnie  :pt1cable:  
 
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  :pt1cable:

Reply

Marsh Posté le 12-12-2002 à 13:51:48   

Reply

Marsh Posté le 12-12-2002 à 13:55:53    

[:tilleul]

Reply

Marsh Posté le 12-12-2002 à 13:57:12    

Reply

Marsh Posté le 12-12-2002 à 13:58:36    

chez pas la question me parait bizare :)

Reply

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


Message édité par gm_superstar le 12-12-2002 à 14:05:19

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

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 :
  1. BODY
  2. {
  3. Background-color = ma_variable
  4. }

 
 
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 ?

Reply

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 :
 
<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


 
Oui, la génération dynamique d'une feuille CSS est bien (et faisable en ASP.NET) est la seule solution...

Reply

Marsh Posté le 12-12-2002 à 14:12:53    

cyp en forsse a écrit :


 
Oui, la génération dynamique d'une feuille CSS est bien (et faisable en ASP.NET) est la seule solution...


 
bhen si tu le sais pourquoi tu poses la question :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-12-2002 à 14:20:11    

antp a écrit :


 
bhen si tu le sais pourquoi tu poses la question :??:


 
Je pensais qu'il y avait une autre solution !
La génération, c'est bien, mais c'est un peu lourd.
 

Reply

Marsh Posté le 12-12-2002 à 14:21:44    

cyp en forsse a écrit :

Je pensais qu'il y avait une autre solution !
La génération, c'est bien, mais c'est un peu lourd.


Je ne vois pas tellement quelle alternative on pourrait avoir...


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 12-12-2002 à 14:21:44   

Reply

Marsh Posté le 12-12-2002 à 14:22:56    

gm_superstar a écrit :


Je ne vois pas tellement quelle alternative on pourrait avoir...


 
Peut etre une nouvelle norme de feuilles de styles dynamique !

Reply

Marsh Posté le 12-12-2002 à 14:23:37    

Reply

Marsh Posté le 12-12-2002 à 14:24:48    


 
Si, je serais etonné que les feuilles de styles restent statiques !

Reply

Marsh 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 [:dawa]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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 :
 


ex.html :
 
<html>
<head>
<?php include "ex.css.php";?>  
</head>
<body></body>
</html>
 
ex.css.php :
 
echo '<style type="text/css">';
echo '<!--';
echo 'h1';
echo '{';
echo 'font-size: [b]$fsize[/b];';  
echo 'color: [b]$couleur[/b]';
echo '}';
echo '//-->';
echo '</style>';
 


 

Reply

Marsh Posté le 12-12-2002 à 17:03:45    

Pas bête du tout comme idée  :jap:  
 
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...

Reply

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" />
<link rel="stylesheet" href="static.css" 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.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 12-12-2002 à 17:14:14    

gm_superstar a écrit :


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.


elle est pas mise en cache quand c'est le même fichier qui est demandé ?

Reply

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é)


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 12-12-2002 à 17:19:59    

y a moyen d'overrider cet en-tête ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-12-2002 à 17:21:44    

gm_superstar a écrit :


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é)


ouais, mais les statiques si... donc vaut mieux séparer les fichiers plutot que faire un include

Reply

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.

Reply

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...

Reply

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


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-12-2002 à 17:37:38    

Bah tu fais 2 CSS !

Reply

Marsh Posté le 12-12-2002 à 17:40:32    

ouais mais c'est chiant ça


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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)


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

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...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-12-2002 à 17:52:16    

bah au pire une douzaine, ça reste négligeable par rapport au reste


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

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 :D
faut que je nettoie ce CSS :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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 :D


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

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 :D


Message édité par antp le 12-12-2002 à 18:07:07

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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
HTTP/1.1 200 OK
Date: Thu, 12 Dec 2002 17:52:53 GMT
Server: Apache
X-Powered-By: PHP/4.2.3
Connection: close
Content-Type: text/css
 
$ lynx --dump --head http://www.antp.be/
HTTP/1.1 200 OK
Date: Thu, 12 Dec 2002 17:53:00 GMT
Server: Apache
X-Powered-By: PHP/4.2.3
Connection: close
Content-Type: text/html



---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 12-12-2002 à 18:59:23    

ha bhen alors c'est bon, on discute pour rien donc :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-12-2002 à 19:56:20    

eh non, comme le contenu change, elle ne sera jamais mise en cache !


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 12-12-2002 à 21:30:14    

comment on le sait que le contenu change ? :D Logiquement tant que l'URL (paramètres compris) est la même le browser le prend dans le cache...


Message édité par antp le 12-12-2002 à 21:30:25

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

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 ?


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

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":
 


200: OK                  928,378      66.9%
304: Not Modified        417,864      30.1%
302: Found                26,853       1.9%
301: Moved Permanently    11,959       0.9%
404: Not Found             1,820       0.1%
206: Partial Content       1,259       0.1%
401: Authorization Required   35         0%
500: Internal Server Error    20         0%
501: Not Implemented           3         0%
405: Method Not Allowed        1         0%


 
mais si ça se trouve ce statut ne concerne que les images


Message édité par antp le 12-12-2002 à 22:20:24

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 13-12-2002 à 11:40:02    

gm_superstar a écrit :

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" />
<link rel="stylesheet" href="static.css" 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.


 
 
Merci pour l'idée :jap:
 
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 ?

Reply

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" />
    <link rel="alternate stylesheet" title="Red" href="main.css.php?c=red" type="text/css" />
    <link rel="alternate stylesheet" title="Green" href="main.css.php?c=green" type="text/css" />
    <link rel="alternate stylesheet" title="Orange" href="main.css.php?c=orange" type="text/css" />
    <link rel="alternate stylesheet" title="Purple" href="main.css.php?c=purple" type="text/css" />


ce con downloade toutes les CSS au chargement de la page alors qu'il ne supporte pas les "alternate stylesheet" :mad: Mozilla/Opera 7 ne les downloadent que quand on les demande (View -> Use style -> ...)


Message édité par antp le 13-12-2002 à 11:42:46

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed