2015-02-20 3 views
0

Я пытаюсь, вроде, эмулировать эффект here. По сути, во время прокрутки измените css (тень) и когда элемент вернется в исходное положение (удалите тень).после прокрутки, обнаруживает, когда элемент возвращается в исходное положение

Я могу обнаружить прокрутку, но не могу определить, как определить возврат к исходному состоянию без прокрутки.

HTML

<div id="container"> 
    <ul> 
     <li id="one">el</li><li>el</li><li>el</li><li>el</li><li>el</li><li>el</li><li>el</li><li>el</li><li>el</li><li>el</li><li>el</li><li>el</li><li>el</li> 
    </ul> 
</div> 

CSS

 html, body { 
     margin: 0; 
     padding: 0; 
     height: 100%; 
    } 
    #container { 
     height: 100px; 
     width: 500px; 
     border: 1px solid #000000; 
     overflow: scroll; 
    } 

JS (с JQuery)

var p = $('#one'); 
var position0 = p.position().top; 
$('#container').scroll(function() { 
    if (p.position().top != position0) { 
     console.log('p.position: ' + p.position().top); 
     $('#container').css('background-color', 'pink'); 
    } 
}); 

JSFIDDLE: http://jsfiddle.net/nrao89m3/

PS: От console.log не кажется чтобы вернуться к своему первоначальному значению вообще.

+0

возможный дубликат [получить позицию Scrollbar с JavaScript] (http://stackoverflow.com/questions/2481350/retrieve-scrollbar-position- с-javascript) –

+0

@PhilipRaath нет, не дубликат. если вы попробуете его (скопируйте мой код и выполните) и обратите внимание на «console.log», начальный номер элемента не будет соответствовать окончательному номеру элемента (даже после физического прокрутки его обратно в ту же позицию). –

ответ

2

Просто добавьте else блок:

var p = $('#one'); 
var position0 = p.position().top; 
$('#container').scroll(function() { 
    if (p.position().top != position0) { 
     console.log('p.position: ' + p.position().top); 
     $('#container').css('background-color', 'pink'); 
    } else { 
     $('#container').css('background-color', 'white'); 
    } 
}); 

http://jsfiddle.net/vyjbwne2/

+0

'console.log' не показывает начальное значение, потому что ваш код работает только при прокрутке пользователя (и в исходном положении! = Текущий). попробуйте: http://jsfiddle.net/1aaeod15/ и посмотрите на консольные журналы –

+1

имеет смысл ... Я должен был изучить это сам (смущенная смущенная усмешка!). Благодарю. –

Смежные вопросы