2011-02-28 20 views
6

Sayfanın altında iyi çalışan bir iş parçacığı var. Kullanıcı sayfanın altına indiğinde, sayfada bir yerde "dur" yapmanın basit bir yolu olup olmadığını merak ediyorum. Kullanıcı, sayfada belirli bir yere kaydırıp sayfaya yapıştırmak ve içeriğin geri kalanı gibi kaydırmak yerine, altta sabit kalmasını istiyorum. Baska öneri?Belirtilen yerde durur sayfanın altındaki sabit div

+0

Chromium'un sayfalarında neler yapıldığını (belki de) değiştirmeyi kastediyor musunuz? (ör. http://code.google.com/p/chromium/issues/detail?id=75) Aşağı kaydırdığınızda görünür olan sol bölmeye dikkat edin. Şaka yapmıyorsam, biraz farklı olmak istersiniz ama umarım bu size yardımcı olur. – pimvdb

+0

Evet, kullanabileceğim bir şeye benziyor .. Ona bakacağım belki de ihtiyacım olan şekilde çalışabilirim. Cevap için teşekkürler! – Gatekeeper

cevap

9

Jsfiddle'a bir şey koymaya çalıştım. Yazarken, diğerlerinin alternatiflerini paylaştıklarını görüyorum. Madenin herhangi bir şekilde yardımcı olması durumunda: http://jsfiddle.net/PnUmM/1/

Konumu CSS'de göreceli olarak ayarlıyorum, bilgiyi bir arada tutmak için belge yükünde nerede olduğunu hesaplayın ve ardından sabit olarak ayarlayın.

var sticky_offset; 
$(document).ready(function() { 

    var original_position_offset = $('#sticky_for_a_while').offset(); 
    sticky_offset = original_position_offset.top; 
    $('#sticky_for_a_while').css('position', 'fixed'); 


}); 

$(window).scroll(function() { 
    var sticky_height = $('#sticky_for_a_while').outerHeight(); 
    var where_scroll = $(window).scrollTop(); 
    var window_height = $(window).height(); 


    if((where_scroll + window_height) > sticky_offset) { 
     $('#sticky_for_a_while').css('position', 'relative'); 
    } 

    if((where_scroll + window_height) < (sticky_offset + sticky_height)) { 
     $('#sticky_for_a_while').css('position', 'fixed'); 
    } 

}); 
+0

evet cevaplar burada çok hızlı bir şekilde geliyor :-) ama yine de her şeyi denediğim için çok teşekkür ederim. – Gatekeeper

+0

Tamam, bunu denemek için zaman buldum, bunu yeniden jju'yu kullanmam gerekti, çünkü jQuerry kullanamam çünkü ama şimdi çekicilik gibi çalışıyor. Teşekkürler. – Gatekeeper

+0

Merhaba, bu benim için de işe yarıyor .. Ancak, aşağıya doğru ilerlemek yerine, sayfayı aşağı kaydırırken ekranın üstüne yapıştırmam gerekiyor .. herhangi bir fikir? – Krunal

1

Aksini yapan bir eklenti var - bu web sayfasının akışında ve kullanıcı bu sayfayı geçtiğinde, görüntüye sabitleniyor. Aslında ne yaparsa elemanın css sınıfını uygular, böylece onu olduğu gibi kullanabilmelisiniz.

Burada eklenti bulabilirsiniz

: css ile

<div id="sometimesFixed">content</div> 

: https://github.com/hanssonlarsson/jquery-fixedscroll

O zaman web sayfanızın akışında sizin elemanı var öneririm

#sometimesFixed { 
    position: fixed; 
    bottom: 0; 
} 
#sometimesFixed.scroll { 
    position: static; 
} 

Ve eklentiyi şu şekilde uygulayın:

$('#sometimesFixed').fixedscroll({className: 'scroll'}); 

Ayrıca jQuery-waypoints olarak adlandırılan çok daha genel bir eklenti de vardır. Buradaki fikir, herhangi bir kodu "yol işaretleri" ne bağlamak, kullanıcı web sayfalarında ilerlediğinde, bazı kodlar yürütüldüğünde, web sayfasında işaret eder.

https://github.com/imakewebthings/jquery-waypoints

Muhtemelen daha optimize ve benim eklenti daha iyi bir uyum, ymmv oluyor!

+0

Güzel, ama korkarım ki bu sefer jquery kullanamıyorum, bunu projemizde kullanmıyoruz. Dojo veya saf js ile yapmanın bir yolunu bulmalıyım. Yinede teşekkürler! – Gatekeeper

2

Bunu sizin için yaptım: http://jsfiddle.net/XCYFG/1/.

$(document).ready(function() { 
    window._div1 = $('#div1'); //selector is expensive 
    window._window = $(window); 
    $(window).scroll(function(e) { 
     _div1.css("top", 
        Math.min(_window.height(), 
          window.scrollY + 100) 
        + _window.height() - _div1.height() - 110); 
    }).scroll(); 
}); 
+0

bu harika görünüyor, ama başka bir div pozisyonu ile kontrol edebilir miyim? Demek istediğim - "o" bölümünü görmek için aşağı kaydırdığımda, bunu kaydırmaya başlansın? Koddan kısaca, div başlığının kaydırılmasının piksel cinsinden tanımlandığı andan itibaren, her sayfada farklı bir içerik miktarına sahip olacağım, böylece her seferinde ayarlamam gerekecek ... ama ikinci düşüncede, bunun yerini alabilirim. js ile div ve değeri betiğinize eklemek daha doğru mu? – Gatekeeper

+0

Şuna bir göz atabilir misiniz: http://jsfiddle.net/XCYFG/2/? – pimvdb

+0

Bir yan notta, çözümlerim tüm CPU gücümü alıyor ... – pimvdb

İlgili konular