
Panel gallery nos ofrece una opción muy agradable para presentar nuestras imágenes. No se si cuanto a diseño, pero si en cuanto a originalidad. Panel gallery nos permite crear una especia de galería mediante paneles, al estilo de miniaturas. Salvo que con ella en vez de dar un click sobre una imagen y mostrarla a una resolución mayor, navegaremos sobre cada panel con nuestro Mouse, deslizándonos de un lado a otro de la imagen y visualizando parte por parte de la misma, hasta haber conseguido visualizarla por completo o bien, cada detalle. No recuerdo como se llama este tipo de efecto ni tampoco si me explico bien. Pero mirando el demo sin duda entenderán lo que acabo de explicar.
Ver demo - Descarga ejemplo
En nuestro encabezado agregamos el script
var xm = 0;
var ym = 0;
document.onmousemove = function(e){
if (window.event) e=window.event;
xm = e.clientX;
ym = e.clientY;
}
var panel = {
speed : .006,
t : 0,
O : [],
over : false,
run : function() {
panel.t += panel.speed;
for (var i = 0, o; o = panel.O[i]; i++)
o.anim(i + panel.t);
},
init : function(){
for (var i = 0, o; o = document.images[i]; i++){
if (o.className.indexOf('panel')>= 0) {
if(o.parentNode.href != undefined) {
var div = document.createElement("a");
div.href = o.parentNode.href;
} else {
var div = document.createElement("div");
}
div.className = 'panel';
var img = document.createElement("img");
img.src = o.src;
img.className = 'imgPanel';
o.parentNode.replaceChild(div,o);
div.appendChild(img);
div.ims = img.style;
div.iw = img.width;
div.ih = img.height;
div.cx = -div.iw / 2;
div.cy = -div.ih / 2;
div.anim = function(t) {
nw = this.offsetWidth;
nh = this.offsetHeight;
if (panel.over == this){
for (var nx = 0, ny = 0, o = this; o != null; o = o.offsetParent) nx += o.offsetLeft, ny += o.offsetTop;
var x = Math.max(-this.iw + nw, Math.min(0, (-(xm - nx) * (this.iw - nw)) / nw));
var y = Math.max(-this.ih + nh, Math.min(0, (-(ym - ny) * (this.ih - nh)) / nh));
if (Math.abs(xm-nx-nw * .5)> nw || Math.abs(ym-ny-nh * .5)> nw ) panel.over = false;
} else {
var mx = (this.iw - nw) * .5;
var my = (this.ih - nh) * .5;
var x = -mx * (1 + Math.cos(t * 1.2));
var y = -my * (1 + Math.sin(t));
}
this.cx += (x - this.cx) * .1;
this.cy += (y - this.cy) * .1;
this.ims.left = Math.round(this.cx) + 'px';
this.ims.top = Math.round(this.cy) + 'px';
}
div.onmouseover = function()
{
panel.over = this;
}
this.O.push(div);
}
}
setInterval(panel.run, 32);
}
}
onload = function ()
{
panel.init();
}
</script>
un poco de CSS
#screen {
position: absolute;
left: 22%;
top: 20%;
width: 60%;
height: 60%;
background: #fff;
overflow: hidden;
}
.panel {
position: relative;
float: left;
width: 21%;
height: 30%;
margin: 1%;
overflow: hidden;
}
.imgPanel {
position: absolute;
border: none;
text-decoration: none;
}
</style>
Por ultimo nuestra estructura
<img class="panel" src="images/fl01.jpg" alt="">
<img class="panel" src="images/slide110.jpg" alt="">
<img class="panel" src="images/fl01.jpg" alt="">
<img class="panel" src="images/fl01.jpg" alt="">
</div>

2 Comentarios por usuarios
gracias por los recursos,
Excelente gracias !!