Page 1 sur 2

Problème d'importation de style imbriqué

Publié : 02 oct. 2004, 22:58
par GizMecano
Hello world,

Je bidouille en ce moment un petit site en local. Mon petit Firefox me donne gentiment ce que je veux voir. Mais voilà que je me dis, quelle drôle d'idée, que je devrais voir ce que ça donne dans un logiciel Windaube, et voilà que ce grand crétin ne semble pas reconnaître les styles que j'importe... :?

Vous me direz, c'est normal, il est comme ça, le navigateur à deux lettres :wink:

M'enfin, je voudrais quand même, malgré les pépins d'affichage normaux, genre PNG 24 et autres encadrements de DIV foireux, qu'il reconnaisse au moins les styles de titres :!:

Alors, si quelqu'un veut me proposer un tuyau, voilà en gros ce que j'ai.

Dans le fichier index.php, j'importe la feuille générale :

Code : Tout sélectionner

<style type=\"text/css\" title=\"MonStyle\" media=\"all\">@import url(styles/MonStyle.css);</style>
Et dans cette feuille, j'appelle dès les premières lignes les styles spécifiques :

Code : Tout sélectionner

@import url(MonStyle/section1.css) all;
@import url(MonStyle/section2.css) all;
Comment faire comprendre aux soit-disant explorateur du réseau ce que je veux dire :?:

D'avance, merci.

Ciao,

Publié : 02 oct. 2004, 23:18
par jv2759
Je sais que calimo avait eux pas mal de souccis avec les import il générer une multitude de 404...

Eventuelement tu peux essayer de regarder sur son site comment il as contourner le probléme.

http://smilissimo.free.fr/

PS : Juste une remarque comme cela tu as écrie \"text/css\"

Je supose que le \" est à destination de php. Moi je te conseillerais d'utiliser ce dernier le moins possible, car la tu alourdit ton document pour rien, emplois le php vraiment au minimum, que quand c'est vraiment utile. En plus cela seras plus exploitable même pour la suite.

Re: Problème d'importation de style imbriqué

Publié : 02 oct. 2004, 23:44
par Hoaxyde
GizMecano a écrit :Hello world,

Je bidouille en ce moment un petit site en local. Mon petit Firefox me donne gentiment ce que je veux voir. Mais voilà que je me dis, quelle drôle d'idée, que je devrais voir ce que ça donne dans un logiciel Windaube, et voilà que ce grand crétin ne semble pas reconnaître les styles que j'importe... :?

Vous me direz, c'est normal, il est comme ça, le navigateur à deux lettres :wink:

M'enfin, je voudrais quand même, malgré les pépins d'affichage normaux, genre PNG 24 et autres encadrements de DIV foireux, qu'il reconnaisse au moins les styles de titres :!:

Alors, si quelqu'un veut me proposer un tuyau, voilà en gros ce que j'ai.

Dans le fichier index.php, j'importe la feuille générale :

Code : Tout sélectionner

<style type="text/css" title="MonStyle" media="all">@import url(styles/MonStyle.css);</style>
Et dans cette feuille, j'appelle dès les premières lignes les styles spécifiques :,
Stop !
C'est là que ça coince... Essaie de ne pas faire d'import à l'interieur même d'une CSS ;)

Publié : 03 oct. 2004, 08:42
par calimo
L'import à l'intérieur même d'une CSS est parfaitement autorisé, et doit absolument figurer tout en haut, avant n'importe quelle règle (même une @media) pour fonctionner ! À ma connaissance il n'y a aucune profondeur limite (si ce n'est celle qui veut que la page s'affiche dans la journée où elle est demandée :lol: )

Cela dit IE a des fois de la peine à la comprenette, il ne supporte pas les médias sur le @import (donc oublie @import url() all; ou screen ou n'importe quoi, je ne parle même pas de @import url() screen,tv,projection :lol: )

Quand le @import figure dans une feuille CSS séparée il semble même qu'il y ait un bug supplémentaire (dont parlait jv2579) : IE va chercher le style (accroche-toi bien)

Code : Tout sélectionner

http://mon.site.net/url(MonStyle/section1.css) all;
Je ne rigole pas (ou plutôt si, je me pouffe de rire tellement c'est hallucinant ! :shock: ), d'ailleurs tu peux essayer de créer une page "url(MonStyle/section1.css) all;" sur ton site dans laquelle tu mets un truc facilement repérable du style body {background:red} et je parie qu'IE t'affichera la page sur fond rouge :twisted:
Au passage, tiens-moi au courant, j'aimerais bien savoir s'il n'y a que sur mon site que ça fait ça !
Pour "contourner" le problème, j'ai personellement choisi la solution de facilité, à savoir créer des fichiers vides là où IE allait les chercher, afin de supprimer ces nombreuses erreurs 404 (j'en avais 13 à chaque affichage d'une page par IE :? même s'il ne représente que 2% du traffic ça faisait quand-même pas mal d'erreurs...). Ainsi le site s'affiche brut dans IE, s'il est bien conçu sémantiquement parlant il sera tout à fait navigable.
Sinon vu que tu importe à la base ta css avec un @import (moi j'utilise les link), tu peux facilement importer tes feuilles secondaires à partir de là :wink:

Tiens-moi au courant du test du fond rouge :wink:

EDIT : un moyen courant de cacher ces styles à IE (que ceux qui ne le font pas pour Netscape 4 lèvent la main :lol: ), c'est justement d'importer la feuille avec @import url() all;
Voir le site Newt Edge par exemple.

Publié : 10 oct. 2004, 11:11
par GizMecano
Hello World,
calimo a écrit :L'import à l'intérieur même d'une CSS est parfaitement autorisé, et doit absolument figurer tout en haut, avant n'importe quelle règle (même une @media) pour fonctionner !
C'est bien ce que je pensais, sinon, je ne vois pas du tout pourquoi Firefox aurait pu lire correctement les styles en question.
calimo a écrit :Cela dit IE a des fois de la peine à la comprenette, il ne supporte pas les médias sur le @import
C'est le moins qu'on puisse dire :wink:
Je crois même qu'en manière de gestion de CSS, on peut dire qu'il ne comprend en général pas grand chose :x
calimo a écrit :Je ne rigole pas (ou plutôt si, je me pouffe de rire tellement c'est hallucinant ! :shock: ), d'ailleurs tu peux essayer de créer une page "url(MonStyle/section1.css) all;" sur ton site dans laquelle tu mets un truc facilement repérable du style body {background:red} et je parie qu'IE t'affichera la page sur fond rouge :twisted:
Effectivement, la démonstration est... déconcertante :wink:

Ce qui reste étonnant, c'est que dans les tests que j'ai fait, IE continue malgré tous mes efforts à n'appliquer aucune couleur pour les différents types de liens : il prend en compte les polices et les tailles, mais pas les couleurs :x
calimo a écrit :Au passage, tiens-moi au courant, j'aimerais bien savoir s'il n'y a que sur mon site que ça fait ça !
Hélas, trois fois hélas : je crois bien que non. IE est rétif aux styles. Point barre :cry:
calimo a écrit :Pour "contourner" le problème, j'ai personellement choisi la solution de facilité [etc.] Ainsi le site s'affiche brut dans IE, s'il est bien conçu sémantiquement parlant il sera tout à fait navigable.
J'ai aussi choisi finallement de contourner le problème, mais de façon encore plus radicale (puisque, comme tu le dis, le site brut doit être navigable dans IE sans aucun style...).

Comme je me demande cependant si je n'ai pas été un peu trop radical, je vous soumets mon bout de script :

Code : Tout sélectionner

$navigator = $_SERVER["HTTP_USER_AGENT"];
if (ereg("Mozilla/5.0", $navigator)) {
  echo "<link rel="icon" type="image/png" href="styles/icon.png"/>\n";
  echo "<style type="text/css" title="MonStyle" media="all">@import url(styles/MonStyle.css);</style>\n";
  $advert = "(ici un texte précisant que les styles sont pris en charge)";
  } 
  else {
  $advert = "(ici un texte précisant que les styles sont neutralisés)";
  }
Pour tout dire, je ne suis pas certain que d'autres navigateurs capables de lire correctement les styles n'aient pas été trop radicalement mis de côté (pour ceux qui veulent vérifier avec leur navigateur, vous pouvez cliquer par ici pour voir si ça fonctionne chez vous : d'avance merci de me dire s'il y a un problème avec autre chose qu'IE).
calimo a écrit :Sinon vu que tu importe à la base ta css avec un @import (moi j'utilise les link), tu peux facilement importer tes feuilles secondaires à partir de là :wink:
Oui, bien entendu, j'y ai pensé. Mais je préfère me garder une sortie de secours dans le cas où je voudrais par la suite créer d'autres styles alternatifs pour ce site : une seule feuille par style, mais dans certains cas, des sous-éléments à prendre en compte selon le style choisi... Mais c'est vrai que ce n'est pas la solution la plus simple...

Merci beaucoup pour toutes ces explications...

Ciao,

Publié : 10 oct. 2004, 11:25
par calimo
GizMecano a écrit :J'ai aussi choisi finallement de contourner le problème, mais de façon encore plus radicale (puisque, comme tu le dis, le site brut doit être navigable dans IE sans aucun style...).

Comme je me demande cependant si je n'ai pas été un peu trop radical, je vous soumets mon bout de script :

Code : Tout sélectionner

$navigator = $_SERVER["HTTP_USER_AGENT"];
if (ereg("Mozilla/5.0", $navigator)) {
  echo "<link rel="icon" type="image/png" href="styles/icon.png"/>\n";
  echo "<style type="text/css" title="MonStyle" media="all">@import url(styles/MonStyle.css);</style>\n";
  $advert = "(ici un texte précisant que les styles sont pris en charge)";
  } 
  else {
  $advert = "(ici un texte précisant que les styles sont neutralisés)";
  }
Pour tout dire, je ne suis pas certain que d'autres navigateurs capables de lire correctement les styles n'aient pas été trop radicalement mis de côté (pour ceux qui veulent vérifier avec leur navigateur, vous pouvez cliquer par ici pour voir si ça fonctionne chez vous : d'avance merci de me dire s'il y a un problème avec autre chose qu'IE).
Oulah non, pas de ça s'il te plaît, tu est en train de refaire ce qui aujourd'hui empêche les navigateurs non-IE d'accéder à certains sites :evil:
En plus là tu n'autorise que les Mozilla/5.0 à avoir les styles, c'est déjà une erreur de conception parce que tu dois afficher les styles dans TOUS les navigateurs SAUF ceux qui ne savent pas. Si tu n'autorise AUCUN SAUF celui que tu connais tu reviens au siècle dernier.
Non franchement ce type de détection est à bannir totalement et définitivement. Sans rémission. Aucune exception. Ou alors tu t'éloigne de la voie des standards.

La seule chose qu'on puisse imaginer ce serait les commentaires conditionnels, si tu y tiens vraiment, parce que là tu est absolument sûr et certain de ne toucher qu'IE.

Ou sinon tu laisse IE appliquer ce qu'il peut, c'est encore le mieux, à la limite un petit avertissement en commentaire conditionnel, mais pas plus :wink:

Publié : 10 oct. 2004, 13:26
par GizMecano
Hello world,
calimo a écrit :Oulah non, pas de ça s'il te plaît, tu est en train de refaire ce qui aujourd'hui empêche les navigateurs non-IE d'accéder à certains sites :evil:
:roll:
Le pire, bien entendu, c'est que tu as parfaitement raison. Mais j'avoue que s'est emm... de toujours essayé de trouver une parade parce que ce satané navigateur soit-disant universel ne sait rien lire correctement :evil:
calimo a écrit :En plus là tu n'autorise que les Mozilla/5.0 à avoir les styles, c'est déjà une erreur de conception parce que tu dois afficher les styles dans TOUS les navigateurs SAUF ceux qui ne savent pas.
Effectivement, j'ai pris les choses par le mauvais bout :?
calimo a écrit :Non franchement ce type de détection est à bannir totalement et définitivement. Sans rémission.
[...]
Ou sinon tu laisse IE appliquer ce qu'il peut, c'est encore le mieux, à la limite un petit avertissement en commentaire conditionnel, mais pas plus :wink:
Certes. Tes arguments sont parfaitement fondés. J'ai été trop loin. J'ai supprimé la détection, mais tu devras avec moi convenir que sous IE, c'est vraiment très moche :cry:

Peut-être que je devrais faire un style uniquement pour IE ? Mais alors, comment le détecter correctement ?

Sinon tant pis, je verrais ça quand je me repencherais sur le problème des styles pour faire un nouveau thème visuel... :cry:

Ciao,

Publié : 10 oct. 2004, 14:17
par calimo
Oui, pas de doutes :?
Mais on peut essayer d'arranger ça ! :wink:

Le fait que ça soit moche sous IE n'est pas particulièrement grave, les png transparents le resteront, mais tu peux définir une couleur d'arrière-plan à ce png qu'IE affichera. Par exemple dans The GIMP tu mets la couleur d'arrière-plan la moins moche et là tu peux enregistrer sans autres, IE l'affichera (je pense à un vert pâle par exemple).

Pour le #footer tu le mets en absolute vu que je n'ai pas vu une seule page qui dépasse de l'écran, et si tu tiens à ce qu'il soit fixe tu mets juste en dessous div[id="footer"] {position:fixed;} que IE ne lira pas à cause du sélecteur :wink:

Pour le h2.web je ne vois pas vraiment l'utilité de @import url(ubaye04/web.css) all; sachant que si c'est all tu peux simplement l'enlever, il sert à rien, et que comme ce sera utilisé dans toutes les pages tu peux le mettre dans ubaye04.css non ?

Après ça le site devrait être un peu plus lisible dans IE :wink:

Rien ne t'empêche de mettre un petit avertissement pour les utilisateurs d'IE via un petit commentaire conditionnel :wink: ... d'autant que c'est valide, autant en profiter :lol:

Publié : 10 oct. 2004, 21:10
par GizMecano
Hello ami helvète !
calimo a écrit :Mais on peut essayer d'arranger ça ! :wink:
Merci de ton aide en tout cas...
calimo a écrit :Pour le #footer tu le mets en absolute vu que je n'ai pas vu une seule page qui dépasse de l'écran
Je vais voir. Ce n'est pas ce que je trouve le plus immonde quand je visualise le site avec IE. Mais je note ta suggestion...
calimo a écrit :Pour le h2.web je ne vois pas vraiment l'utilité de @import url(ubaye04/web.css) all; sachant que si c'est all tu peux simplement l'enlever, il sert à rien, et que comme ce sera utilisé dans toutes les pages tu peux le mettre dans ubaye04.css non ?
En fait, c'est en prévision de l'enrichissement futur que j'ai créé ces feuilles. Il m'a paru plus facile d'avoir des feuilles à gérer pour certaines classe et identité, afin de ne pas m'emmêler avec les différentes couleurs et PNG de fond.

Ceci dit, j'ai fait un essai en local, et pour les H2, IE refuse de lire correctement les couleurs que je mets dans la feuille générale :cry:
calimo a écrit :Rien ne t'empêche de mettre un petit avertissement pour les utilisateurs d'IE via un petit commentaire conditionnel :wink: ... d'autant que c'est valide, autant en profiter :lol:
Effectivement. Mais, on fait comment un commentaire conditionnel :?:

J'ai été voir la page de chez PetitMou que tu indiquais dans ton post précédant, mais je ne comprends pas grand chose. Tu peux me donné juste un petit exemple (si tu l'a déjà fait en tout cas) ? Merci.

Ciao,

Publié : 10 oct. 2004, 22:13
par calimo
Mouais, c'est prendre des risques que de séparer les feuilles pour en changer qu'un bout.
À la limite appelle tout dans une seule alors.

Et puis @import () all; ça peut simplement être @import(); qui est exactement équivalent théoriquement et sera supporté par IE. Sur mon site ça a pas l'air de marcher (ça fonctionne en local :lol: :? ) mais en théorie c'est bon.

Pour les commentaires conditionnels recherche avec google le premier lien est excellent et renvoie sur le site de MS.

Publié : 16 oct. 2004, 12:50
par GizMecano
Hello,
calimo a écrit :Mouais, c'est prendre des risques que de séparer les feuilles pour en changer qu'un bout. À la limite appelle tout dans une seule alors.
Je ne sais pas si je prends des risques. En tout cas, je trouva ça bien plus simple quand j'en suis à la conception...
calimo a écrit :Et puis @import () all; ça peut simplement être @import()
Ok. J'ai corrigé deux ou trois bricoles selon tes suggestions. Le site a toujours une drôle de tronche sous IE, mais tant pis...
calimo a écrit :Pour les commentaires conditionnels recherche avec google le premier lien est excellent et renvoie sur le site de MS.
Ouais. J'avoue que je ne comprends pas vraiment tout. Si je suis bien ce que j'ai pu lire, il faudrait que je fasse des commentaires conditionnels pour les tailles des divisions et les couleurs de base, c'est ça ? Mais alors, est-ce que je dois faire des commentaires conditionnels aussi bien pour IE 5.0, 5.5. et 6.0... Parce que ça devient rapidement très lourd, non :?:

En tout cas, merci pour tout...

Ciao,

Publié : 16 oct. 2004, 13:41
par calimo
Bien sûr tant que tu utilise de la transparence PNG et des trucs du genre, c'est normal qu'il va être bizarre sur un truc comme IE. Mais le plus important c'est qu'il est maintenant parfaitement lisible sur IE.

En revanche... j'ai une taille minimale de police fixée à 13px et une feuille de style utilisateur pour forcer la taille de la police à 100% sur le body :
Image
Ça déborde un peu, il faudrait revoir l'utilisation des positions absolues/fixes :?


Pour les commentaires conditionnels, c'est à toi de voir si tu en a besoin. Pour ne pas afficher quelque chose dans IE (genre une félicitation pour ne pas utiliser IE)

Code : Tout sélectionner

<!--[if !IE]><-->
Vous utilisez un navigateur normal qui sait ce qu'est un commentaire.
<!--> <![endif]-->
Pour faire interpréter du contenu seulement dans les IE plus petits que 7 (=IE 5 et 6) et pas dans les navigateurs, basé sur un bug de parsing des commentaires, car tous les navigateurs considèrent ceci comme un commentaire et ne l'interprètent pas :

Code : Tout sélectionner

<!--[if !IE7]>
Comment ! Vous Utilisez IE ? Changez-moi ça tout de suite, téléchargez Firefox ;-)
<![endif]-->
On considère que IE7 sera plus respectueux des standards que IE6 et n'aura pas besoin d'un code spécial.

Publié : 16 oct. 2004, 18:21
par GizMecano
Hello World,
calimo a écrit :Bien sûr tant que tu utilise de la transparence PNG et des trucs du genre, c'est normal qu'il va être bizarre sur un truc comme IE. Mais le plus important c'est qu'il est maintenant parfaitement lisible sur IE.
Ce qui me fait dire que je n'ai pas l'intention, a priori, de changer les PNG pour les yeux de IE :wink: Parce que, après tout, sauf erreur, le GIF, c'est plus vraiment d'actualité... :)

En passant, est-ce que quelqu'un ici a essayé le PNG Behaviour :?:

calimo a écrit :En revanche... j'ai une taille minimale de police fixée à 13px et une feuille de style utilisateur pour forcer la taille de la police à 100% sur le body
Ça déborde un peu, il faudrait revoir l'utilisation des positions absolues/fixes :?
Argh :oops:
Tu mets le doigts là où ça fait mal, en fait. J'ai essayé plusieurs manière d'agencer mes deux boîtes, mais pas moyen de trouver un système pour conserver éventuellement un ascenseur sur la plus grande des deux sans que les images de captures ne mettent le souk. Résultat : j'ai abandonné, mais c'est pour ça qu'au départ mon div#footer était fixé à droite.

Je crois que je bricolerais mieux la prochaine fois. Après tout, ce n'est tout compte fait que mon deuxième véritable essai en CSS 2.0 avec tentative de validation...
calimo a écrit :Pour les commentaires conditionnels, c'est à toi de voir si tu en a besoin.
Je vais réfléchir à la question. Mais la chose essentielle que je n'ai pas comprise, si c'est à placer dans la CSS ou dans la page en elle-même... Pour ma part, je voudrais surtout parvenir à corriger un peu les div et les couleurs bancals... Je ne demande pas grand chose à ce :twisted: de IE !

Encore merci de m'aider...

PS : Vous avez vu par ailleurs tout ce qu'on peut faire sur Spread Firefox. Je crois bien qu'on peut sans problème se faire un petit blog sympa avec même le fil RSS tout prêt (je fais un essai pour voir). Pas mal, non ?

Publié : 16 oct. 2004, 19:22
par jv2759
PNG Behaviour

Cela ne marche pas sur IE 5...

Publié : 16 oct. 2004, 23:52
par GizMecano
Hello world,
jv2759 a écrit :Cela ne marche pas sur IE 5...
Ben voilà une réponse nette et tranchante :? Merci quand même.

Bon, tant pis pour IE, j'aime trop les PNG pour avoir encore le courage de lui faire plaisir... :evil:

Ciao,