Bonjour,
il s'agit d'une demande de conseil. Il est possible que mon petit problème relève d'un sujet ultra-classique, dont les solutions sont triviales, mais c'est la première fois que j'y suis confronté.
Le probleme est le suivant: le "design" (je préfère le mot "aspect", mais ça peut nuire à la compréhension) ancien d'un site comporte un menu en mode texte. Il faut conserver ce "design" comme alternative (css-switch) à un nouveau design en phase de construction. Le menu du nouveau design comporte une police hors-normes, et en conséquence je dois passer par des images comportant du texte dans cette police.
Pour que l'aspect du menu soit géré uniquement par l'un ou l'autre fichier css propre à chaque design, la solution envisagée est la première qui vient à l'esprit:
- définir deux blocs, par exemple #menuTexte et #menuImage,
- gérer le remplacement de l'un par l'autre par display none/block, (ou par visibility hiden/visible).
L'un serait apparent et l'autre pas pour l'un des 2 aspects, et inversement pour l'autre. Pas de beson d'ouvrir/fermer par JavaScript: l'état initial est chargé avec le fichier css, et on n'en change pas pour un "design" donné.
Mes questions sont les suivantes:
1) Existe-t-il une solution meilleure, ou "classique" ou "encore plus évidente", à ce genre de problème ? qui peut aussi s'appliquer dès que le design comporte des images spécifiques qu'on ne peut pas toujours mettre en background. J'avais d'abord songé à m'embarquer dans une étude de la balise object, que je connais encore trop peu. Mais d'une part je suis un peu pris par le temps, et par ailleurs je ne sais pas si ça m'aurait apporté une réponse, vu que c'est quand même une balise destinée à incorporer des images ou autres objets de toutes sortes, mais que pour un objet "texte", hum... je me demande même si je ne suis pas en train de dire une monstruosité...
2) Dans la solution envisagée, le fichier html (php en l'occurrence, car le "css-switching" est en php), contient les deux blocs, ce qui me fait penser que "peut-être" la présentation n'est peut-être pas complètement séparée du contenu de ce point de vue?
Pourtant, ils sont simplement là ensemble pour pouvoir "identifier par id" les deux "types de menus" possibles, eux-même gouvernés par CSS... Pour d'autres futures présentations, le bloc #menuTexte suffit à tout autre menu texte de même morphologie, tandis que pour d'autres menus images... la balise object pourrait (sans doute?) éviter de multiplier le nombre de "blocs-menus" superposés, qui seraient alors réduits à deux.
3) Dans le cas où cette solution serait une solution... Et sachant que #menuImage est un bloc <div>: Est-ce que #menuTexte peut encore désigner directement le bloc <ul> ou bien faudrait-il qu'il désigne un bloc div encadrant un autre bloc <ul>? Je crois bien que ce serait un bloc de trop, inutile. Mais de façon sans doute irrationnelle, quelque chose me gêne dans cette "superposition" de deux blocs qui ne seraient pas tous deux de même "nature" (un <div> remplaçant un <ul>).
Enfin, une remarque, pour ce qui me parait être une fausse piste: une solution qui consisterait à gérer les aspects par des test en php suivis de l'ecriture d'un code ou l'autre, se heurterait, me semble-t-il, aux problemes suivants:
3a) Cette "solution" me parait encore moins séparer le contenu de la présentation.
3b) dans le cas où l'on souhaite également pouvoir changer de design par le menu de FireFox, (en les déclarant correctement dans les liens link vers les fichiers css, avec une des css définie comme "alternate stylesheet"), j'ai bien peur que l'utilisateur puisse afficher un des deux designs, avec le menu de l'autre design... bref, afficher un mélange d'aspects du plus mauvais effet.
Tout avis sur la question sera bienvenu ! Et si en plus c'est un avis éclairé, une larme de gratitude viendra certainement perler au coin d'un oeil ensommeillé (celui de gauche, vraissemblablement)... alors d'avance: Un Grand Merci!
Modifié par gonga (31 Oct 2006 - 11:57)
il s'agit d'une demande de conseil. Il est possible que mon petit problème relève d'un sujet ultra-classique, dont les solutions sont triviales, mais c'est la première fois que j'y suis confronté.
Le probleme est le suivant: le "design" (je préfère le mot "aspect", mais ça peut nuire à la compréhension) ancien d'un site comporte un menu en mode texte. Il faut conserver ce "design" comme alternative (css-switch) à un nouveau design en phase de construction. Le menu du nouveau design comporte une police hors-normes, et en conséquence je dois passer par des images comportant du texte dans cette police.
Pour que l'aspect du menu soit géré uniquement par l'un ou l'autre fichier css propre à chaque design, la solution envisagée est la première qui vient à l'esprit:
- définir deux blocs, par exemple #menuTexte et #menuImage,
- gérer le remplacement de l'un par l'autre par display none/block, (ou par visibility hiden/visible).
L'un serait apparent et l'autre pas pour l'un des 2 aspects, et inversement pour l'autre. Pas de beson d'ouvrir/fermer par JavaScript: l'état initial est chargé avec le fichier css, et on n'en change pas pour un "design" donné.
Mes questions sont les suivantes:
1) Existe-t-il une solution meilleure, ou "classique" ou "encore plus évidente", à ce genre de problème ? qui peut aussi s'appliquer dès que le design comporte des images spécifiques qu'on ne peut pas toujours mettre en background. J'avais d'abord songé à m'embarquer dans une étude de la balise object, que je connais encore trop peu. Mais d'une part je suis un peu pris par le temps, et par ailleurs je ne sais pas si ça m'aurait apporté une réponse, vu que c'est quand même une balise destinée à incorporer des images ou autres objets de toutes sortes, mais que pour un objet "texte", hum... je me demande même si je ne suis pas en train de dire une monstruosité...
2) Dans la solution envisagée, le fichier html (php en l'occurrence, car le "css-switching" est en php), contient les deux blocs, ce qui me fait penser que "peut-être" la présentation n'est peut-être pas complètement séparée du contenu de ce point de vue?
Pourtant, ils sont simplement là ensemble pour pouvoir "identifier par id" les deux "types de menus" possibles, eux-même gouvernés par CSS... Pour d'autres futures présentations, le bloc #menuTexte suffit à tout autre menu texte de même morphologie, tandis que pour d'autres menus images... la balise object pourrait (sans doute?) éviter de multiplier le nombre de "blocs-menus" superposés, qui seraient alors réduits à deux.
3) Dans le cas où cette solution serait une solution... Et sachant que #menuImage est un bloc <div>: Est-ce que #menuTexte peut encore désigner directement le bloc <ul> ou bien faudrait-il qu'il désigne un bloc div encadrant un autre bloc <ul>? Je crois bien que ce serait un bloc de trop, inutile. Mais de façon sans doute irrationnelle, quelque chose me gêne dans cette "superposition" de deux blocs qui ne seraient pas tous deux de même "nature" (un <div> remplaçant un <ul>).
Enfin, une remarque, pour ce qui me parait être une fausse piste: une solution qui consisterait à gérer les aspects par des test en php suivis de l'ecriture d'un code ou l'autre, se heurterait, me semble-t-il, aux problemes suivants:
3a) Cette "solution" me parait encore moins séparer le contenu de la présentation.
3b) dans le cas où l'on souhaite également pouvoir changer de design par le menu de FireFox, (en les déclarant correctement dans les liens link vers les fichiers css, avec une des css définie comme "alternate stylesheet"), j'ai bien peur que l'utilisateur puisse afficher un des deux designs, avec le menu de l'autre design... bref, afficher un mélange d'aspects du plus mauvais effet.
Tout avis sur la question sera bienvenu ! Et si en plus c'est un avis éclairé, une larme de gratitude viendra certainement perler au coin d'un oeil ensommeillé (celui de gauche, vraissemblablement)... alors d'avance: Un Grand Merci!
Modifié par gonga (31 Oct 2006 - 11:57)