En el efecto al que nos referimos, las ventanas abiertas están posicionadas una debajo de la otra, y sólo una porción de las mismas es visible. Sólo la que está por delante de la pila es la que resulta totalmente visible. El hacer clic sobre cualquiera de esas ventanas ocasiona, mediante un agradable efecto, que la ventana cliqueada se posicione en la parte superior de la pila y la ventana que ha dejado de ser activa se sitúe ahora al final de la misma.
Haz clic en este enlace para ver una demostración del efecto>>
En el caso de nuestras "ventanas", no son más que una lista desordenada de elementos li, cuyo contenido es propio.
var itemWidth = $("#container li").width();
var itemPosition = itemWidth * 50 / 100;
var itemMove = itemWidth * 60 / 100;
$("#container li").each(function(i) {
$(this).attr("id", i).css("z-index", 100 - i).css("left", itemPosition * i);
});
$("#container li").click(function(e) {
// Get id's of the current window and the one that user clicked on
var currentID = parseInt($(".current").attr("id"));
var clickedID = parseInt($(this).attr("id"));
if (currentID != clickedID) {
if (clickedID> currentID) {
// slide windows to the left
}
else {
// slide windows to the right
}
}
});
var i = 1;
var total = $("#container li").length;
for (j = clickedID + 1; j <= total; j = j + 1) { $("#" + j).animate({ "left": "+=" + itemMove * i + "px" }, 500); $("#" + j).animate({ "left": "-=" + itemMove * i + "px" }, 300); $("#" + j).css("z-index", currentZ - i); i = i + 1; }
Para el otro lado, es similar aunque más costoso.
var i = 1;
var total = clickedID - currentID + 1;
for (j = clickedID - 1; j>= 0; j = j - 1) {
$("#" + j).animate({ "left": "-=" + itemMove * (i) + "px" }, 500);
$("#" + j).animate({ "left": "+=" + itemMove * (i) + "px" }, 300);
i = i + 1;
}
var i = 1;
setTimeout(function() {
for (j = clickedID - 1; j>= 0; j = j - 1) {
$("#" + j).css("z-index", total - i);
i = i + 1;
}
}, 500);
var currentZ = 99;
var current = $(this);
setTimeout(function() { $(".current").removeClass("current"); current.css("z-index", currentZ).addClass("current"); }, 500);
[/javascipt]
Finalmente, agregamos unas líneas para que el deslizamiento no ocurra cuando se cliquea un enlace que contiene esa ventana:
[javascript]
if (currentID != clickedID) {
e.preventDefault();
Haz clic en este enlace para ver una demostración del efecto>>
Esperamos que te sea de mucha utilidad.
Fuente original del artículo: Janko at Warp Speed
Traducción realizada por elWebmaster.com
0 comentarios to "jQuery: Crea un seleccionador de ventana activa al estilo Opera Mobile"
Publicar un comentario