Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074

    [JQuery] da fade a slide

    Un help al volo (se possibile...)
    Ho una funzione che mostra una serie di div.
    Il passaggio avviene in due modi differenti: cliccando su prev / next, avviene uno slide orizzontale, con un effetto easing; cliccando sui link relativi a ciascun div, c'è un effetto fade che crea una dissolvenza incrociata.
    Questo è il codice (per la parte che crea la transizione):
    Codice PHP:
    function animate(dir,clicked){    
                
    true;    
                switch(
    dir){
                    case 
    'next':
                        
    t+1;
                        
    = (-(t*w-w));
                        
    current(t);
                        if(
    o.autoHeight){autoHeight(t);}
                        if(
    s<3){
                            if (
    t===3){$(o.slides,obj).children(':eq(0)').css({left:(s*w)});}
                            if (
    t===2){$(o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:(w)});}
                        }
                        $(
    o.slides,obj).animate({leftm}, o.slidespeed,function(){
                            if (
    t===s+1) {
                                
    1;
                                $(
    o.slides,obj).css({left:0},function(){$(o.slides,obj).animate({left:m})});                            
                                $(
    o.slides,obj).children(':eq(0)').css({left0});
                                $(
    o.slides,obj).children(':eq('+(s-1)+')').css({ position:'absolute',left:-w});                
                            }
                            if (
    t===s) $(o.slides,obj).children(':eq(0)').css({left:(s*w)});
                            if (
    t===s-1) $(o.slides,obj).children(':eq('+(s-1)+')').css({left:s*w-w});
                            
    false;
                        });                    
                        break; 
                    case 
    'prev':
                        
    t-1;
                        
    = (-(t*w-w));
                        
    current(t);
                        if(
    o.autoHeight){autoHeight(t);}
                        if (
    s<3){
                            if(
    t===0){$(o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:(-w)});}
                            if(
    t===1){$(o.slides,obj).children(':eq(0)').css({position:'absolute',left:0});}
                        }
                        $(
    o.slides,obj).animate({leftm}, o.slidespeed,function(){
                            if (
    t===0) {
                                
    s;
                                $(
    o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:(s*w-w)});
                                $(
    o.slides,obj).css({left: -(s*w-w)});
                                $(
    o.slides,obj).children(':eq(0)').css({left:(s*w)});
                            }
                            if (
    t===) $(o.slides,obj).children(':eq(0)').css({position:'absolute',left:0});
                            if (
    t===1) $(o.slides,obj).children(':eq('+ (s-1) +')').css({position:'absolute',left:-w});
                            
    false;
                        });
                        break;
                    case 
    'fade':
                        
    = [t]*1;
                        
    = (-(t*w-w));
                        
    current(t);
                        if(
    o.autoHeight){autoHeight(t);}
                        $(
    o.slides,obj).children().fadeOut(o.fadespeed, function(){
                            $(
    o.slides,obj).css({leftm});
                            $(
    o.slides,obj).children(':eq('+(s-1)+')').css({left:s*w-w});
                            $(
    o.slides,obj).children(':eq(0)').css({left:0});
                            if(
    t===s){$(o.slides,obj).children(':eq(0)').css({left:(s*w)});}
                            if(
    t===1){$(o.slides,obj).children(':eq('+(s-1)+')').css({ position:'absolute',left:-w});}
                            $(
    o.slides,obj).children().fadeIn(o.fadespeed);
                            
    false;
                        });
                        break; 
                    default:
                        break;
                    }                    
                };
            });
        }; 
    Quello che vorrei è che ci fosse un effetto slide con easing, anche quando vengono cliccati i singoli link, invece che l'effetto fade.
    Ho provato a modificare il JS così:
    Codice PHP:
                    case 'fade':
                        
    = [t]*1;
                        
    = (-(t*w-w));
                        
    current(t);
                        if(
    o.autoHeight){autoHeight(t);}
                        $(
    o.slides,obj).animate({leftm}, o.slidespeed,function(){
                            if (
    t===0) {
                                
    s;
                                $(
    o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:(s*w-w)});
                                $(
    o.slides,obj).css({left: -(s*w-w)});
                                $(
    o.slides,obj).children(':eq(0)').css({left:(s*w)});
                            }
                            
    false;
                        });
                        break; 
    e funziona, ma con un problema: cliccando sull'ultimo link non appare nulla.
    Dove sbaglio (e come correggere)?
    metatad
    graphic & web design

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    UP?
    metatad
    graphic & web design

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    residenza
    Napoli, Italia
    Messaggi
    1,074
    Sono riuscito a fare un passo (un passetto...) avanti.
    Con questo codice:
    Codice PHP:
    case 'fade':
    = [t]*1;
    = (-(t*w-w));
    current(t);
    if(
    o.autoHeight){autoHeight(t);}
    if (
    s<3){
    if (
    t===3){$(o.slides,obj).children(':eq(0)').css({left:(s*w)});}
    if (
    t===2){$(o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:(w)});}
    if(
    t===0){$(o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:(-w)});}
    if(
    t===1){$(o.slides,obj).children(':eq(0)').css({position:'absolute',left:0});}
    }
    $(
    o.slides,obj).animate({leftm}, o.slidespeed,function(){
    if (
    t===s+1) {
    1;
    $(
    o.slides,obj).css({left:0},function(){$(o.slides,obj).animate({left:m})});                            
    $(
    o.slides,obj).children(':eq(0)').css({left0});
    $(
    o.slides,obj).children(':eq('+(s-1)+')').css({ position:'absolute',left:-w});                
    }
    if (
    t===0) {
    s;
    $(
    o.slides,obj).children(':eq('+(s-1)+')').css({position:'absolute',left:(s*w-w)});
    $(
    o.slides,obj).css({left: -(s*w-w)});
    $(
    o.slides,obj).children(':eq(0)').css({left:(s*w)});
    }
    if (
    t===s) $(o.slides,obj).children(':eq(0)').css({left:(s*w)});
    if (
    t===s-1) $(o.slides,obj).children(':eq('+(s-1)+')').css({left:s*w-w});
    if (
    t===) $(o.slides,obj).children(':eq(0)').css({position:'absolute',left:0});
    if (
    t===1) $(o.slides,obj).children(':eq('+ (s-1) +')').css({position:'absolute',left:-w});
    false;
    });
    break; 
    cliccando sulle singole icone riesco a far apparire, con l'effetto slide, sia l'ultimo div che il primo (finora, appariva solo inizialmente, essendo quello mostrato di default, ma una volta che ci si spostava su un altro, cliccando sull'icona relativa non riappariva).
    Ma solo se cerco di arrivarci dalla posizione immediatamente adiacente!
    In pratica, lo slide prevede 9 div diversi. Adesso, posso vedere il nono solo se clicco sulla relativa icona mentre è visibile l'ottavo, ed il primo solo se clicco quando si vede il secondo...
    Ma se un utente clicca senza seguire quest'ordine, non funzia!
    Un help, please!...
    metatad
    graphic & web design

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.