Posez votre question Signaler

Ouvrir image au passafe de la souris

cathy_9999 129Messages postés 13 juin 2007Date d'inscription 24 janvier 2012Dernière intervention - Dernière réponse le 31 mars 2009 à 14:50
Bonjour,
Je souhaiterais réaliser sur mon site des vignettes popup qui s'ouvre au passage de la souris sur une image.
Quand je passe la souris sur une image, je souhaiterais que cela m'ouvre une petite popup avec une autre image dedans mais pas dans une nouvelle fenêtre.
J'espere que vous comprenez ce que je souhaite realiser.
Lire la suite 

Ouvrir image au passafe de la souris »

16 réponses
Réponse
+1
moins plus
salut,

une version valide et accessible.

Ajouter un commentaire
Réponse
+0
moins plus
Bjr

J'espere que vous comprenez ce que je souhaite realiser. Pas vraiment lol

Lorsque tu survoles une vignette tu veux que ça t'affiche l'image en taille normale dans une cadre par dessus la page un peu à la manière des messages qui apparaissent sur certains liés de ce site à côté de la souris dans Discussions & Opinions des Communautés par ex ?
Ajouter un commentaire
Réponse
+0
moins plus
Oui voila je veux tout a fait cela ! connaitriez tu le code?
Ajouter un commentaire
Réponse
+0
moins plus
D'abord même si ça te semble simple en fait le code n écéssaire pour le réaliser n'est pas aussi trivial qu'il y paraît, je dirais même que c'est plutôt complexe par rapport à l'affichage d'une nouvelle page (je dois en avoir un qui fait à peu près ça dans un coin faut que je mette la main dessus)

Ensuite tes images elles sont censées apparaitre où ? En plein mileur de l'écran ? Toujours au même endroit ?
Si ton image est très grande tu fais comment ? Une fois affichée comment ton image disparait-elle ? Lorsque la souris quitte la vignette ? Car dans ce cas il ne faudrait pas qu'en s'affichant l'image masque les vignettes tu vois le pb ...

As-tu un ex de page visible sur le net ?

En plus pour que ça fonctionne il faut précharger toutes les images en mémoire (pas seulement les vignettes) : ça risque de prendre un certain temps
Ajouter un commentaire
Réponse
+0
moins plus
Malheureusement je ne trouve pas d'exemple !
Mes images qui seront placés dans les vignettes, je les aurais prealablement reduis toutes a la meme taille ! donc aucun souci, je veux que la vignette, son coin bas gauche soit collé a la souris et qu'elle disparaise quand j'enleve ma souris de l'image.

merci
Ajouter un commentaire
Réponse
+0
moins plus
Ha tu veux afficher des vignettes au survole d'une "grande" image et pas l'inverse ?

Je pensais le contraire : afficher une "grande" image au suvole d'une vignette ...

Mais bon ça change rien au principe

Ajouter un commentaire
Réponse
+0
moins plus
Il ya des miniatures et des que ma souris passe dessus cela affiche dans une toolpit (je sais pas si ca s'appelle bien comme cela), l'image legerement agrandi (qui seron contenu dans un dossier a part des miniatures)

est ce plus claire?
Ajouter un commentaire
Réponse
+0
moins plus
Hum je regarde si j'ai un script facilement adaptable

Ajouter un commentaire
Réponse
+0
moins plus
c gentil merci !!
Ajouter un commentaire
Réponse
+0
moins plus
Voici un ex (je sais pas s'il répond exactement à tes besoins)

http://www.nobodysperfect.freesurf.fr/vignette/vignette.htm


Maintenant il faudrait précharger les images pour être sûr de ne pas avoir une croix rouge T'Oh !

Ce qui marche sur une page vide peut ne plus fonctionner sur une mise en page complexe.

Ne pas mettre de marges et autres padding sur les images qui contiennent les vignettes.
Ajouter un commentaire
Réponse
+0
moins plus
oui c exactement cela que je cherche !! avez vous le code?
Ajouter un commentaire
Réponse
+0
moins plus
Tu peux l'avoir en faisant Affichage Source depuis le lien ci-dessus

Sinon voici le code (c'est un peu long)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html  xml:lang="fr" lang="fr" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test mouse over</title>

<style>
*
{
	font-family : arial;
	font-size : 12pt;
}

body
{
	margin : 10px;
	padding : 10px;
	border : 0px;

}


.cible
{

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


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



</style>

<script>
aa= 'input['+j+']['+i+']';

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

// Attention : offsetHeight ne fonctionne que si l'élément ne comporte ni marges, ni bordures, ni padding sinon ...
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",400,250);




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

// Retourne la position de la souris sur la page (et pas sur l'écran !)
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;
}

// Retourne la position absolue d'un objet sur la page
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","images/AUDI_R8_1.jpg",400,350);
	targetList.addTarget("cible2","images/AUDI_R8_2.jpg",400,350);
	targetList.addTarget("cible3","images/AUDI_R8_3.jpg",400,350);
	
	document.onmousemove=mouseMove;
}

</script>
</head>
<body onload="load()">
<div class="popup" id="popup"></div>
<div class="cible">
<img id="cible1" src="images/AUDI_R8_1.jpg" width="100px">
</div>
<div  class="cible">
<img id="cible2" src="images/AUDI_R8_2.jpg" width="100px">
</div>
<div  class="cible">
<img id="cible3" src="images/AUDI_R8_3.jpg" width="100px">
</div>
</body>
</html>
Eric27 - 31 mars 2009 à 14:50
Bonjour PhP,

je cherchais un script pour afficher des vignettes au passage de la souris sur des images dans une page html, et je suis tombé sur ton script qui fonctionne parfaitement, je l'ai adapté à mes besoins. Il me reste une question à régler pour laquelle je suis un peu perdu : ton script affiche les vignettes à une place qui est associée à la position du pointeur de la sourir, moi je souhaiterai sur les vignettes apparaissent à un endroit précis de l'écran, toujours le même quel que soit la position de ma souris et quelle que soit l'image survolée qui déclenche l'affichage de la vignette. Comment modifier ton script pour arriver à ce résultat ?

merci, Eric
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour

Comme sur CCM dans vos profils ;))))))))))))))))) lol
Ils n'ont rien vu ; faut dire qu'ils n'ont pas (encore ou plus) d'image dans leur profil :))
(Ils ne vont pas non-plus sur le profil d'autrui pour voir les images EN ZOOM ou autres)

Nécessite l'activation de JavaScript !

Galerie photos avec agrandissement en popup - ASP-PHP.net :
http://www.asp-php.net/ressources/bouts_de_code.aspx?id=457

Hier j'ai vu un site web qui présentait des bijoux avec un système de popup flash sur la page à droite (à coté de l'image) et fixe pour zoomer et un carré blanc se trouvait sur l'image moyennement miniature.

Recherche de 'agrandissement photo popup flash zoom' avec Google
http://www.google.fr/search?hl=fr&q=agrandissement+photo+popup+flash+zoom

Merci
Ajouter un commentaire
Réponse
+0
moins plus
Mes miniatures etant de 160 * 120 pixels et mes grandes de 640 * 480, j'ai changé ceci mais cela ne fonctionne pas !

function load()
{
targetList.addTarget("cible1","miniature_club/1-1.jpg",640,480);
targetList.addTarget("cible2","miniature_club/2-2.jpg",640,480);
targetList.addTarget("cible3","miniature_club/3-3.jpg",640,480);

document.onmousemove=mouseMove;
}

</script>
</head>
<body onload="load()">
<div class="popup" id="popup"></div>
<div class="cible">
<img src="miniature_club/1.jpg" width="160" height="106" id="cible1"></div>
<div class="cible">
<img src="miniature_club/2.jpg" width="160" height="120" id="cible2"></div>
<div class="cible">
<img src="miniature_club/3.jpg" width="160" height="95" id="cible3"></div>
</body>
</html>
Ajouter un commentaire
Réponse
+0
moins plus
Bjr

Aie ! J'ai oublié une ligne (qui n'a rien à voir) dans le code et qui fait tout planter ! Quel c.. lol

Supprime ceci : aa= 'input['+j+']['+i+']'; juste après la balise <script>

Et pense aussi à bien changer les dimensions de ton popup dans le ligne
var targetList = new TargetList("popup",400,250); (ici 400 x 250)
si ce n'est pas déjà fait ;-)

Ajouter un commentaire
Ce document intitulé « Ouvrir image au passafe de la souris » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?