bonjour

debutant je souhaiterait faire un agrandissement d'image progressif voici le lien qui est pour moi un bonne exemple.

ici http://www.unesourisetmoi.info/

ou puis je trouver ce code ou un exemple proche de celui ci ?

peut on faire cela en css?

comment dois je m'y prendre?

cordialement
Modifié par didier17 (16 Oct 2007 - 19:54)
Bonsoir,

Dans le cas de ce site, il utilise le javascript, qui, s'il est désactivé, ne permet pas d'afficher un agrandissement de l'image : ca ne fait rien du tout si tu cliques sur la miniature !

Par contre, dans un autre style mais qui est bien "à la mode" en ce moment tu as le lightbox : si le javascript est désactivé, ca affiche quand même l'agrandissement, mais sans les effets !
les liens :
Lightbox (en francais)
Lighbox2
merci

par contre java script est il par défaut activé sur les navigateurs?

ce qui est interessant dans le site que j'ai posté c'était de pourvoir faire un menu complet avec des images alors que l'autre ne le permet pas.

je garde le lien.
didier17 a écrit :

par contre java script est il par défaut activé sur les navigateurs?


Oui : sur ton pc, par défaut javascript est actif dans les navigateurs.
Il est souvent désactivé dans les entreprises ou les écoles/universités.
Si tu souhaites faire un menu (ce qui n'est pas le cas du site que tu nous présentes ) peut-être peux-tu t'inspirer de ce tuto (menu avec commentaires au survol) en utilisant une image plus grande en background de ton .menu a:hover span ?

Quid de l'accessibilité ? de l'intérêt pour un menu ? Que veux-tu faire exactement ?

Pour Java, tu as la réponse de carobee, le site que tu nous présentes est d'ailleurs assez triste sans java, ce qui est dommage Smiley cligne
bonjour

l'objectif était de faire un menu avec des images qui s'agrandissent progressivment comme sur le site que j'ai posté en rajoutant par exemple des liens pour ouvrir une page sur chaque image je trouvais cela super original.

agrandir une image pour en faire un menu ca s'approche du flash mais la ca n'en est pas.

je serais bien incapable de devellopper aujourd'hui un tel script , si quelqu'un avait deja vu ce genre de chose.


merci pour le tuto mais ce n'est pas vraiment ce que je recherche et merci pour l'info sur les javascript activé.

cordialement

didier
Modifié par didier17 (03 Oct 2007 - 06:01)
merci pour le lien

j'ai pu faire quelques tests notemment sur un script de l'auteur

pourriez vous me dire comment faire un lien html sur le texte ou sur les images ?

voici le code Smiley sweatdrop


<script type="text/javascript">
// ========================================================
//            ====== Javascript Slideshow ======
// script written by Gerard Ferrandez - December 31, 2006
//  http://www.dhteumeuleu.com/
 
// ========================================================

var diap = {
	/////////////////////////////////
	BR : 3,     // border size in px
	ZR : .75,   // zoom ratio
	SP : .1,    // speed
	/////////////////////////////////
	V : false,
	S : false,
	G : true,

	resize : function () {
		/* ==== window resize event ==== */
		diap.nw = diap.scr.offsetWidth;
		diap.nh = diap.scr.offsetHeight;
		diap.nwu = (diap.nw * diap.ZR);
		diap.nhu = (diap.nh * diap.ZR);
		diap.nwt = Math.floor((diap.nw * (1 - diap.ZR) * .5) / (diap.NX - 1)) - diap.BR;
		diap.nht = Math.floor((diap.nh * (1 - diap.ZR) * .5) / (diap.NY - 1)) - diap.BR;
		diap.rc  = 255 / ((diap.nw / diap.NX) - diap.nwt);
		if (diap.N) {
			diap.setPosition();
			if (!diap.G) diap.delLabels();
		}
	},

	setPosition : function () {
		/* ==== calculate image target position  ==== */
		var k = 0;
		var y = this.S ? this.BR + Math.floor((this.NY - this.Y - 1) * (this.nht + this.BR)) : 0;
		for (var j = 0; j < this.NY; j++) {
			var x = this.S ? this.BR + Math.floor((this.NX - this.X - 1) * (this.nwt + this.BR)) : 0;
			for (var i = 0; i < this.NX; i++) {
				var o = this.spa[k++];
				o.y1 = y;
				o.x1 = x;
				o.w1 = this.S ? (o == this.S ? this.nwu - this.BR : this.nwt) : Math.ceil(this.nw / this.NX) - this.BR;
				o.h1 = this.S ? (o == this.S ? this.nhu - this.BR : this.nht) : Math.ceil(this.nh / this.NY) - this.BR;
				x += this.S ? ((this.X == i) ? this.nwu : this.nwt + this.BR) : Math.ceil(this.nw / this.NX);
			}
			y += this.S ? ((this.Y == j) ? this.nhu : this.nht + this.BR) : Math.ceil(this.nh / this.NY);
		}
	},

	delLabels : function () {
		/* ==== remove texts ==== */
		for ( var i = 0; i < diap.N; i++) {
			var o = diap.spa[i];
			if (o.T) diap.scr.removeChild(o.T);
			o.T = false;
		}
	},

	run : function () {
		/* ==== main loop ==== */
		for ( var i = 0; i < diap.N; i++) diap.spa[i].move();
		setTimeout(diap.run, 16);
	},

	init : function (container, NX, NY, path, images) {
		/* ==== initialize script ==== */
		this.scr = id(container);
		if (!this.scr || NX * NY != images.length) { alert('ID-10-T error...'); return false; }
		this.NX = NX;
		this.NY = NY;
		this.spa = {};
		this.resize();
		var k = 0;
		for (var y = 0; y < this.NY; y++) {
			for (var x = 0; x < this.NX; x++) {
				/* ==== create HTML elements ==== */
				var s = this.spa[k] = document.createElement('div');
				s.img = document.createElement('img');

				/* ==== opacity optimized function ==== */
				s.img.setOpacity = function (alpha) {
					if (alpha < 0) alpha = 0; else if (alpha > 100) alpha = 100;
					if (alpha == 100) {
						/* ==== speed opt - remove IE filter ==== */
						this.style.visibility = 'visible';
						this.style.filter = '';
						this.style.opacity = 1;
						return 100;
					} else if (alpha == 0) {
						/* ==== hide image, remove opacity ==== */
						this.style.visibility = 'hidden';
						this.style.filter = '';
						this.style.opacity = 0;
						return 0;
					}
					if (this.filters) {
						/* ==== IE filter ==== */
						if (!this.filters.alpha) this.style.filter = 'alpha(opacity=' + alpha + ')';
						else this.filters.alpha.opacity = alpha;
					/* ==== CSS opacity ==== */
					} else this.style.opacity = alpha * .01;
					return alpha;
				}
				s.img.src = id('loading').src;
				s.appendChild(s.img);
				this.scr.appendChild(s);

				/* ==== pre-load image ==== */
				s.pre = new Image();
				s.pre.obj = s;
				s.pre.onload = function() { this.obj.img.src = this.src; }
				s.pre.src = path + images[k][0];

				/* ==== set image variables ==== */
				s.x  = x;
				s.y  = y;
				s.x0 = x * (this.nw / this.NX) + (this.nw / this.NX) / 2;
				s.y0 = y * (this.nh / this.NY) + (this.nh / this.NY) / 2;;
				s.x1 = x * (this.nw / this.NX);
				s.y1 = y * (this.nh / this.NY);
				s.w0 = 0;
				s.h0 = 0;
				s.w1 = 0;
				s.h1 = 0;
				s.V  = 0;
				s.t  = images[k][1];
				s.T  = false;

				/* ==== function move image ==== */
				s.move = function() {
					/* ==== position images ==== */
					this.style.left   = px(this.x0 += (this.x1 - this.x0) * diap.SP);
					this.style.top    = px(this.y0 += (this.y1 - this.y0) * diap.SP);
					this.style.width  = px(this.w0 += (this.w1 - this.w0) * diap.SP);
					this.style.height = px(this.h0 += (this.h1 - this.h0) * diap.SP);
					if (this != diap.S) {
						/* ==== set image background color ==== */
						if (Math.abs(this.w1 - this.w0) > 1) {
							var c = (!diap.G && this.V > 0) ? 255 : 16 + Math.round(255 - diap.rc * (this.w0 - diap.nwt));
							this.style.background = 'RGB('.concat(c, ',', c, ',', c, ')');
						}
						if (this == diap.V) {
							/* ==== on mouseover: fade in ==== */
							if (this.V < 100) this.img.setOpacity(this.V += 5);
						} else {
							/* ==== fade out ==== */
							if (this.V >= 0 && diap.G != this) this.img.setOpacity(this.V -= 2);
						}
					}
					/* ==== text effect ==== */
					if (this.T) this.dispLabel();
				}

				/* ==== display text function (typewriter FX) ==== */
				s.dispLabel = function() {
					if (diap.G || diap.S == this) {
						/* ==== zoomed image ==== */
						this.T.style.left  = px(this.x0);
						this.T.style.top   = px(this.y0);
						this.T.style.width = px(this.w0);
					} else {
						/* ==== calculate text position ==== */
						var xt = diap.S.x0 + this.w0 + diap.BR;
						if (this.y == diap.Y) {
							this.T.style.top = px(this.y0 - this.f - diap.BR);
							if (this.y == 0) var xt = diap.S.x0;
						} else this.T.style.top = px(this.y0 - (this.y <= diap.Y ? diap.BR : 0));
						if (this.x > diap.X) this.T.style.left = px(diap.S.w0 + diap.S.x0 - diap.nwu * .5);
						else this.T.style.left = px(xt);
						if (this != diap.V) {
							/* ==== text type out ==== */
							this.Tp--;
							this.T.innerHTML = this.t.substring(0, this.Tp);
							if (this.Tp < 1) {
								diap.scr.removeChild(this.T);
								this.T = false;
							}
						} else {
							if (this.Tp < this.t.length) {
								/* ==== text type in ==== */
								this.Tp++;
								this.T.innerHTML = this.t.substring(0, this.Tp);
							}
						}
					}
				}

				/* ==== create text function ==== */
				s.createLabel = function () {
					this.T = document.createElement('div');
					this.T.className = 'label';
					if (!diap.G && this.x > diap.X) this.T.style.textAlign = 'right';
					this.f = 4 + Math.round(Math.sqrt(diap.nht * 2));
					if(this == diap.S) {
						this.f *= 2;
						this.T.style.background = 'none';
						this.T.style.textAlign = 'center';
					}
					this.T.style.fontSize = ''.concat(this.f, 'px');
					this.T.innerHTML   = this.t;
					this.T.style.left = px(-1000);
					this.T.style.width = px(diap.nwu * .5);
					this.T.style.height = px(this.f + 3);
					this.Tp = 0;
					diap.scr.appendChild(this.T);
				}

				/* ==== on mouse over event ==== */
				s.onmouseover = function() {
					if (diap.S != this && diap.G != this) {
						/* ==== display image ==== */
						this.img.setOpacity(100);
						this.V = this.img.setOpacity(20);
					}
					/* ==== create text ==== */
					if (!this.T) this.createLabel();
					diap.V = this;
				}

				/* ==== on click event ==== */
				s.onclick = function() {
					/* ==== memorize selected image ==== */
					diap.X = this.x;
					diap.Y = this.y;
					diap.V = false;
					diap.G = false;
					this.V = this.img.setOpacity(100);
					diap.delLabels();
					if (diap.S == this) {
						/* ==== zoom out - grid mode on ==== */
						diap.S = false;
						diap.G = this;
						for (var i = 0; i < diap.N; i++) diap.spa[i].createLabel();
					} else {
						/* ==== zoom in ==== */
						diap.S = this;
						this.createLabel();
					}
					diap.setPosition();
				}
				s.createLabel();
				s.ondblclick = s.onclick;
				s.ondrag = function () { return false; }
				k++;
			}
		}
		this.N = NX * NY;
		/* ==== add resize event ==== */
		this.resize();
		addEvent(window, 'resize', diap.resize);
		/* ==== start main loop ==== */
		this.run();
	}
}

/* ==== create diaporama ==== */
onload = function () {
	/* ==== container, X, T, path, [image.src, text] ==== */
	diap.init("screen", 4, 4, "", [
		["or8.jpg", "Historique " ],
		["or46.jpg", "Présentation"],
		["or10.jpg", "as cute as she could be"],
		["or4.jpg", "It was a night of full moon"],
		["or16.jpg", "It didn't take him anytime to fall in love"],
		["or9.jpg", "He had been certain of his success"],
		["or6.jpg", "In a few days after"],
		["or27.jpg", "All the tools were in place"],
		["or14.jpg", "The girl left a note..."],
		["or30.jpg", "...saying she had left home"],
		["or1.jpg", "“So what’s with the panic?”"],
		["or2.jpg", "Tears for fears"],
		["or12.jpg", "A light in the dark"],
		["or44.jpg", "Flashes of pain and hope"],
		["or39.jpg", "If only we could capture..."],
		["or33.jpg", "...the beauty of autumn"]
	]);
}
</script>




merci cordialement


didier
[/i][/i][/i]
Modifié par didier17 (03 Oct 2007 - 18:42)
Didier, il faudrait éditer ton message et mettre ton code dans les balises prévues à cet effet [ code][ /code] Smiley cligne
Ensuite, mets ton essai en ligne ce sera plus parlant, a priori un lien se fait avec la balise appropriée :
<a href=""> lien</a>

Si tu mets le lien sur une image :
<a href=""> lien <img src="" alt="" title=""></img></a>
Modérateur
Re,

Vu que les images et le texte semblent être générés via JS, le lien sera certainement créé en JS. Du coup, je t'invite à regarder ce tuto... Smiley smile

Ca t'aidera à y voir plus clair dans le code que tu présentes et ça te donnera quelques pistes pour générer ton lien.

6l20 a écrit :
Didier, il faudrait éditer ton message et mettre ton code dans les balises prévues à cet effet [ code][ /code] Smiley cligne
+1 Smiley cligne

Je t'invite d'ailleurs à relire les règles 5 et 13... et pourquoi pas les autres, par la même occasion ; ça nous évite de faire la police. Merci d'avance. Smiley jap
bonsoir ca avance un peu...

j'ai intégrer le script dans une iframe et j'ai pu faire des liens

maintenant j'aimerais cliquer sur une image et qu'une nouvelle page s'ouvre mais pas dans une nouvelle fenetre de navigateur.

ca reviendrait à recharger une autre page.

</style>

<!-- images_loading_bar -->
<link href="library/images_loading_bar.css" rel="stylesheet" type="text/css">

<script type="text/javascript">
// ================================================
// script: Gerard Ferrandez - Ge-1-doot - APRIL 2K4
//  http://www.dhteumeuleu.com
 
// ================================================

var m = {
	Z   : 100,
	xm  : 0,
	xmm : .25,
	ymm : 0,
	ym  : 0,
	mx  : 0,
	nx  : 0,
	ny  : 0,
	nw  : 0,
	nh  : 0,
	xR  : 0,
	nI  : 0,
	scr : 0,
	img : 0,

	run : function () {
		m.xm += (m.xmm - m.xm) * .1;
		if (m.ym < m.nw * .25) m.ym++;
		m.xR += m.xm;
		for (var i = 0; i < m.nI; i++){
			var A = (i * 360 / m.nI) + m.xR;
			var x = Math.cos(A * (Math.PI / 180));
			var y = Math.sin(A * (Math.PI / 180));
			var o = m.img[i];
			o.style.width  = ''.concat(Math.round(Math.abs(y * m.ym) + y * m.Z), 'px');
			o.style.left   = ''.concat(Math.round((m.nw * .5) + x * ((m.nw * .5) - (m.nw * .05)) - ((Math.abs(y * m.ym) + y * m.Z) * .5)), 'px');
			o.style.height = ''.concat(Math.round(m.ym + y * m.Z), 'px');
			o.style.top    = ''.concat(Math.round((m.nh * .5) - (m.ym * .5) - y * (m.Z * .5) - (m.ymm * y)), 'px');
			o.style.zIndex = 1000 + Math.round(y);
			m.setOpacity(o, (y * 50) + 100);
		}
		setTimeout(m.run, 16);
	},

	resize : function () {
		m.nx  = m.scr.offsetLeft;
		m.ny  = m.scr.offsetTop;
		m.nw  = m.scr.offsetWidth;
		m.nh  = m.scr.offsetHeight;
	},

	mousemove : function (e) {
		if (window.event) e = window.event;
		m.xmm = (m.nx + (m.nw * .5) - (e.x || e.clientX)) / (m.nw * .25);
		m.ymm = (m.ny + (m.nh * .5) - (e.y || e.clientY)) / (m.nh * .005);
	},

	setOpacity : function (obj, o) {
		if (o < 0) o = 0; else if (o > 100) o = 100;
		if (obj.filters) obj.filters.alpha.opacity = o;
		else obj.style.opacity = o / 100;
	},

	init : function () {
		m.scr = document.getElementById("screen");
		m.img = m.scr.getElementsByTagName("img");
		m.nI  = m.img.length;
		window.onresize = m.resize;
		window.document.onmousemove = m.mousemove;
		m.resize();
		m.ym = m.Z;
		m.run();
	}
}

onload = function() {
	m.init();
}

</head>


<body>
<div id="screen">
	

	<a href="http://www.dhteumeuleu.com/"></a><img alt="" src="dune.jpg"></a>

	<a href="http://www.dhteumeuleu.com/"></a><img alt="" src="6.jpg"></a>

	<a href="http://www.dhteumeuleu.com/"></a><img alt="" src="ciel47b.jpg"></a>
    </div>


bien a vous

didier[/i]
Modifié par didier17 (03 Oct 2007 - 23:05)
bonsoir

je pense avoir résolu le probleme en mettant des liens relatifs et en mettent le script dans une iframe.

j'ai rajouté un retour au sous menu pour boucler la boucle.

Par contre quand je fais un href les cadres qui entourent mes photos deviennent violets et ne sont plus transparent !!!

si quelqu'un a la solution

cordialement

<body>
<div id="screen">
	<a href="menu1.html" target="eyery" title="rechercher sur le web"><img alt="bonjour" src="2.jpg"></a>

	<a href="lien2.html"><img alt="" src="ciel19a.jpg"></a>

	<a href="../menu1.html"><img alt="" src="ciel43a.jpg"></a>

	<a href="menu1.html"><img alt="" src="dune.jpg"></a>
	<a href="http://www.dhteumeuleu.com/"><img alt="" src="6.jpg"></a>

	<a href="http://www.dhteumeuleu.com/"><img alt="" src="ciel47b.jpg"></a></div>

Modifié par didier17 (04 Oct 2007 - 01:22)
bonjour

je viens vous embeter encore, je voudrais savoir quelles autres possibilités ils existent ,pour faire fonctionner des liens avec le script que j'ai posté ci dessus car apperement les liens provoque sur mes images des cadres violet autour et je voudrais que ca soit transparent.



cordialement

didier
Modifié par didier17 (04 Oct 2007 - 13:06)
didier17 a écrit :
car apperement les liens provoque sur mes images des cadres violet autour et je voudrais que ca soit transparent

Eh oui, quand on fait des copier-coller de scripts et autres bouts de code sans avoir le début des bases (de HTML, CSS et Javascript), on a de petites surprises dans ce genre, ou bien carrément de grandes surprises (ça ne marche pas du tout).

Peut-être y a-t-il ici un petit problème de méthode?

Je rappelle très rapidement que pour réaliser un site web alors qu'on a peu ou pas de connaissances en la matière, on peut (au choix):
- apprendre (note: l'apprentissage est relativement conséquent);
- faire faire par un professionnel;
- faire soi-même mais revoir ses ambitions à la baisse (afin de ne pas avoir à faire un apprentissage très important);
- utiliser des applications déjà existantes et prêtes à l'emploi (hébergeurs de blogs, par exemple...).

Pour revenir au sujet, les bordures autour des images dans les liens sont dues aux styles par défaut de certains navigateurs. Cela s'annule très simplement dans la feuille de styles de la manière suivante:
a img {border: none;}


Bonne continuation. Smiley smile