2016-07-16 11 views
2

Ich habe Element Ich möchte eine feste Position machen, wenn es gescrollt wurde. Ich kann das gut, mein Problem ist, wie entferne ich die feste Position?Erstellen einer Konstante anstelle einer Variablen zum Verschieben von Positionen

Ich finde derzeit die Position, um das Element zu fixieren, wenn die Bildlaufleiste den oberen Rand des Elements erreicht hat. Das Problem ist, ich kann diese Nummer nicht mehr für den Offset-Anfang des Elements bekommen, da es jetzt fixiert ist, ändert sich die Zahl beim Scrollen. Also, wie kann ich das als Konstante halten, habe ich versucht mit const und var, aber Unterschied.

scroll = $(window).scrollTop(); 

function tb_fix() { 
    if($('#report_toolbar').length) { 
     const POS = $('#report_toolbar').offset().top; 
     if(scroll >= POS) { 
      $('#report_toolbar').addClass('fixed'); 
      $('#tb_spacer').show(); 
     } else if(scroll < POS && $('#report_toolbar').hasClass('fixed')) { 
      $('#report_toolbar').removeClass('fixed'); 
      $('#tb_spacer').hide(); 
     } 
    } 
} 

Antwort

2

Unterhalb Ihrer Symbolleiste haben Sie Ihren #tb_spacer. Dies ist immer noch ein statisches Element mit konstantem Offset. Versuchen Sie Folgendes:

function tb_fix() { 
    if($('#report_toolbar').length) { 
     pos = $('#report_toolbar').offset().top; 
     pos2 = $('#tb_spacer').offset().top; 
     if(scroll >= pos) { 
      $('#report_toolbar').addClass('fixed'); 
      $('#tb_spacer').show(); 
     } 
     if(scroll < pos2 && $('#report_toolbar').hasClass('fixed')) { 
      $('#report_toolbar').removeClass('fixed'); 
      $('#tb_spacer').hide(); 
     } 
    } 
} 
Verwandte Themen