Fenetre adaptée a la taille de la photo
stophes
-
txiki Messages postés 6514 Date d'inscription Statut Contributeur Dernière intervention -
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
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
2 réponses
-
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....
-
Génial, alors là bravo txiki, c'est exactement ce que je cherchais, et ça fonctionne à merveille !
Merciiiiii