cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014
-
27 mai 2008 à 10:54
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013
-
28 mai 2008 à 15:28
Bonjour à tous
Je suis en train de mettre en place une galerie photo. Les images sont listées dans un tableau en petit, et sont affichées en grand dans un div quand on clique dessus.
La fonction appelée est zoomer(), à laquelle je passe en paramètre le nom de l'image ainsi que ses dimensions.
Le div dans laquelle l'image s'affiche est Zoom. (J'ajoute 32 aux dimensions du div pour avoir une parge de 16 autour de l'image).
Le div est correctement centré en largeur, mais pas en hauteur. Il est trop en bas. Je ne comprend pas d'où vient le problème.
Voici mon code :
function zoomer (img, largeur, hauteur) {
var l = screen.availWidth;
var h = screen.availHeight;
var div = document.getElementById ("Zoom");
var l_div = largeur + 32;
var h_div = hauteur + 32;
var pos_x = Math.round ((l - l_div) / 2);
var pos_y = Math.round ((h - h_div) / 2);
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 28 mai 2008 à 11:51
Bonjour,
<table bgcolor= "#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, Avec window.innerWidth ça centre exactement
comme il faut, mais il ne fonctionne pas avec
IE.</td>
</td></tr></tbody></table>Normal c'est
pourquoi j'avais rajouté document.body.clientWidth
Une autre
solution, que passer par la position de la mouse, est donc de récupérer la
position de la fenêtre, je te livre une fonction que j'utilise assez souvent,
qui tiens compte des navigateurs et des DOCTYPEs
//-------------------------------------------------
// Recup des dimensions de la fenetre
d'affichage
// return un tableau des
valeurs
//-------------------------------------------------
function GetDimFenetre(){
var Left;
var Top;
var Right;
var Bottom;
var DocRef;
if(
window.innerWidth){
with( window){
Left = pageXOffset;
Top = pageYOffset;
Right = innerWidth;
Bottom =
innerHeight;
}
}
else{ // Cas
Explorer a part
if( document.documentElement &&
document.documentElement.clientWidth)
DocRef =
document.documentElement;
else
DocRef = document.body;
with( DocRef){
Left = scrollLeft;
Top =
scrollTop;
Right = clientWidth;
Bottom = clientHeight;
nickadele
Messages postés1251Date d'inscriptionmercredi 7 août 2002StatutModérateurDernière intervention10 avril 2013 27 mai 2008 à 13:11
Re,
juste une petite réflection : screen.availHeight renvoie normalement la hauteur de l'écran, hors menu, barre d'outil, etc...
Peut-être que ton problème vient de là ?
Nickadele
----------------------------------------------
non, ma belle ne s'appel pas Adèle
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 27 mai 2008 à 14:20
Je viens d'essayer avec screen.height mais le résultat est exactement le même.
En fait dirait que la valeur récupérée par availHeight (ou par height) est trop grande.
J'ai essayé de mettre dans la hauteur de mon div (screen.availHeight - 40) et celui-ci dépasse quand même.
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 27 mai 2008 à 14:40
J'avais justement utilisé screen.availHeight car il ne prends pas en compte les menus.
Pour une raison qui m'echappe, j'ai remplacé :
var pos_y = Math.round ((h - h_div) / 2);
par :
var pos_y = Math.round ((h - h_div) / 4);
et là c'est parfaitement centré. Je cherche pas à comprendre, ça fonctionne c'est déjà ça.
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 27 mai 2008 à 18:22
Bonjour à tous,
Je ne saisi pas le pourquoi de
l'utilisation de l'objet screen alors que le
souhait est de centrer par rapport à la page et non à l'écran...
Il me
semble plus judicieux d'utiliser les caractéristiques de la fenêtre, donc window.innerWidth ou autre document.body.clientWidth suivant le cas...
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 28 mai 2008 à 10:15
Avec window.innerWidth ça centre exactement comme il faut, mais il ne fonctionne pas avec IE.
En fait je viens de m'apercevoir que si ma pages et longue et que je suis en bas, le cadre s'affiche toujours au même endroit.
Autrement dit, il faut remonter pour le voir, et ce quelque soit la fonction que j'utilise.
J'avoue être un peu perdu : Toutes ces fonctions se basent sur le haut de la page? N'y en a t'il pas qui se basent sur la position actuelle?
cs_ov3rdoze
Messages postés414Date d'inscriptionlundi 19 juillet 2004StatutMembreDernière intervention23 septembre 2014 28 mai 2008 à 11:03
var l = screen.availWidth;
var h = screen.availHeight;
var div = document.getElementById ("Zoom");
var l_div = largeur+32;
var h_div = hauteur+32;
var pos_x = Math.round ((l - l_div) / 2);
var pos_y = Math.abs (event.y - (h_div / 2));
J'ai pensé que le plus simple pour récupérer la position de l'image était de récupérer l'endroit où l'on clique.
C'est pas trop mal, et ça fonctionne bien avec IE et Opera. En revanche FF dit :
event is not defined