28173 sujets

CSS et mise en forme, CSS3

Bonjour,

En quelques semaines c'est la deuxième fois que j'ai besoin de faire une DIV d'une hauteur de 100%

La première fois j'avais fais ça :
html, body {height : 100%;}
#conteneur {min-height : 100%;}

En ajoutant dans le xhtml ceci :
<!--[if lte IE 6]><style type="text/css">#conteneur {height: 100%;}</style><![endif]-->


J'ai cherché une solution plus "propre"...sans succès hélas, malgré les nombreux billets traitant du sujet sur le net.

Est-ce la solution la plus intéressante ?
Existe il des navigateurs pour lesquels elle ne fonctionne pas ? (testée avec IE7/6/5.5 firefox dernière version et mozilla)

Pour tester : http://graphsite.free.fr/css/height100/

Merci d'avance


Damien
Modifié par Graph-Site (25 Jan 2007 - 12:17)
Graph-Site a écrit :
Est-ce la solution la plus intéressante ?

Oui.
Elle est par ailleurs parfaitement « propre », du moins si cet adjectif a un sens dans ce contexte précis.

Graph-Site a écrit :
Existe il des navigateurs pour lesquels elle ne fonctionne pas ?

Parmi ceux qui ont plus de 0,1% de parts de marché ? Pas à ma connaissance.

(Allez, faudrait peut-être que je dise 0,2% voire 0,3% pour être sûr...).
Modifié par Florent V. (22 Jan 2007 - 14:58)
Graph-Site a écrit :
Bah, les commentaires conditionnels, je trouve pas ça propre dans mon code Smiley langue
... et comme je te comprends! Pour ma part, je ne les affiche grâce à PHP que si le navigateur détecté est Internet Explorer. Je sais, c'est too much... Smiley ravi
pas con ça Smiley langue

mais bon sauf si tu as déjà l'utilité de détecter le navigateur, je trouve dommage de faire bosser le serveur juste pour ça Smiley langue
Et puis le code côté utilisateur c'est pas le plus important, je me préoccupe surtout de la simplicité de mon code pour ma poire Smiley cligne
Benjamin D.C. a écrit :
... et comme je te comprends! Pour ma part, je ne les affiche grâce à PHP que si le navigateur détecté est Internet Explorer. Je sais, c'est too much... Smiley ravi

C'est pas too much, c'est complètement idiot oui ! Smiley crash Smiley eek Smiley sweatdrop

[coup de gueule]

Qu'est-ce qui importe vraiment, avoir un code joli à lire, ou avoir un code ROBUSTE ? C'est à dire : efficace et fiable dans un maximum de contextes possibles.

Les commentaires conditionnels sont le moyen le plus sûr d'adresser un code spécifiquement à Internet Explorer, et mieux encore : à certaines versions d'Internet Explorer. C'est un procédé tout à fait robuste.

Si, avant d'accéder à ce procédé fiable, on rajoute une couche dont la fiabilité n'est pas totale, on risque juste de se planter sur la sélection de l'agent utilisateur, et donc de rendre inefficace (car non généré !) le commentaire conditionnel.

OK, le risque est faible (surtout dans le cas d'IE). Mais courir ce risque, même faible, dans le seul but d'avoir un code « propre », c'est idiot !

Un code « propre », ça ne veut rien dire. Ça n'existe pas. Par contre, il existe des codes :
- standard et valides (les commentaires conditionnels le sont, puisque ce sont de simples commentaires HTML) ;
- légers (qui est à 100 octets près ? Smiley rolleyes ) ;
- lisibles et donc faciles à maintenir (indentation du code même pour le commentaire conditionnel, et c'est dans la poche).

Je vois vraiment pas de raison de se mettre martel en tête. Bien sûr, on a le droit de se casser la tête pour rien. Mais si c'est diminuer la robustesse du site sans gain véritable en contrepartie, c'est quand même assez idiot.

[/coup de gueule]
Graph-Site a écrit :
Bah, les commentaires conditionnels, je trouve pas ça propre dans mon code Smiley langue

Smiley sm
Benjamin D.C. a écrit :
... et comme je te comprends! Pour ma part, je ne les affiche grâce à PHP que si le navigateur détecté est Internet Explorer. Je sais, c'est too much... Smiley ravi


Il faudra, un jour, pendre le premier crétin qui a inventé une détection du navigateur côté serveur avec les tripes de la première andouille qui a créé un navigateur et son User-Agent.

ça simplifierait les choses, non ?

Bon bah... ok, je sors.

Smiley ravi
Modifié par Laurent Denis (22 Jan 2007 - 18:22)
Florent V. a écrit :

Smiley sm


Je peux exprimer mon avis quand même ? Smiley lol
Je suis désolé, mais pour moi plus on rajoute de trucs plus on perd en lisibilité, alors tant qu'à faire, j'essaye de trouver d'autres solutions. Si elles n'existent pas et bien tant pis, je prends par défaut celle qui existe !

J'ai quand même le droit de ne pas apprécier les commentaires conditionnels non ? (tel navigateur, je lui demande de faire ça, tel autre ça, et pui lui il fera ça... c'est quand même plus pratique si on arrive à leur faire faire tous la mêche chose ou presque en leur donnant à tous la meme instruction....)
Graph-Site a écrit :

alors tant qu'à faire, j'essaye de trouver d'autres solutions.


Dans ton exemple la solution est pourtant évidente :

Arrêter de vouloir à toute force coller des min-height aux éléments alors que tu sais parfaitement que ce ne sera pas interprété par IE less than IE7 !!!

C'est pourtant simple non ?

Et là ton code sera encore plus propre que propre.
Oui...

mais alors, il faut que je change le design de ma page...et là je l'aime vraiment bien donc, NON !

à la limite le code d'une page blanche c'est propre aussi Smiley lol
Graph-Site a écrit :
Je peux exprimer mon avis quand même ? Smiley lol
Je suis désolé, mais pour moi plus on rajoute de trucs plus on perd en lisibilité

Bonsoir

Tu utilises une feuille de style interne dans le commentaire conditionnel, mais on peut tout à fait y lier un un fichier .css
Modifié par Alan (22 Jan 2007 - 23:41)
C'est marrant ce débat autout d'un solution qui est trés bien. maintenant je rajoute même dans le commentaire conditionel un js special pour ie6 avec les png et hover sur les élements que je souhaite. Ce navigateur est déficient, il y a pas de mal a l'aider un peu... Comme ça tu peux continuer tranquillement à travailler avec toutes les propriétées css dont tu rêves et tu patch ie6 avec 3 lignes de codes, c'est pas beau ça! Franchement je vois pas d'autre méthode. Aprés la solution de pas faire les chose que ie6 n'aime pas, c'est vraiment domage, il n'en vaut pas la peine!
Florent V. a écrit :
C'est pas too much, c'est complètement idiot oui ! Smiley crash Smiley eek Smiley sweatdrop
Ta position d'administrateur te monte à la tête au point d'en perdre toute règle de savoir-vivre. Insulter les gens qui ne pensent pas comme toi, c'est limite tu ne trouves pas?

Je fais les choix qui me plaisent, ça s'arrête là. Je n'aime pas Internet Explorer. Pas du tout. Et ça m'emmerde terriblement de devoir adresser des correctifs pour un seul navigateur, cela va tout à fait à l'encontre de ce que je pense et de l'idée que je me fais des standards.

Alors oui, je passe par une détection du navigateur pour afficher ce "hack" (oui, c'est un hack) qui me déplaît, et le jour où Internet Explorer 6 est considéré comme tout à fait abandonné, il me suffit d'enlever la détection PHP et tout va bien.

D'autre part, les différents tests que j'ai effectué montre que la détection du navigateur visé est systématiquement correcte. La solution (puisqu'elle ne vise que Internet Explorer) me semble donc tout à fait robuste et permet de garder un code tel qu'il devrait être. Oui, je suis maniaque.
Salut Benjamin D.C.

Florent V. ne t'a pas insulté, même s'il a réagi vivement à ta réponse. Il ne s'en prend pas à toi personnellement, mais à la démarche qui vise à négocier l'affichage des commentaires conditionnels en fonction des navigateurs.

Merci à tous de s'en tenir au débat sur le sujet et d'éviter les attaques personnelles.
Benjamin D.C. a écrit :
Alors oui, je passe par une détection du navigateur pour afficher ce "hack" (oui, c'est un hack) qui me déplaît, et le jour où Internet Explorer 6 est considéré comme tout à fait abandonné, il me suffit d'enlever la détection PHP et tout va bien.
Je ne vois pas en quoi c'est différent avec les commentaires conditionnels.

La détection de navigateur basée sur User-Agent est une source de problèmes quasiment infinie, je crois que les exemples ne manquent pas à ce sujet...

L'efficacité des commentaires conditionnels est garantie, tandis que ta méthode n'offre aucune sécurité concernant le User-Agent renvoyé par les navigateurs futurs, l'enregistrement d'un fichier en local, les en-têtes modifiés par un proxy, ...
Modifié par Julien Royer (23 Jan 2007 - 15:32)
Tant que j'y suis, je donne mon avis Smiley smile

La détection du navigateur du visiteur, quelle que soit la technique employée, est susceptible d'échouer. On n'y peut rien.

Négocier l'affichage des commentaires conditionnels en fonction du navigateur, c'est prendre le risque qu'ils ne soient pas affichés lorsqu'on en a besoin. Bon.

Alors, la question est la suivante : est-ce que ça vaut la peine de prendre ce risque, si infime soit-il, juste pour éviter d'avoir une ligne de commentaires en trop dans le fichier HTML ?, car c'est bien de cela qu'on parle, une ligne de commentaire.

Personnellement, les commentaires, ça ne me dérange pas. Je ne vois pas ce que ça a de "pas propre".

Mais bon, chacun son avis.

Par contre, il y a point sur lequel Benjamin D.C. commet une erreur : les commentaires conditionnels ne sont pas des "hacks".

Un hack, c'est une astuce qui exploite une faille, une erreur, dans notre cas dans le moteur de rendu des CSS de IE.

Les commentaires conditionnels ne sont pas une erreur des développeurs d'IE : c'est au contraire un mécanisme volontairement implémenté, qui permet de s'affranchir des hacks, justement.
abh c'est instructif tout ça, même si ça me dépasse un peu Smiley smile

A y réfléchir :
oui c'est sans doute "propre" les commentaires conditionnels, et je pense savoir pourquoi ça ne me plait pas : tout simplement parce que je n'ai pas l'habitude de les utiliser, et que quand je les utilises c'est parce que j'ai besoin de résoudre un problème dû à IE ou autre...
Thomas D. a écrit :
Alors, la question est la suivante : est-ce que ça vaut la peine de prendre ce risque, si infime soit-il, juste pour éviter d'avoir une ligne de commentaires en trop dans le fichier HTML ?
Non, clairement pas, je suis tout à fait d'accord. Cependant, le "risque" est si minime (voire inexistant) qu'il ne contrebalance pas mon soucis frénétique de propreté... Smiley ravi

Thomas D. a écrit :
les commentaires conditionnels ne sont pas des "hacks".
Hé bien, à nouveau, ça dépend comment on voit la chose: pour moi, il s'agit d'une astuce pour masquer une commande à tous les autres navigateurs qu'Internet Explorer.

Enfin bon, je crois franchement que nous pouvons passer à autre chose... Smiley cligne
Benjamin D.C. a écrit :
Hé bien, à nouveau, ça dépend comment on voit la chose: pour moi, il s'agit d'une astuce pour masquer une commande à tous les autres navigateurs qu'Internet Explorer. Smiley cligne
Là, tu chicanes exprès pour me chatouiller les orteils, avoue ? Smiley lol

Il y a astuce & astuce : quand c'est voulu par le concepteur, on appelle ça "une fonctionnalité", et quand c'est une erreur ou un oubli, on appelle ça "une faille" Smiley murf