Fenetre adaptée a la taille de la photo

stophes -  
txiki Messages postés 6514 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir,

J'ai un site et j'aimerai que mes photos en miniatures s'ouvrent (qd je clic dessus) en grande mais dans une fenetre qui s'adapte a la taille de la photo.

J'ai deja vu ca sur d'autre site et j'aimerai faire la meme chose.

Merci d'avance

Stophes
A voir également:

2 réponses

txiki Messages postés 6514 Date d'inscription   Statut Contributeur Dernière intervention   524
 
Salut stophes,
Voici un script qui permet de le faire: (enregistre le dans un fichier en .js)
<!-- redirection des liens image jpg. Michel Deboom 05/2005 
  
// Création de la pseudo-popup : 
fe='<div id="pop" style="position:absolute;left:180px;top:300px;display:none;z-index:200;background-color:#FFFFFF;border:3px outset;' 
//ajoute une ombre pour IE seulement 
fe+='filter:progid:DXImageTransform.Microsoft.Shadow(direction=135,color=#63421b,strength=6)">' 
fe+='<div id="tet" onmousedown="dx=px-gdim.offsetLeft;dy=py-gdim.offsetTop;drag=1;" onmouseup="drag=0" style="cursor:move;background-color:#267726;line-height:18px;color:white;font-size:12px;padding:0 20px 0 .5em;font-family:Verdana, Helvetica, Arial;">' 
fe+='entête<img title=" Fermer " src="../images/fermer.gif" onclick="voirSelect(\'visible\');gdim.style.display=\'none\'" height="14" width="16"' 
fe+='style="cursor:default;position:absolute;margin:1px;right:0;top:0; " /></div></div>' 
  
function initLienImg(){ 
db=!D.documentElement.clientWidth?D.body:D.documentElement //quirk IE6 
gdim=D.getElementById('pop'); lx=D.getElementById('tet') 
addEvent(D,"mousemove",controle_position) 
elem=document.getElementsByTagName('select'); 
  
//création de l'image 
im1=D.createElement("img");gdim.appendChild(im1); 
with(im1.style){border=0;margin="1px";} 
//écriture des évènements 
l=D.getElementsByTagName('a'); 
for(var i=0;i<l.length;++i){ 
  //ajoute onclick=grdimg dans liens image avec extention .jpg ou .JPG 
  result=l[i].href.search(/jpg$|JPG$/); 
  if(result!=-1){l[i].onclick=grdimg;} 
  } 
} 
  
function controle_position(e){ 
sx=gk?pageXOffset:db.scrollLeft; //scroll h 
sy=gk?pageYOffset:db.scrollTop; //scroll v 
px=gk?e.pageX:event.clientX+sx; //curseur x 
py=gk?e.pageY:event.clientY+sy; //curseur y 
if(drag)with(gdim.style){left=px-dx+"px";top=py-dy+"px";} 
return false 
} 
//Renvoi image et title dans le calque. 
function grdimg(){ 
fx=gk?innerWidth-20:db.clientWidth //l fenêtre 
fy=gk?innerHeight:db.clientHeight //h fenêtre 
//charge l'image dans le cache du navigateur. 
im=new Image();im.src=this.href; 
    //l'affiche en grandeur réduite repositionnée. 
with(gdim.style){display="block";top=sy+2+'px'}; 
with(im1){src=im.src;width=height=100}; 
if(!cr)cr=gdim.offsetHeight-127; 
if(gk)im1.style.marginBottom=-cr+"px";//correction Gecko 
//montre le message d'attente. 
lx.firstChild.data="patientez svp"; 
//colore le lien comme visité, récupère le message title 
this.style.color=D.vlinkColor;txt=this.title; 
//Lance le controle de chargement 
actif=setTimeout('controleChargement()',100) 
//désactive l'action normale du lien HTML 
;return false 
} 
      //controle du chargement de l'image 
function controleChargement(){ 
//éxécute imgOK quand c'est terminé 
im.complete?imgOK(): 
//sinon relance le contrôle toutes les 100 ms 
actif=setTimeout('controleChargement()',100) 
} 
  
function imgOK(){ // image chargée. 
clearTimeout(actif);lx.firstChild.data=txt; 
//L'image ne dépasse pas la fenêtre: 
if(im.width>=fx){im.height*=(fx-20)/im.width;im.width=fx-20;} 
if(im.height>=fy){im.width*=(fy-30)/im.height;im.height=fy-30;} 
  
//applique les dimensions recalculées à l'image. 
im1.width=im.width;im1.height=im.height; 
voirSelect('hidden') 
} 
  
// bug ie corrigé : cache les <select> 
function voirSelect(v){ 
if(!gk){for(i=0;i<elem.length;i++)elem[i].style.visibility=v;} 
} 
  
function addEvent(obj,evType,fn,capt){ // ajoute un événement sans écraser l'éxistant. 
if(obj.addEventListener){obj.addEventListener(evType,fn,capt);return true;} // NS6+ 
else if(obj.attachEvent)obj.attachEvent("on"+evType,fn) // IE 5+ 
else {return false;} 
} 
  
// initialisation 
D=document;gk=window.Event?1:0/*Gecko*/; 
dx=dy=e=drag=cr=0 
addEvent(window,"load",initLienImg) 
D.write(fe) 
//-->

Ensuite, mettre ça dans le head (quand on crée le fichier cidessus à part)
<script language="javascript" src="../mon_dossier/g_img.js" type="text/javascript"></script>

Puis pour le lien (vignette):
<a href="mon_dossier/ma_photo.jpg" title="ton commentaire"><img src="mon_dossier_vignettes/ma_photo_vignette.jpg" alt="mon_commentaire" border="0" /></a>

Attention avec le commentaire car s'il est trop long, ça va laisser une partie blanche en plus de la photo (voir dans la barre de titre de la pop up de ta photo).
Le border="0" c'est pour enlever la bordure bleue des liens dans une image.

voir un exemple sur mon site: http://abarka.free.fr rubrique "diaporama"

N'oublie pas de créer également une image pour la fermeture de la fenetre.
Bonne chance....
1
stophes
 
Oulala, je ne suis pas trop un as de la programmation et la je n'ai pas reussi a faire la chose attendu.

Quand tu dis enregistrer en .js tu veux dire ne .jps?

Dois -je retranscrire tt ce que tu m'as donné a l'identique en changeant seulement le nom et l'endroit de la photo au début du prog?

Merci
0
Pierro
 
Génial, alors là bravo txiki, c'est exactement ce que je cherchais, et ça fonctionne à merveille !

Merciiiiii
1
txiki Messages postés 6514 Date d'inscription   Statut Contributeur Dernière intervention   524
 
;-))

Content que tu ai reussi !
@ +
0