Bonjour
J'ai un petit probleme concernant des images placés en ligne (ou frise) avec float.
Vous pouvez voir sur ce lien : http://www.meteobell.com/__anjou_carte.php
Sur Mozilla fitrefox et IE, pas de probleme (ouf je me dis). Sur opéra tout part de travers.
Je vous explique maintenant le code :
Au début, classique, j'ai mis float left avec chacun par ex 1 padding-right:3px;
Mais la taille des images en question est obligatoirement exprimé en %.
33% si j'ai 3 images en ligne
24% si j'ai 4 images
19% si j'en ai 5 etc....
(j'ai utilisé des valeurs inférieur pour justement avoir des marges entre les photos)
J'avais donc forcément un espace à droite qui restait
Pour que ca colle à gauche et à droite, j'ai donc complexifié la chose.
Prenons l'exemple avec 3 images de 33% (la plus simple)
Si j'utilise float:left
j'ai 99% de la largeur utilisé et 1% à droite qui reste (pas jolie)
Si je met un padding-right exprimé en valeur absolu (2px par ex) y'a de grandes chances que ça colle qu'à moitié surtout en changeant la fenêtre de navigation ou pire que ça face descendre la dernière image à drotie en dessous. (comportement normal de float après tout)
Il faut donc que ma dernière image à droite n'est pas de padding-right. Jusque là ok
Si je met des valeurs relatives à mon padding, le résultat des bordures possèdent un comportement vraiment idéale quel que soit la taille de la fenêtre (tout mon site est en valeur relative je précise)
Donc pour 33%, il me faut un padding de (100%-99%=1% 1%/2 bordures=0.5%)
Y'a bien 2 bordures pour 3 images donc 1%:2
Ok donc la 1ere image de gauche et celle du centre auront un float:left; padding-right:0.5% width:33%
Et la dernière de droite aura un float:left width:33% mais sans padding (inutile, il aura obligatoirement la bonne taille de 0.5%)
En fait, pour être tout à fait exacte, le 0.5% marche réellement si vous mettez un float right sans padding pour la 3ème image à droite (ainsi collé), ce qui est le cas dans mon code. Mais pour le bug en question ça change rien.
Et bien cela vous ne pouvez pas le faire avec Opéra.
Car il semble que la dimension de l'image entre celui qui possède le padding:0.5% et celui sans padding ne soit pas la même, comme si il intégrait le padding dans sa propre dimension.
Je précise que toutes les images ont exactement la même dimension normallement et sans width.
Probleme de boite ? Pourtant avec IE aucun probleme, c'est ça que je comprend pas.
Voilà si vous avez des idées.
EDIT : pour ceux qu'on la flemme de tout lire, voici le code en question dans l'exemple du 33% et comme il est réellement dans mon site.
J'ai essayé de mettre différentes autres propiétés comme display ou overflow, mais rien n'y fait.
Toujours ce bug opéra de taille entre les images avec le padding-right:0.4% et ceux sans.
Modifié par Damonya (10 Sep 2006 - 17:50)
J'ai un petit probleme concernant des images placés en ligne (ou frise) avec float.
Vous pouvez voir sur ce lien : http://www.meteobell.com/__anjou_carte.php
Sur Mozilla fitrefox et IE, pas de probleme (ouf je me dis). Sur opéra tout part de travers.
Je vous explique maintenant le code :
Au début, classique, j'ai mis float left avec chacun par ex 1 padding-right:3px;
Mais la taille des images en question est obligatoirement exprimé en %.
33% si j'ai 3 images en ligne
24% si j'ai 4 images
19% si j'en ai 5 etc....
(j'ai utilisé des valeurs inférieur pour justement avoir des marges entre les photos)
J'avais donc forcément un espace à droite qui restait
Pour que ca colle à gauche et à droite, j'ai donc complexifié la chose.
Prenons l'exemple avec 3 images de 33% (la plus simple)
Si j'utilise float:left
j'ai 99% de la largeur utilisé et 1% à droite qui reste (pas jolie)
Si je met un padding-right exprimé en valeur absolu (2px par ex) y'a de grandes chances que ça colle qu'à moitié surtout en changeant la fenêtre de navigation ou pire que ça face descendre la dernière image à drotie en dessous. (comportement normal de float après tout)
Il faut donc que ma dernière image à droite n'est pas de padding-right. Jusque là ok
Si je met des valeurs relatives à mon padding, le résultat des bordures possèdent un comportement vraiment idéale quel que soit la taille de la fenêtre (tout mon site est en valeur relative je précise)
Donc pour 33%, il me faut un padding de (100%-99%=1% 1%/2 bordures=0.5%)
Y'a bien 2 bordures pour 3 images donc 1%:2
Ok donc la 1ere image de gauche et celle du centre auront un float:left; padding-right:0.5% width:33%
Et la dernière de droite aura un float:left width:33% mais sans padding (inutile, il aura obligatoirement la bonne taille de 0.5%)
En fait, pour être tout à fait exacte, le 0.5% marche réellement si vous mettez un float right sans padding pour la 3ème image à droite (ainsi collé), ce qui est le cas dans mon code. Mais pour le bug en question ça change rien.
Et bien cela vous ne pouvez pas le faire avec Opéra.
Car il semble que la dimension de l'image entre celui qui possède le padding:0.5% et celui sans padding ne soit pas la même, comme si il intégrait le padding dans sa propre dimension.
Je précise que toutes les images ont exactement la même dimension normallement et sans width.
Probleme de boite ? Pourtant avec IE aucun probleme, c'est ça que je comprend pas.
Voilà si vous avez des idées.
EDIT : pour ceux qu'on la flemme de tout lire, voici le code en question dans l'exemple du 33% et comme il est réellement dans mon site.
<div class="frise">
<a href="agglo.jpg" ><img class="float_frise_right_33"src="mo_agglo.jpg"alt="Panorama d'Angers" /></a>
<a href="maine.jpg" ><img class="float_frise_left_33"src="mo_maine.jpg"alt="Panorama du Maine et Loire" /></a>
<a href="pano.jpg" ><img class="float_frise_left_33_seul"src="mo_pano.jpg"alt="Panorama de la région d'Angers" /></a>
</div>
div.frise
{padding-left:30px;
padding-right:30px;}
img.float_frise_right_33
{
float:right;
width:33%;
margin:0;
padding-top:5px;
padding-bottom:5px;
padding-left:0.4%;
}
img.float_frise_left_33
{
width:33%;
float:left;
margin:0;
padding-top:5px;
padding-bottom:5px;
padding-right:0.4%;
}
img.float_frise_left_33_seul
{
width:33%;
float:left;
margin:0;
padding-top:5px;
padding-bottom:5px;
}
J'ai essayé de mettre différentes autres propiétés comme display ou overflow, mais rien n'y fait.
Toujours ce bug opéra de taille entre les images avec le padding-right:0.4% et ceux sans.
Modifié par Damonya (10 Sep 2006 - 17:50)