Friday, July 27th, 2007 at 5:30 pm by zetta
Category: Javascript
Hace tiempo que hice un script con script.aculo.us y php para crear un SlideShow
Aqui puedes ver el Demo
Ademáas del framework de scriptaculous necesitamos este codigo
zetta.js
- if(!Array.prototype.push){
- Array.prototype.push = function(){
- var i;
- for(i=0; j=arguments[i]; i++) this[this.length] = j;
- return this.length;
- };
- };
- Effect.BlindRight = function(element) {
- element = $(element);
- element.makeClipping();
- return new Effect.Scale(element, 0,
- Object.extend({ scaleContent: true,
- scaleY: false,
- restoreAfterFinish: true,
- afterFinishInternal: function(effect) {
- effect.element.hide();
- effect.element.undoClipping();
- }
- }, arguments[1] || {})
- );
- };
- Effect.BlindLeft = function(element) {
- element = $(element);
- var elementDimensions = element.getDimensions();
- return new Effect.Scale(element, 100,
- Object.extend({ scaleContent: true,
- scaleY: false,
- scaleFrom: 0,
- scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
- restoreAfterFinish: true,
- afterSetup: function(effect) {
- effect.element.makeClipping();
- effect.element.setStyle({width: '0px'});
- effect.element.show();
- },
- afterFinishInternal: function(effect) {
- effect.element.undoClipping();
- }
- }, arguments[1] || {})
- );
- };
- Effect.Jump = function(element) {
- element = $(element);
- var oldStyle = {
- top: element.getStyle('top'),
- left: element.getStyle('left') };
- return new Effect.Move(element,
- { y: 20, x: 0, duration: 0.05, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { y: -40, x: 0, duration: 0.1, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { y: 40, x: 0, duration: 0.1, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { y: -40, x: 0, duration: 0.1, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { y: 40, x: 0, duration: 0.1, afterFinishInternal: function(effect) {
- new Effect.Move(effect.element,
- { y: -20, x: 0, duration: 0.05, afterFinishInternal: function(effect) {
- effect.element.undoPositioned();
- effect.element.setStyle(oldStyle);
- }}) }}) }}) }}) }}) }});
- };
- Object.extend(Element, {
- getWidth: function(element) {
- element = $(element);
- return element.offsetWidth;
- },
- setWidth: function(element,w) {
- element = $(element);
- element.style.width = w +"px";
- },
- setHeight: function(element,h) {
- element = $(element);
- element.style.height = h +"px";
- },
- setTop: function(element,t) {
- element = $(element);
- element.style.top = t +"px";
- },
- setSrc: function(element,src) {
- element = $(element);
- element.src = src;
- },
- setHref: function(element,href) {
- element = $(element);
- element.href = href;
- },
- setInnerHTML: function(element,content) {
- element = $(element);
- element.innerHTML = content;
- }
- });
- var zetta = {
- identifier : {},
- type : {},
- inplaced : Array(),
- load : function(){
- imagenes = document.getElementsByTagName('img');
- for (var a = 0; (elemento = imagenes[a]); a++) {
- if (elemento.className.match("transition")){
- var settings = elemento.className;
- elemento.setAttribute("settings",settings);
- elemento.className = null;
- dupNode = elemento.cloneNode(true);
- padre = elemento.parentNode;
- var tDiv = document.createElement("div");
- tDiv.appendChild(dupNode);
- padre.replaceChild(tDiv, elemento);
- tDiv.setAttribute("width",dupNode.getAttribute("width"));
- tDiv.setAttribute("height",dupNode.getAttribute("height"));
- tDiv.style.display = "inline";
- //alert(settings);
- //var time = settings.split("_");
- //time = time[4];
- setTimeout("zetta.transition('"+dupNode.id+"');",(( time = settings.split("_")[4] )*1000)+(a*132));
- }
- }
- },
- transition : function(target){
- to = document.getElementById(target);
- if(to == null)
- return false;
- target = ($(target));
- var u = 'transition/transition.php?target=' + target.id + "&url=" + target.src.replace('http://','') + "&settings=" + target.getAttribute("settings");
- uno = new Ajax.Request( u ,{ onComplete : function (){ eval(uno.transport.responseText); } })
- },
- _transition : function(element,img,effect,time){
- var daTime = time
- var daEffect = effect
- imgPreloader = new Image();
- imgPreloader.onload=function(){
- var ran = Math.round(3*Math.random());
- i = (daEffect == "jump") ? 0 :( (daEffect == "shake") ? 1 :( (daEffect == "pulsate") ? 2 :( (daEffect == "fade") ? 3 :( ran ) ) ) );
- switch (i){
- case 0:
- Effect.Jump(element);
- setTimeout("zetta._conditional('"+element+"',\"Element.setSrc('"+element+"', '"+img+"');\");",500);
- break;
- case 1:
- Effect.Shake(element);
- setTimeout("zetta._conditional('"+element+"',\"Element.setSrc('"+element+"', '"+img+"');\");",500);
- break;
- case 2:
- Effect.Pulsate(element, {duration : 1.0});
- setTimeout("zetta._conditional('"+element+"',\"Element.setSrc('"+element+"', '"+img+"');\");",1000);
- break;
- default:
- Effect.Fade(element);
- setTimeout("zetta._conditional('"+element+"',\"Element.setSrc('"+element+"', '"+img+"');\");",1200);
- setTimeout("zetta._conditional('"+element+"',\"Effect.Appear('"+element+"');\");",1215);
- }
- setTimeout("zetta._conditional('"+element+"',\"zetta.transition('"+element+"');\");",(time*1172));
- }
- imgPreloader.src = img;
- },
- _conditional : function(target,code){
- to = document.getElementById(target);
- if(to == null)
- return false;
- eval(code);
- }
- };
- window.onload = zetta.load;
y un php:
- function ext($file_name){
- }
- if($_GET['target'] and $_GET['settings'] and $_GET['url']){
- if ($archivo != "." && $archivo != ".." and ( ext($archivo) == "png" or ext($archivo) == "jpg" or ext($archivo) == "gif")) {
- }
- }
- }
- if($var[2] == "random"){
- }else{
- for($i=0; $i
- if($ims[$i] == $oldFile){
- $d = $ims[$i+1];
- break;
- }
- }
- }
- $img = "transition/{$var[1]}/{$d}";
- echo "zetta._transition('{$_GET['target']}','{$img}','{$var[3]}',{$var[4]})";
- }
- ?>
Para utilizar en tu header coloca esto
y para mandar llamar solo pon una imagen con clase (class) “transition_”
Ejemplo
- <img id="h1D7ugF5RL" class="transition_stewie_linear_random_2" src="transition/stewie/st1.jpg" alt="Demo Imagen" width="150" height="170" />
- class="transition_[folder]_[mode]_[effect]_[wait]"
- folder:String // folder donde estan las imagenes
- mode:String // modo de busqueda de las imagenes
- random
- linear
- effect:String // efecto al hacer la transicion
- jump
- shake
- pulsate
- fade
- random
- wait:Number //tiempo de espera entre los cambios en segundos
A mi se me hace que pesa mucho, pero espero pronto hacer una version mas ligera con mootols
Tags: Javascript
Loading...
Hermano!! Antes que nada una felicitacion por tu blog, super bonito ojala asi pueda dejar el mio algun dia jaja.
Oye pues aqui aparte de felicitarte invitarte a visitar el mio (que spammero me deje ver la neta) y decirte que cuando quieras nos vamos de peda hasta que el carro se apague y tengas que empujar
Abrazos
Orale!!! que bueno que ya lo liberaste bro, una pregunta cómo podría hacer que tuvieran links de “anterior” y “siguiente”? estaría chido x) por si deseas que sea el usuario que las cambie ó algo así.
Saludos.