Bonjour à tous!
J'ai un vrai casse-tête à présenter aux "pro" du forum. Je pense avoir étudié toutes les possibilités et que selon les conditions que je pose (voir ci-dessous) le problème est insoluble. Mais si vous me trouvez une soluce, ça prouvera que vous êtes pro et que vous avez la plus grosse
Je suis en train de refaire le site d'un pote photographe. Le développement est visible ici. C'est une galerie photo avec une barre de menu à gauche, les vignettes dans une barre défilante en haut, un texte et la photo en grand dans le corps de la page.
Benoît m'a demandé la contrainte suivante:
- Photos disposées soit en portrait, soit en paysage, soit en format carré. Tout cela centré dans un carré imaginaire (le canvas, quoi). Et la représentation des images doit avoir une surface d'affichage constant. C'est à dire que le carré n'occupera pas tout le canvas mais aura des marges pour que son hauteur x largeur soit le même que l'hauteur x largeur des rectangles. A priori les images rectangulaires auront toutes le même rapport (du 3:2 je crois), donc pas besoin de s'inquiéter des panoramiques à rallonge.
Puis, pour le fun (je fais son site surtout pour apprendre et me faire la main en HTML/CSS, pas vraiment dans un but de productivité absolu) j'ai posé la contrainte suivante:
- Je veux que toutes les dimensions soient relatives. C'est à dire que les hauteurs, largeurs et marges sont gérées en pourcentages et que les images s'afficheront dans la même proportion de la fenêtre sur un 13" que sur un 30". En redimensionnant la fenêtre en live tout devrait s'accommoder aussi, mais bon, peu de gens s'amusent à bouger la taille de la fenêtre en cours de navigation.
Ces contraintes étant posées, le problème sur lequel je bloque c'est le centrage vertical des vignettes dans la barre. J'ai essayé plusieurs méthodes, dont:
- display: table-cell / vertical-align: middle -> ça centre verticalement les images, mais ça me fout le binz dans les hauteurs/largeurs. Il n'accepte plus de réglage d'hauteur en pourcentage.
- méthode du positionnement absolu/relatif/float à 50% puis marge négative -> ça coince aussi car la marge négative je dois la donner en pixels. Donc ça marche pour une taille de fenêtre mais pas pour les autres.
J'ai fait plusieurs recherches google et apparemment il n'existe pas d'autre solution en HTML/CSS. Je pense que la seule façon de régler ça c'est de passer par du javascript avec un listener sur la fenêtre et qui changerai la marge de façon dynamique.
Alors, me tromperai-je? Y'a-t'il une autre façon de centrer verticalement des images avec hauteur en pourcentage en html/css?
Merci à vous de vous pencher sur le problème!
Modifié par vitorio (12 Dec 2010 - 17:51)
J'ai un vrai casse-tête à présenter aux "pro" du forum. Je pense avoir étudié toutes les possibilités et que selon les conditions que je pose (voir ci-dessous) le problème est insoluble. Mais si vous me trouvez une soluce, ça prouvera que vous êtes pro et que vous avez la plus grosse
Je suis en train de refaire le site d'un pote photographe. Le développement est visible ici. C'est une galerie photo avec une barre de menu à gauche, les vignettes dans une barre défilante en haut, un texte et la photo en grand dans le corps de la page.
Benoît m'a demandé la contrainte suivante:
- Photos disposées soit en portrait, soit en paysage, soit en format carré. Tout cela centré dans un carré imaginaire (le canvas, quoi). Et la représentation des images doit avoir une surface d'affichage constant. C'est à dire que le carré n'occupera pas tout le canvas mais aura des marges pour que son hauteur x largeur soit le même que l'hauteur x largeur des rectangles. A priori les images rectangulaires auront toutes le même rapport (du 3:2 je crois), donc pas besoin de s'inquiéter des panoramiques à rallonge.
Puis, pour le fun (je fais son site surtout pour apprendre et me faire la main en HTML/CSS, pas vraiment dans un but de productivité absolu) j'ai posé la contrainte suivante:
- Je veux que toutes les dimensions soient relatives. C'est à dire que les hauteurs, largeurs et marges sont gérées en pourcentages et que les images s'afficheront dans la même proportion de la fenêtre sur un 13" que sur un 30". En redimensionnant la fenêtre en live tout devrait s'accommoder aussi, mais bon, peu de gens s'amusent à bouger la taille de la fenêtre en cours de navigation.
Ces contraintes étant posées, le problème sur lequel je bloque c'est le centrage vertical des vignettes dans la barre. J'ai essayé plusieurs méthodes, dont:
- display: table-cell / vertical-align: middle -> ça centre verticalement les images, mais ça me fout le binz dans les hauteurs/largeurs. Il n'accepte plus de réglage d'hauteur en pourcentage.
- méthode du positionnement absolu/relatif/float à 50% puis marge négative -> ça coince aussi car la marge négative je dois la donner en pixels. Donc ça marche pour une taille de fenêtre mais pas pour les autres.
J'ai fait plusieurs recherches google et apparemment il n'existe pas d'autre solution en HTML/CSS. Je pense que la seule façon de régler ça c'est de passer par du javascript avec un listener sur la fenêtre et qui changerai la marge de façon dynamique.
Alors, me tromperai-je? Y'a-t'il une autre façon de centrer verticalement des images avec hauteur en pourcentage en html/css?
Merci à vous de vous pencher sur le problème!
Modifié par vitorio (12 Dec 2010 - 17:51)