2011-02-05 8 views
12

Sto scherzando con un po 'di jquery cercando di fare i conti con esso.cambiando una posizione css degli elementi dopo aver scostato la pagina

Ho un browser che ha una posizione assoluta impostata, ma dopo aver fatto scorrere la pagina verso il basso di 200 pixel mi piacerebbe che per passare alla posizione fissa in modo che il navigatore rimanga sempre sulla pagina.

Come faccio?

sotto è l'esempio sto lavorando su

http://satbulsara.com/tests/

+0

perché non utilizzare di default il 'position: fixed'? – Sotiris

+0

Imposta la pozione su "fisso" anziché su "assoluto". – Neil

+0

ok ma vorrei che il nav scendesse fino a un punto e poi passassi a fisso dopo, come posso ottenere jquery per farlo? – sat

risposta

13

Grazie a tutti per essere così veloce per aiutare

Questo è quello che volevo

$(document).ready(function() { 
    var theLoc = $('ul').position().top; 
    $(window).scroll(function() { 
     if(theLoc >= $(window).scrollTop()) { 
      if($('ul').hasClass('fixed')) { 
       $('ul').removeClass('fixed'); 
      } 
     } else { 
      if(!$('ul').hasClass('fixed')) { 
       $('ul').addClass('fixed'); 
      } 
     } 
    }); 
}); 

ho presa da

http://www.defringe.com/

http://satbulsara.com/tests/

Thankss !! !!!

2

Ecco il codice che uso per creare una barra laterale "appiccicoso". Dovrai modificare gli ID per adattarli al tuo markup.

 
var sidebarScrollTop = 0; 

$(document).ready(function() { 
    sidebarScrollTop = $("#sidebar").offset(); 

    $(window).scroll(function() { 
     var docScrollTop = $('body,html').scrollTop(); 

     if(docScrollTop > sidebarScrollTop.top) { 
      $("#sidebar").css({ position: 'fixed', top: '0px' }); 
     } else { 
      $("#sidebar").css({ position: 'static' }); 
     } 
    }); 
}); 

$(window).resize(function() { 
    sidebarScrollTop = $("#sidebar").offset().top; 
}); 

$(document).resize(function() { 
    sidebarScrollTop = $("#sidebar").offset().top; 
}); 

In sostanza, tutto quello che dovete fare è cambiare la #sidebar per l'ID del contenitore barra laterale. Questo codice vedrà se l'elemento della barra laterale scorrerà oltre la parte superiore dello schermo. In caso affermativo, modifica la sua posizione su fixed e, quando ritorna alla pagina, la posizione viene restituita a static (impostazione predefinita).

Le funzioni $(document).resize() e $(window).resize() assicurano che la barra laterale rimanga attaccata nella parte superiore della pagina quando il documento/finestra viene ridimensionato rispettivamente. La funzione del documento assicurerà che la barra laterale funzioni correttamente anche se le animazioni jQuery cambiano la dimensione degli elementi.

+0

Grazie James questo è quasi quello che sto cercando, mi piacerebbe essere in grado di far scorrere un po 'il navigatore e poi farlo passare + questo sembra lampeggiare quando faccio scorrere su e giù – sat

+0

grazie james per avermi indicato nella parte destra modo, ma questo è quello che stavo cercando esattamente – sat

+0

@sat - Io lo uso su un sito che sto sviluppando e funziona bene. Se lampeggia, forse prova a inserire la barra laterale all'interno di un contenitore 'div'. – Bojangles

4

Ho scritto this jQuery plugin per fare proprio questo.

+0

Neat! Sicuramente vedrò di usarlo nei miei prossimi progetti, se posso :-) – Bojangles

Problemi correlati