Forum TOWeb

21 Mai 2013 à 21h21

Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
Identifiez-vous Inscrivez-vous Accueil du forum Recherche avancée Aide sur le forum
A court d'idées cadeaux ? OFFREZ TOWEB POUR NOEL !
+  Forum TOWeb
|-+  TOWeb
| |-+  Scripts & astuces pour votre site
| | |-+  Comment faire un zOOM sur image?
« sujet précédent | | sujet suivant »
Pages: [1] 2 Bas de page Imprimer
Auteur Fil de discussion: Comment faire un zOOM sur image?  (Lu 8498 fois)
hergante
Invité
« le: 01 Janvier 2010 à 16h41 »

Bonjour à tous et meilleurs voeux Souriant
Comment faire un zOOM sur image en la survolant avec la souris?
Journalisée
Albert X
Invité
« Répondre #1 le: 01 Janvier 2010 à 21h00 »

Bonjour.

Je pense que  cette rubrique devrait répondre à ton attente.

Cordialement.
Journalisée
laurents
Hero Member
*****

Votes : +88/-33
Messages: 3472


WWW
« Répondre #2 le: 01 Janvier 2010 à 21h13 »

J'ai une solution, dont voici un exemple, mais impossible de mettre quelque chose, là où va apparaître le zoom (cf mot "texte" sur l'exemple (et l'image, j'en ai prise une que j'avais sous la main).
Si tu es intéressée, voici le code :
Code:
<SCRIPT LANGUAGE="Javascript1.1">
function lightUp() {
document.images["homeButton"].src="zoom.bmp"
}
function dimDown() {
document.images["homeButton"].src="normal.bmp"
}
</SCRIPT>
<A HREF="#" onmouseOver="lightUp();" onmouseOut="dimDown();">
<IMG SRC="normal.bmp" name="homeButton" width=200 height=200 border=0></A>
à mettre dans un script html (il faudra évidemment adapter les tailles width et height). Je ne sais pas s'il serait possible de mettre qq chose à l'emplacement du zoom (et avec ma solution, si tu mets plusieurs images côte à côte,  il faudra prévoir l'emplacement des zooms (pas possible que les petites images se touchent ou il faut faire des liens cliquables (mais comme les albums photo)). (Et d'ailleurs, ds ma solution, les 2 images font la même taille, la petite étant une réduction du zoom collée sur un fond blanc). (Comme Jean-Serge a fait une réponse pdt la mienne, j'ai testé sa solution et c'est pareil...) (Cela dit, sa solution est plus simple et mieux expliquée)
Journalisée

TW e-comm V3 3.1.8.580 Seven - IE V8 -  Free, 1&1, OVH et PHPNET
hergante
Invité
« Répondre #3 le: 10 Janvier 2010 à 18h15 »

en fait l'idéal :
http://www.zoe-et-lola.com/
Lorsque l'on survole les images le zoom apparait!
Journalisée
laurents
Hero Member
*****

Votes : +88/-33
Messages: 3472


WWW
« Répondre #4 le: 10 Janvier 2010 à 21h46 »

Et aussi. Et pour faire ça, j'ai juste repris un bout de code que j'avais déjà (en l'adaptant un tout petit peu). Il fallait juste que j'y pense (contrairement à ton exemple, le zoom ne se déplace pas avec la souris, mais ça me paraît secondaire)

Comment faire ça ?
Pour chq image, il faut mettre le code suivant :
Code:
<style>.popup_image div.popup{visibility: hidden;
z-index: 10;
top: pos_zoom_top px;
left: pos_zoom_left px;
position: absolute;
background-color:white;
border-color:black;
}
span:hover.popup_image div.popup{
visibility: visible;
}
span .popup_image div:hover.popup{
visibility: visible;
}
</style><!-- mettre tous les styles au début de la page -->
<!-- code pour une image -->
<span
 onmouseover="document.getElementById('popupid').style.visibility = 'visible';"><span
 class="popup_image"><b><img
 src="petite_image.bmp"></b><span
 onmouseout="document.getElementById('popupid').style.visibility = 'hidden';">
<div class="popup" id="popupid"><span><img
 src="zoom.bmp"></span>
<!-- fin du code pour une image -->
(bmp, c'est juste un exemple d'extension ; n'importe laquelle marche), mais autant ça marche si on maîtrise le code qui rajoute les images (tout faire en script html), autant je ne saurais pas le faire marcher avec un album photo Toweb (mais on peut faire pareil en s'en passant : faire une page avec ttes les images et les zooms (visible ds le menu) et faire plein de pages, une par image, invisibles ds le menu, et ds la page avec ttes les images, mettre un script html avec les styles, puis un script html par image avec la fin de mon code, mais pour que ça marche, il faut bien distinguer les identifiants (popupid -> popupidi et popup_image->popup_imagei, où i est le n° de l'image) et sur cette page, pour chq image, mettre un lien sur la page consacrée à l'image.
Si ce n'est pas assez clair, n'hésitez pas à poser des questions.
Journalisée

TW e-comm V3 3.1.8.580 Seven - IE V8 -  Free, 1&1, OVH et PHPNET
mag03
Full Member
***

Votes : +0/-1
Messages: 122



WWW
« Répondre #5 le: 16 Janvier 2010 à 22h38 »

Bonsoir,
pouvez vous me dire comment mettre un script  sur une image pour pouvoir la zoomer ensuite ,  je ne connais pas grand chose en script. Merci 
Journalisée

laurents
Hero Member
*****

Votes : +88/-33
Messages: 3472


WWW
« Répondre #6 le: 16 Janvier 2010 à 23h19 »

Je ne répondrai que demain : dodo.
Journalisée

TW e-comm V3 3.1.8.580 Seven - IE V8 -  Free, 1&1, OVH et PHPNET
Albert X
Invité
« Répondre #7 le: 17 Janvier 2010 à 08h10 »

Bonjour "mag03".

Si cette démo répond à tes attentes, tu trouveras toutes les explications ci dessous :

1ère étape

- Dans ton logiciel de retouche photos, ouvre une photo de grande taille et enregistre-la sous : photo_grande.jpg
- Dans ton logiciel de retouche photos, réduis la taille de cette même photo et enregistre-la sous : photo_petite.jpg

2ème étape

Code:
<img src="photo_petite.jpg"
onmouseover="this.src='photo_grande.jpg';"
onmouseout="this.src='photo_petite.jpg';"
name="carte" style="border:0px;" />

- Copie le code ci-dessus.
- Dans TOWeb, crée un champ utilisateur.
- Nomme-le : ZOOM_PHOTO
- Coche la case script.
- Colle le code précédemment copié.
- Dans l'onglet fichiers additionnels, clique sur "Ajoutez des fichiers nécessaires à votre script" et ajoute les deux photos : "photo_petite.jpg et photo_grande.jpg
- Valide par OK

3ème étape

Dans TOWeb, insére à l'intérieur d'un paragraphe, le champ précédemment créé : ZOOM_PHOTO

Cordialement.

Journalisée
laurents
Hero Member
*****

Votes : +88/-33
Messages: 3472


WWW
« Répondre #8 le: 17 Janvier 2010 à 14h51 »

Bonjour mag03,

la solution de Jean-Serge a un petit défaut que n'a pas la mienne. Si tu la préfères, tu suis ttes les étapes citées par Jean-Serge, sauf que tu remplaces le code par celui-ci :
Code:
<style>.popup_image div.popup{visibility: hidden;
z-index: 10;
top: pos_zoom_top px;
left: pos_zoom_left px;
position: absolute;
background-color:white;
border-color:black;
}
span:hover.popup_image div.popup{
visibility: visible;
}
span .popup_image div:hover.popup{
visibility: visible;
}
</style><!-- mettre tous les styles au début de la page -->
<!-- code pour une image -->
<span
 onmouseover="document.getElementById('popupid').style.visibility = 'visible';"><span
 class="popup_image"><b><img
 src="photo_petite.jpg"></b><span
 onmouseout="document.getElementById('popupid').style.visibility = 'hidden';">
<div class="popup" id="popupid"><span><img
 src="photo_grande.jpg"></span>
<!-- fin du code pour une image -->
et s'il y a plusieurs images, tu remplaces "popup_image" par "popup_image_i" avec i=1,2..." et "popupid" par "popupid_i" avec i=1,2..." et il faut pour chq image renseigner "pos_zoom_top" et "pos_zoom_left" (au début du code que j'ai fourni (la position du zoom)). Si ça te pose des difficultés, dis-le moi.
Journalisée

TW e-comm V3 3.1.8.580 Seven - IE V8 -  Free, 1&1, OVH et PHPNET
modefreestyle
Sr. Member
****

Votes : +2/-1
Messages: 276



WWW
« Répondre #9 le: 18 Janvier 2010 à 19h54 »

Bonsoir,

je vais essayer mais je voudrais être sûre que cela fonctionne pour un diaporama ? Roulement des yeux
Merci beaucoup

Pauline
www.mode-free-style.fr
Journalisée

laurents
Hero Member
*****

Votes : +88/-33
Messages: 3472


WWW
« Répondre #10 le: 18 Janvier 2010 à 23h47 »

Je n'en sais rien, d'autant plus que je ne vois pas ce qu'est un diaporama, mais avant de transférer, cette fonction tourne parfaitement en local ; tu peux donc la tester sur ton PC.
Journalisée

TW e-comm V3 3.1.8.580 Seven - IE V8 -  Free, 1&1, OVH et PHPNET
Albert X
Invité
« Répondre #11 le: 19 Janvier 2010 à 18h39 »

Bonjour.

Et encore une nouvelle façon de zoomer une photo au survol de la souris.

Démo.

Cordialement.
Journalisée
hergante
Invité
« Répondre #12 le: 19 Janvier 2010 à 19h08 »

oui EXTRA, je veux ça!!!!!!
Si tu veux bien me donner le les codes!!!c'est exactement ce que je cherche depuis le début.
Vite mon impatience est à son comble, histoire que je bosse encore toute la nuit!!
Bien à toi excellent towebeur Clin d'oeil
Hergante
Journalisée
Albert X
Invité
« Répondre #13 le: 19 Janvier 2010 à 19h42 »

Bonjour.

Voici le script. Il te suffit de l'adapter à ta convenance et à l'insérer via un "champ script". Utilise l'option "fichiers additionnels" pour tes photos.

Cordialement.

Code:
<style>
}

.cible
{

position : relative;
float : left;
top : 500px;
padding:10px;
border-style : solid;
margin : 5px;
border-width : 1px;
}


.popup
{
position : absolute;
width : 250px;
height : 213px;
border-style : solid;
border-width : 1px;
overflow:hidden;
left : -10000px;
z-index : 100;

}



</style>

<script>

function Target(id, picture, width, height)
{
this.id = id;
this.ref = null;
this.width = width;
this.height = height;
this.picture = picture;
}


Target.prototype.getHeight = function()
{
var elt = document.getElementById(this.id);
return elt.offsetHeight;
}

Target.prototype.getWidth = function()
{
var elt = document.getElementById(this.id);
return elt.offsetWidth;
}


function TargetList(popupId, popupWidth, popupHeight)
{
this.popupId = popupId;
this.popupWidth = popupWidth;
this.popupHeight = popupHeight;
this.items = new Array();

this.currentIndex = -1;
}

TargetList.prototype.addTarget = function(id,picture,width,height)
{
var item = new Target(id,picture,width,height);
item.index = this.items.length;

var elt = document.getElementById(id);
this.items.push(item);
}

TargetList.prototype.hidePopup = function()
{
if (this.currentIndex != -1)
{
document.getElementById(this.popupId).style.left=-10000+"px";
this.currentIndex = -1;
}
}

TargetList.prototype.selectTarget = function(index)
{
if (this.currentIndex != index)
{
if ((index >=0) && (index < this.items.length))
{
document.getElementById(this.popupId).innerHTML='<img src="'+this.items[index].picture+'">';
this.currentIndex = index;
}
}
}

TargetList.prototype.showPopup = function(x,y)
{
var elt = document.getElementById(this.popupId);
elt.style.left=x+5+"px";
elt.style.top=y-this.popupHeight+"px";
}

TargetList.prototype.findTarget = function(x,y)
{
var index = -1;
for (var i=0; i < this.items.length; i++)
{
var position = findPosition(this.items[i].id);
if ((x >= position.x) && (x < position.x+this.items[i].getWidth()) && (y >= position.y) && (y < position.y+this.items[i].getHeight()))
{
index = i;
break;
}
}
return index;
}


var targetList = new TargetList("popup",250,213);




function strToNumber(value)
{
var nbr = parseInt(value);
if (isNaN(nbr)) { nbr = 0;}
return nbr;
}


function mousePosition(e)
{
var result = new Array();
result["x"] = 0;
result["y"] = 0;
if (!e) var e = window.event;
if (e.pageX || e.pageY) {
result["x"] = e.pageX;
result["y"] = e.pageY;
}
else if (e.clientX || e.clientY) {
result["x"] = e.clientX + document.body.scrollLeft
+ document.documentElement.scrollLeft;
result["y"] = e.clientY + document.body.scrollTop
+ document.documentElement.scrollTop;
}
return result;
}


function findPosition(id)
{
var elt = document.getElementById(id);
var result = new Array();
result["x"] = 0;
result["y"] = 0;
while (elt)
{
result["x"] += elt.offsetLeft;
result["y"] += elt.offsetTop;

elt = elt.offsetParent;
}

return result;
}

function mouseMove(e)
{
var mouse = mousePosition(e);
index =targetList.findTarget(mouse.x,mouse.y);

if (index != -1)
{
targetList.selectTarget(index);
targetList.showPopup(mouse.x,mouse.y);
}
else
{
targetList.hidePopup();
}
}

function load()
{
targetList.addTarget("cible1","achille_grande.jpg",250,213);



document.onmousemove=mouseMove;
}

</script>
</head>
<body onload="load()">
<div class="popup" id="popup"></div>
<div class="cible">
<img id="cible1" src="achille_grande.jpg" width="100px">

</div>
</body>
</html>
« Dernière édition: 20 Janvier 2010 à 18h16 par Jean-Serge » Journalisée
modefreestyle
Sr. Member
****

Votes : +2/-1
Messages: 276



WWW
« Répondre #14 le: 20 Janvier 2010 à 13h18 »

Bonjour et merci pour ce script,

je viens de l'essayer mais cela ne fonctionne pas pour moi F&acirc;ch&eacute;
Les photos apparaissent non pas dans l'onglet où j'ai mis le script mais bien en dessous et il ne se passe rien au survol de la souris

J'ai créé un champ en remplaçant le nom de tes photos par les miennes ce qui donne :

<style>
}

.cible
{

   position : relative;
   float : left;
   top : 500px;
   padding:10px;
   border-style : solid;
   margin : 5px;
   border-width : 1px;
}


.popup
{
   position : absolute;
   width : 250px;
   height : 213px;
   border-style : solid;
   border-width : 1px;
   overflow:hidden;
   left : -10000px;
   z-index : 100;
   
}



</style>

<script>

function Target(id, picture, width, height)
{
   this.id = id;
   this.ref = null;
   this.width = width;
   this.height = height;
   this.picture = picture;
}


Target.prototype.getHeight = function()
{
   var elt = document.getElementById(this.id);
   return elt.offsetHeight;
}

Target.prototype.getWidth = function()
{
   var elt = document.getElementById(this.id);
   return elt.offsetWidth;
}


function TargetList(popupId, popupWidth, popupHeight)
{
   this.popupId = popupId;
   this.popupWidth = popupWidth;
   this.popupHeight = popupHeight;
   this.items = new Array();
   
   this.currentIndex = -1;
}

TargetList.prototype.addTarget = function(id,picture,width,height)
{
   var item = new Target(id,picture,width,height);
   item.index = this.items.length;   
   
   var elt = document.getElementById(id);
   this.items.push(item);
}

TargetList.prototype.hidePopup = function()
{
   if (this.currentIndex != -1)
   {
      document.getElementById(this.popupId).style.left=-10000+"px";
      this.currentIndex = -1;
   }   
}

TargetList.prototype.selectTarget = function(index)
{
   if (this.currentIndex != index)
   {
      if ((index >=0) && (index < this.items.length))
      {
         document.getElementById(this.popupId).innerHTML='<img src="'+this.items[index].picture+'">';
         this.currentIndex = index;
      }
   }   
}

TargetList.prototype.showPopup = function(x,y)
{
   var elt = document.getElementById(this.popupId);
   elt.style.left=x+5+"px";
   elt.style.top=y-this.popupHeight+"px";
}

TargetList.prototype.findTarget = function(x,y)
{
   var index = -1;
   for (var i=0; i < this.items.length; i++)
   {
      var position = findPosition(this.items.id);
      if ((x >= position.x) && (x < position.x+this.items.getWidth()) && (y >= position.y) && (y < position.y+this.items.getHeight()))
      {
         index = i;
         break;
      }
   }
   return index;
}


var targetList = new TargetList("popup",250,213);




function strToNumber(value)
{
   var nbr = parseInt(value);
   if (isNaN(nbr)) { nbr = 0;}
   return nbr;
}


function mousePosition(e)
{
   var result = new Array();
   result["x"] = 0;
   result["y"] = 0;
   if (!e) var e = window.event;
   if (e.pageX || e.pageY)    {
      result["x"] = e.pageX;
      result["y"] = e.pageY;
   }
   else if (e.clientX || e.clientY)    {
      result["x"] = e.clientX + document.body.scrollLeft
         + document.documentElement.scrollLeft;
      result["y"] = e.clientY + document.body.scrollTop
         + document.documentElement.scrollTop;
   }
   return result;
}


function findPosition(id)
{
   var elt = document.getElementById(id);
   var result = new Array();
   result["x"] = 0;
   result["y"] = 0;
   while (elt)
   {
      result["x"] += elt.offsetLeft;
      result["y"] += elt.offsetTop;
      
      elt = elt.offsetParent;
   }
   
   return result;
}

function mouseMove(e)
{
   var mouse = mousePosition(e);
   index =targetList.findTarget(mouse.x,mouse.y);
   
   if (index != -1)
   {
      targetList.selectTarget(index);
      targetList.showPopup(mouse.x,mouse.y);
   }
   else
   {
      targetList.hidePopup();
   }
}

function load()
{
   targetList.addTarget("cible1","sac my design.jpg",250,213);
   

   
   document.onmousemove=mouseMove;
}

</script>
</head>
<body onload="load()">
<div class="popup" id="popup"></div>
<div class="cible">
<img id="cible1" src="sac my design-petite.jpg" width="100px">

</div>
</body>
</html>


J'ai bien sûr mis mes images comme fichiers additionnels. Huh
Le résultat est visible sur ma page test de mon site (dernière rubrique) :
http://www.mode-free-style.fr/test/index.html

Merci pour votre aide
Cordialement

Pauline
Journalisée

Pages: [1] 2 Haut de page Imprimer 
« sujet précédent | | sujet suivant »
Aller à:  


Forum TOWeb © 2012 Lauyan Software Cliquez ici pour vous abonner au flux RSS du forum Règles du Forum  -   Powered by SMF
Powered by SMF 1.1.18 | SMF © 2006-2009, Simple Machines