28173 sujets

CSS et mise en forme, CSS3

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! Smiley smile
Modifié par gonga (31 Oct 2006 - 11:57)
Bonjour,

Pourquoi ne peux-tu pas mettre les images en background des éléments du menu dans la nouvelle présentation ?

Ca te permettrait aussi d'ajouter de jolis effets de survol et éventuellement d'optimiser la taille de ta page en n'utilisant qu'une seule image pour tout le menu.
Merci! quelle rapidité de réponse!

- Je pensais fabriquer ces "images-texte" sur un fond transparent en png... C'est pourquoi je les imaginais "dessus"... Le contour du texte est tarabiscoté. Il me semblait que les effet de survol seraient plus simples avec une image "dessus" au lieu de "en background"... mais j'en suis de moins en moins certain en y réfléchissant à deux fois... Et ça me rappelle qu'il y a sur ce site un excellent tutoriel sur le survol d'images, que je vais relire... a priori du travail de construction des images et des question de gestion rigoureuse de dimensionnements/positionnement en perspective, mais on n'a rien sans rien...

- Et côté "menuTexte", je n'avais tout simplement pas songé à "identifier" chaque bloc en ligne du menuTexte actuel (ancien design) par un "id" différent, pour pouvoir les "remplir" dans l'autre variante menuImage...

Pourquoi pas en effet!
C'est vrai que pour le menuTexte ces id sont peu utiles, mais ça a le mérite de tout mettre dans le même bloc pour les 2 "aspects"!
Et c'est sans doute aussi simple ainsi... Peut-être pas en quantité de travail.
Merci encore! et longue vie à ce site!
Je vais immédiatement y réfléchir un peu mieux avant de dire des bêtises.
Je reviendrai vous tenir au courant, et mettre éventuellement le message en "résolu".
C'est bien celui-ci... je viens donc de le relire...
Comme je le disais, il me faut une image différente par bouton, avec le texte écrit "en image". Comme je ne peux pas rajouter du texte sur ces images, il reste le probleme du texte de remplacement...
Je vais conserver l'idée de cette possibilité - qui risque de me prendre plus de temps que je n'en ai - pour une "modification ultérieure éventuelle à creuser".
J'attends encore un peu avant de mettre "résolu", au cas où...
Merci encore en tout cas, ta réponse m'a bien éclairci les idées ! (dans une période de "trop d'ordi" et de somnolence). J'avais écarté a priori et trop rapidement certaines possibilités. Je vais de ce pas m'éloigner de l'ordinateur quelques instants, des fois ça marche !