2010-04-07 5 views
11

Ich versuche herauszufinden, wie ein div (#tips) angezeigt wird, wenn der Benutzer in das 2. Viertel seiner div-Höhe scrollt (# wrap) und dann verschwinden, wenn der Benutzer in das letzte Quartal scrollt. So würde es so aussehen:Verwenden Sie jQuery, um ein div nur anzuzeigen, wenn die Bildlaufposition zwischen 2 Punkten liegt

1. Quartal - #Tips versteckt
2. Quartal - #Tips sichtbar
3. Quartal - #Tips sichtbar
4. Quartal - #Tips ist
versteckt

ich bin fast völlig neu zu jQuery, aber was ich bisher habe, ist dies:

function addKeyboardNavigation(){ 
// get the height of #wrap 
var $wrapHeight = $('#wrap').outerHeight() 
// get 1/4 of wrapHeight 
var $quarterwrapHeight = ($wrapHeight)/4 
// get 3/4 of wrapHeight 
var $threequarterswrapHeight = 3*($wrapHeight) 
// check if we're over a quarter down the page 
if($(window).scrollTop() > $quarterwrapHeight){ 
    // if we are show keyboardTips 
    $("#tips").fadeIn("slow"); 
} 
} 

Dies ist, wo ich verwirrt. Wie kann ich prüfen, ob die Scroll-Position> $ viertelwrackHöhe ist, aber < $ dreiviertelwundeHöhe?

Um es ich habe machen laufen mit: würde

// Run addKeyboardNavigation on scroll 
$(window).scroll(function(){ 
addKeyboardNavigation(); 
}); 

Jede Hilfe oder Anregungen sehr dankbar!

Danke.

Antwort

29

Hallo ich demo here geschrieben ... das einzige Problem ist, wenn Ihr #wrap div nicht groß genug ist, die oberen Rand des Fensters erhalten nie die 3/4 Höhe, damit der Tooltip nicht ausgeblendet wird. Hier ist der Code:

$(document).ready(function(){ 
$(window).scroll(function(){ 
    // get the height of #wrap 
    var h = $('#wrap').height(); 
    var y = $(window).scrollTop(); 
    if(y > (h*.25) && y < (h*.75)){ 
    // if we are show keyboardTips 
    $("#tips").fadeIn("slow"); 
    } else { 
    $('#tips').fadeOut('slow'); 
    } 
}); 
}) 

I verwendet height() aber outerHeight() können ... Ich habe vergessen, es in der Demo zu ändern, weil ursprünglich ich die body anstelle des #wrap verwenden.

Ein weiteres Problem wäre, wenn die #wrap nicht oben auf der Seite befindet. Wenn es weiter unten ist, dann werden Sie subtrahieren, um es Position ist auf der Seite der scrollTop:

var y = $(window).scrollTop() - $('#wrap').position().top; 
+2

Fantastisch, das funktioniert super. #wrap ist handlich so groß wie der Körper (damit man eine Fußleiste bekommt), also ist das kein Problem. Vielen Dank! – Rik

+1

Großartige Probe, aber es funktioniert nicht auf dem iPad. – Martin

+0

Nice one arbeitet für mich in android 10-Zoll-Tab ... – Aravin

1

Wie wäre:

if(($(window).scrollTop() > $quarterwrapHeight) && ($(window).scrollTop() < $threequarterswrapHeight)){ 
    $("#tips").fadeIn("slow"); 
} else { 
    $("#tips").fadeOut("slow"); 
} 
+0

Vielen Dank für die schnelle Antwort, vielleicht muss ich allerdings klarer. Ich möchte, dass sich das # tips div selbst versteckt, wenn sich die Bildlaufposition des Benutzers im ersten und vierten Viertel der Höhe des #wrap div befindet. – Rik

+0

Ein else nach der if-Anweisung mit einem fadeOut? Meine Antwort wurde aktualisiert. – zaf

+0

Aye, das habe ich auch versucht, aber es hat nicht funktioniert. Die Antwort unten funktioniert, aber ich bin mir nicht sicher, dass es viel anders ist. Ungerade. Danke trotzdem. – Rik

Verwandte Themen