2012-03-25 13 views
13

quindi sono molto nuovo su Javascript e Jquery. Quello che mi piacerebbe creare è una pagina a due colonne in cui i collegamenti sulla colonna di sinistra causano un div sulla destra da far scorrere in orizzontale da sinistra a destra, e sfogliano fuori vista quando si fa nuovamente clic. So che ho bisogno di usare l'effetto di slide slide ma ho problemi a implementarlo in modo che ogni singolo link causi un div diverso da far scorrere ... Ho provato a modificare alcuni jsfiddles che ho trovato tramite ricerche su google ma Sono piuttosto perso quando si tratta di javascript.Divisione scorrevole in orizzontale con JQuery

Finora questo è l'unico violino sono stato in grado di ottimizzare con successo ... http://jsfiddle.net/bridget_kilgallon/HAQyK/
ma quelli scorrere verticalmente, e caricare tutti i div quando si fa clic.

Ecco un violino che ho creato per la pagelayout mi piacerebbe senza javascript ... http://jsfiddle.net/bridget_kilgallon/NhanG/

Please help! :) -Bridget

risposta

34

Sfortunatamente non esiste un'animazione di diapositiva "orizzontale" pronta con jQuery. A meno che tu non vada con pacchetti più grandi come l'interfaccia utente di jQuery. Ma non penso che sia necessario.

L'unica cosa che si desidera è un uso creativo della funzione animate() in jQuery per ottenere un effetto.

Non sapevo che quello che si ci si vuole andare con in quanto la descrizione era vaga così ho fatto 2 esempi per gli effetti secondari a commutazione del pannello:

http://jsfiddle.net/sg3s/rs2QK/ - Questo pannello uno slide aperto da sinistra e per chiudere a destra

http://jsfiddle.net/sg3s/RZpbK/ - I pannelli si aprono da sinistra a destra e chiudono a sinistra prima di aprire quello nuovo.

Risorse:

Non si può fare questo con CSS puro, non ancora comunque. Il supporto per le transizioni è di base e limitato a quasi tutti i browser basati su webkit. Quindi, dal momento che avrai bisogno di jQuery, farne un uso intelligente, ma devi comunque assicurarti di avere lo stile il più possibile con css prima di usare JS. Nota che non uso alcun stile di visualizzazione/manipolazione nel mio JS.

+0

Il primo violino è giusto. Mi assicurerò di creare il mio css prima di aggiungere lo script come suggerito. Questo mi ha reso la vita molto più semplice, grazie mille! : D –

+0

Pensa a cosa vuoi fare e posiziona i tuoi elementi in css di conseguenza in modo che siano nella posizione ottimale per iniziare non appena necessario. – sg3s

+0

Ecco un ragno con quello che ho ottenuto finora css saggio: http://jsfiddle.net/bridget_kilgallon/sMDyB/4/ il violino funziona bene ma le transizioni non funzionano in dreamweaver .. Qualche idea? Grazie ancora -BK –

1

È possibile utilizzare il modulo effects dall'interfaccia utente di jQuery e utilizzare show('slide'). Look http://jsfiddle.net/HAQyK/1/

+0

Ecco un altro violino: http://jsfiddle.net/bridget_kilgallon/6eKGj/ Questo è quasi esattamente quello che sto cercando eccezione. .. 1. Tutte le div appaiono quando si fa clic sui collegamenti, come posso collegarmi a ogni singolo div? 2. C'è un modo per far scorrere il div in senso inverso quando il link viene cliccato una seconda volta? (Ad esempio, fa scorrere le diapositive click1 sullo schermo a sinistra su click2) –

2

Senza l'uso di JavaScript è possibile utilizzare le transizioni CSS, se disponibili. E mentre questi sono piuttosto impressionanti, non sono particolarmente grandi, per quanto ho ancora trovato, per l'animazione condizionale; possono fondamentalmente animare da un punto di partenza a un altro punto e quindi tornare (in base agli eventi del browser nativo disponibili nel browser stesso), con JS è possibile aggiungere/rimuovere classi aggiuntive e spostare gli elementi div sul contenuto del cuore, ma non con 'solo' CSS (anche se mi piacerebbe essere smentito su questo).

Il meglio che ho potuto venire con, finora, è:

#left { 
    float:left; 
    width:200px; 
} 
.right { 
    height: 0; 
    background-color: #fff; 
    margin-left: 205px; 
    overflow: hidden; 
    -webkit-transition: all 1s linear; 
    -ms-transition: all 1s linear; 
    -o-transition: all 1s linear; 
    -moz-transition: all 1s linear; 
    transition: all 1s linear; 
} 
.right:target { 
    display: block; 
    height: 5em; 
    background-color: #ffa; 
    -webkit-transition: all 1s linear; 
    -ms-transition: all 1s linear; 
    -o-transition: all 1s linear; 
    -moz-transition: all 1s linear; 
    transition: all 1s linear; 
}​ 

JS Fiddle demo.

E questo non scorre lateralmente (anche se lo si può fare se lo si desidera) perché non ha un bell'aspetto, dato il contenuto re-reflow che stava accadendo mentre la larghezza dell'elemento cambiava.


Redatta perché penso che forse ho mal interpretato una parte della domanda originale:

... mi piacerebbe senza JavaScript

Stando così le cose , e il commento (sotto) sembra suggerire che jQuery è un'opzione accettabile, potrebbe valere la pena di una dimostrazione:

​$('#left a').click(
    function(){ 
     var div = $('div').not('#left').eq($(this).index('#left a')); 
     var others = $('div[data-visible="true"]'); 
     others.each(
      function(){ 
       $(this).animate({ 
        'left' : '2000px' 
       },1000,function(){ 
        $(this).removeAttr('style data-visible'); 
       }); 
      }); 
     if (div.attr('data-visible')) { 
      div.animate({ 
       'left' : '2000px' 
      },1000,function(){ 
       $(this).removeAttr('style data-visible'); 
      }); 
     } 
     else { 
      div.animate({ 
       'left' : '210px' 
      },1000).attr('data-visible',true); 
     } 
    });​​​​​​​​ 

JS Fiddle demo.

Riferimenti:

+0

Molto bello, grazie per la risposta! Sono impressionato che non hai bisogno di uno script per farlo. So che è possibile utilizzare la funzione di animazione per modificare la larghezza del div per creare una diapositiva orizzontale, ma non mi fa impazzire anche per il contenuto che cambia larghezza (penso che sia il reflusso a cui ti riferisci). Non sono contrario all'utilizzo di jQuery per creare la diapositiva - Sono solo molto nuova ad essa. Per caso conosci uno script che creerà questo effetto? –

+0

Sì; Penso di aver frainteso cosa intendevi quando ho letto "Mi piacerebbe senza javascript". ... è stata una lunga giornata ... =/E non so di uno script preesistente (anche se ho il sospetto che ce ne siano molti), ma eccone uno che sembra funzionare. Se vedi la modifica, dopo il '


' =) –

+0

rad. questo è dolce! L'unico problema sarebbe quando si fa clic sullo stesso link per due volte in cui il div scorre completamente? –

0

Ecco il codice che si desidera. È dimostrato che funziona su IE, Safari, Chrome, Firefox, ecc.

Ecco la parte HTML.

<div id="slide-wrap" style="width:1000px; height:200px; overflow:hidden; padding:0 auto;"> 
     <div id="inner-wrap" style="float:left;"> 
      <!-- 'Put Inline contains here like below.' --> 
      <div class='containBox' style="width:250px; height:100%; float:left; display:inline-block;"></div> 
      <!-- ... --> 
      <div class='containBox' style="width:250px; height:100%; float:left; display:inline-block;"></div> 
      <!-- 'Put Inline contains here like above.' --> 
     </div> 
     <div style="display: block; width:40px; height:60px; position: absolute; margin-left:0px; margin-top:40px"> 
      <img id='scroll_L_Arrow' src='../assets/img/l-arrow.png' onclick="scrollThumb('Go_L')"/> 
     </div> 
     <div style="display: block; width:40px; height:60px; position: absolute; margin-left:960px; margin-top:40px"> 
      <img id='scroll_R_Arrow' src='../assets/img/r-arrow.png' onclick="scrollThumb('Go_R')"/> 
     </div> 
    </div> 

Ecco la parte jQuery nella funzione JavaScript.

 function scrollThumb(direction) { 
     if (direction=='Go_L') { 
      $('#slide-wrap').animate({ 
       scrollLeft: "-=" + 250 + "px" 
      }, function(){ 
       // createCookie('scrollPos', $('#slide-wrap').scrollLeft()); 
      }); 
     }else 
     if (direction=='Go_R') { 
      $('#slide-wrap').animate({ 
       scrollLeft: "+=" + 250 + "px" 
      }, function(){ 
       // createCookie('scrollPos', $('#slide-wrap').scrollLeft()); 
      }); 
     } 
     } 

Per nascondere le frecce, guardare qui. Detect end of horizontal scrolling div with jQuery

0
$(function() { 
$("#wizardV").steps({ 
    headerTag: "h2", 
    bodyTag: "section", 
    transitionEffect: "slideLeft", 
    stepsOrientation: "vertical" 
}); 
}); 

* // Wizard è un div contenente tutti i tuoi contenuti

Problemi correlati